<?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>219256</bug_id>
          
          <creation_ts>2020-11-23 05:17:37 -0800</creation_ts>
          <short_desc>GraphicsContextGL should have robust multivalue setters</short_desc>
          <delta_ts>2020-11-29 23:59:23 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebGL</component>
          <version>WebKit Local Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=219340</see_also>
          <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>
          
          <blocked>217211</blocked>
    
    <blocked>219320</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Kimmo Kinnunen">kkinnunen</reporter>
          <assigned_to name="Kimmo Kinnunen">kkinnunen</assigned_to>
          <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>graouts</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>pnormand</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1709883</commentid>
    <comment_count>0</comment_count>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2020-11-23 05:17:37 -0800</bug_when>
    <thetext>GraphicsContextGL should have robust multivalue setters

Instead of passing `size, ptr`
we should pass `GCGLSpan(ptr, size)`
in all functions taking buffer parameters.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1709984</commentid>
    <comment_count>1</comment_count>
      <attachid>414831</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2020-11-24 05:16:29 -0800</bug_when>
    <thetext>Created attachment 414831
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1709986</commentid>
    <comment_count>2</comment_count>
      <attachid>414832</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2020-11-24 05:27:27 -0800</bug_when>
    <thetext>Created attachment 414832
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1709989</commentid>
    <comment_count>3</comment_count>
      <attachid>414833</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2020-11-24 05:40:06 -0800</bug_when>
    <thetext>Created attachment 414833
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1709991</commentid>
    <comment_count>4</comment_count>
      <attachid>414834</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2020-11-24 05:48:31 -0800</bug_when>
    <thetext>Created attachment 414834
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1709995</commentid>
    <comment_count>5</comment_count>
      <attachid>414837</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2020-11-24 06:50:24 -0800</bug_when>
    <thetext>Created attachment 414837
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1709997</commentid>
    <comment_count>6</comment_count>
      <attachid>414839</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2020-11-24 07:09:13 -0800</bug_when>
    <thetext>Created attachment 414839
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1710000</commentid>
    <comment_count>7</comment_count>
      <attachid>414840</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2020-11-24 07:17:36 -0800</bug_when>
    <thetext>Created attachment 414840
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1710045</commentid>
    <comment_count>8</comment_count>
      <attachid>414840</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2020-11-25 01:29:40 -0800</bug_when>
    <thetext>Comment on attachment 414840
Patch

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

Very nice.

&gt; Source/WebCore/html/canvas/WebGL2RenderingContext.cpp:1132
&gt; -    m_context-&gt;getExtensions().texImage2DRobustANGLE(target, level, internalformat, width, height, border, format, type, 0, reinterpret_cast&lt;void*&gt;(offset));
&gt; +    m_context-&gt;texImage2D(target, level, internalformat, width, height, border, format, type, offset);

Was this intentional? Does texImage2D call the robust ANGLE form itself?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1710157</commentid>
    <comment_count>9</comment_count>
      <attachid>414895</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2020-11-26 05:16:58 -0800</bug_when>
    <thetext>Created attachment 414895
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1710158</commentid>
    <comment_count>10</comment_count>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2020-11-26 05:21:49 -0800</bug_when>
    <thetext>(In reply to Dean Jackson from comment #8)
&gt; &gt; Source/WebCore/html/canvas/WebGL2RenderingContext.cpp:1132
&gt; &gt; -    m_context-&gt;getExtensions().texImage2DRobustANGLE(target, level, internalformat, width, height, border, format, type, 0, reinterpret_cast&lt;void*&gt;(offset));
&gt; &gt; +    m_context-&gt;texImage2D(target, level, internalformat, width, height, border, format, type, offset);
&gt; 
&gt; Was this intentional? Does texImage2D call the robust ANGLE form itself?

Yes. Sorry for not describing it in the ChangeLog and not carrying the change through its logical conclusion.

I uploaded a new patch, which sohuld clarify this in the ChangeLog and in the code. In the code, I moved all the texImage functions from the ExtensionsGL to GraphicsContextGL.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1710159</commentid>
    <comment_count>11</comment_count>
      <attachid>414896</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2020-11-26 05:26:00 -0800</bug_when>
    <thetext>Created attachment 414896
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1710160</commentid>
    <comment_count>12</comment_count>
      <attachid>414897</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2020-11-26 05:38:47 -0800</bug_when>
    <thetext>Created attachment 414897
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1710161</commentid>
    <comment_count>13</comment_count>
      <attachid>414898</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2020-11-26 05:43:53 -0800</bug_when>
    <thetext>Created attachment 414898
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1710162</commentid>
    <comment_count>14</comment_count>
      <attachid>414899</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2020-11-26 05:50:28 -0800</bug_when>
    <thetext>Created attachment 414899
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1710242</commentid>
    <comment_count>15</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-11-27 01:52:03 -0800</bug_when>
    <thetext>Committed r270185: &lt;https://trac.webkit.org/changeset/270185&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 414899.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1710243</commentid>
    <comment_count>16</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-11-27 01:53:16 -0800</bug_when>
    <thetext>&lt;rdar://problem/71761224&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1710265</commentid>
    <comment_count>17</comment_count>
      <attachid>414899</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2020-11-27 03:17:02 -0800</bug_when>
    <thetext>Comment on attachment 414899
Patch

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

&gt; Source/WebCore/platform/graphics/GraphicsTypesGL.h:72
&gt; +    GCGLSpan(const GCGLSpan&lt;U, Extent&gt;&amp; other, std::enable_if_t&lt;std::is_convertible_v&lt;U(*)[], T(*)[]&gt;, nullptr_t&gt; = nullptr)

Source/WebCore/platform/graphics/GraphicsTypesGL.h:72:104: error: unknown type name &apos;nullptr_t&apos;; did you mean &apos;std::nullptr_t&apos;?
    GCGLSpan(const GCGLSpan&lt;U, Extent&gt;&amp; other, std::enable_if_t&lt;std::is_convertible_v&lt;U(*)[], T(*)[]&gt;, nullptr_t&gt; = nullptr)
                                                                                                       ^~~~~~~~~
                                                                                                       std::nullptr_t
/usr/bin/../lib/gcc/x86_64-unknown-linux-gnu/10.2.0/../../../../include/c++/10.2.0/x86_64-unknown-linux-gnu/bits/c++config.h:264:29: note: &apos;std::nullptr_t&apos; declared here
  typedef decltype(nullptr) nullptr_t;
                            ^</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1710266</commentid>
    <comment_count>18</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2020-11-27 03:22:06 -0800</bug_when>
    <thetext>r270189</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1710534</commentid>
    <comment_count>19</comment_count>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2020-11-29 23:59:23 -0800</bug_when>
    <thetext>Thanks Philippe</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>414831</attachid>
            <date>2020-11-24 05:16:29 -0800</date>
            <delta_ts>2020-11-24 05:27:22 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219256-20201124151626.patch</filename>
            <type>text/plain</type>
            <size>174003</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwMTY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzIzYWI2YjRlNmM0NDFj
MDYzZWM1Mzg0YzZmOTA5NDdiZDFhNDY5ZC4uYmZhNDFlODE2MTVkMDI2NzBlNmY1YzIyMjY5NjRl
ZDMwNGYyODUyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyNiBAQAorMjAyMC0xMS0yMyAgS2lt
bW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIEdyYXBoaWNzQ29u
dGV4dEdMIHNob3VsZCBoYXZlIHJvYnVzdCBtdWx0aXZhbHVlIHNldHRlcnMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxOTI1NgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlcGxhY2UgYnVmU2l6ZSwgcG9p
bnRlciBwYWlycyBhbmQgcGxhaW4gcG9pbnRlcnMgaW4gR3JhcGhpY3NDb250ZXh0R0wKKyAgICAg
ICAgd2l0aCBHQ0dMU3Bhbi4gVGhpcyBtYWtlcyBpdCBlYXNpZXIgdG8gdW5kZXJzdGFuZCBob3cg
bWFueSB2YWx1ZXMgdGhlcmUKKyAgICAgICAgYXJlIHBvaW50ZWQgYnkgdGhlIHBvaW50ZXIuIFRo
aXMgaXMgbmVlZGVkIGZvciBzaW1wbGVyIGltcGxlbWVudGF0aW9uIG9mIEdQVQorICAgICAgICBw
cm9jZXNzIElQQywgd2hlcmUgdGhlIElQQyBsYXllciBkb2VzIG5vdCBuZWVkIHRvIGludGVycHJl
dCB0aGUgT3BlbkdMCisgICAgICAgIHByb3BlcnRpZXMuCisgICAgICAgIAorICAgICAgICBJbiBX
ZWJHTCBpbXBsZW1lbnRhdGlvbiwgY2hhbmdlcyB0aGUgdmFsaWRhdGlvbiBmdW5jdGlvbnMgdG8g
cmV0dXJuCisgICAgICAgIHRoZSBtZW1vcnkgcmVmZXJlbmNlIHRoYXQgd2lsbCBiZSB0b3VjaGVk
IGJ5IHRoZSB2YWxpZCBmdW5jdGlvbiBjYWxsLgorICAgICAgICBPbiB2YWxpZGF0aW9uIGZhaWx1
cmUsIG51bGxvcHQgd2lsbCBiZSByZXR1cm5lZC4KKyAgICAgICAgCisgICAgICAgIE5vIG5ldyB0
ZXN0cywgYSByZWZhY3Rvci4KKworICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmlu
Z0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6
aW52YWxpZGF0ZUZyYW1lYnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmlu
Z0NvbnRleHQ6OmludmFsaWRhdGVTdWJGcmFtZWJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtMXVpdik6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtMnVpdik6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtM3Vpdik6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtNHVpdik6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtTWF0cml4MngzZnYpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybU1hdHJpeDN4MmZ2KToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm1NYXRyaXgyeDRmdik6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtTWF0cml4
NHgyZnYpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9y
bU1hdHJpeDN4NGZ2KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6
OnVuaWZvcm1NYXRyaXg0eDNmdik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdD
b250ZXh0Ojp2ZXJ0ZXhBdHRyaWJJNGl2KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRl
cmluZ0NvbnRleHQ6OnZlcnRleEF0dHJpYkk0dWl2KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdM
MlJlbmRlcmluZ0NvbnRleHQ6OmRyYXdCdWZmZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdM
MlJlbmRlcmluZ0NvbnRleHQ6OmNsZWFyQnVmZmVyaXYpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
R0wyUmVuZGVyaW5nQ29udGV4dDo6Y2xlYXJCdWZmZXJ1aXYpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Y2xlYXJCdWZmZXJmdik6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp2YWxpZGF0ZUNsZWFyQnVmZmVyKToKKyAgICAgICAg
KFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm0xZnYpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTJmdik6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtM2Z2KToKKyAgICAgICAgKFdl
YkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm00ZnYpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTFpdik6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtMml2KToKKyAgICAgICAgKFdlYkNv
cmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm0zaXYpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTRpdik6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtTWF0cml4MmZ2KToKKyAgICAgICAgKFdl
YkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm1NYXRyaXgzZnYpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybU1hdHJpeDRmdik6Cisg
ICAgICAgICogaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5oOgorICAgICAgICAq
IGh0bWwvY2FudmFzL1dlYkdMRHJhd0J1ZmZlcnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
R0xEcmF3QnVmZmVyczo6ZHJhd0J1ZmZlcnNXRUJHTCk6CisgICAgICAgICogaHRtbC9jYW52YXMv
V2ViR0xGcmFtZWJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTEZyYW1lYnVmZmVy
OjpkcmF3QnVmZmVyc0lmTmVjZXNzYXJ5KToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2U6OmJ1ZmZlckRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6YnVmZmVyU3ViRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtMWZ2KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm0yZnYpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybTNmdik6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtNGZ2KToKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm0xaXYpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybTJpdik6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtM2l2KToKKyAgICAgICAgKFdl
YkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm00aXYpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybU1hdHJpeDJmdik6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtTWF0cml4
M2Z2KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZv
cm1NYXRyaXg0ZnYpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZTo6dmFsaWRhdGVVbmlmb3JtTWF0cml4UGFyYW1ldGVycyk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2ZXJ0ZXhBdHRyaWJmdkltcGwpOgorICAgICAgICAq
IGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaDoKKyAgICAgICAgKFdlYkNv
cmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0V4dGVuc2lvbnNHTC5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlc0dMLmg6CisgICAgICAgIChHQ0dMU3Bhbjo6R0NHTFNw
YW4pOgorICAgICAgICAoc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgpOgorICAgICAg
ICAobWFrZUdDR0xTcGFuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRl
bnNpb25zR0xBTkdMRS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6
ZHJhd0J1ZmZlcnNFWFQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVu
c2lvbnNHTEFOR0xFLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhp
Y3NDb250ZXh0R0xBTkdMRS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6YnVmZmVyRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6YnVmZmVyU3ViRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6dW5pZm9ybTFmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6dW5pZm9ybTJmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6dW5pZm9ybTNmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6dW5pZm9ybTRmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6dW5pZm9ybTFpdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6dW5pZm9ybTJpdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6dW5pZm9ybTNpdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6dW5pZm9ybTRpdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6dW5pZm9ybU1hdHJpeDJmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybU1hdHJpeDNmdik6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybU1hdHJpeDRmdik6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliMWZ2KToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2ZXJ0ZXhBdHRyaWIyZnYpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYjNmdik6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmli
NGZ2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjppbnZhbGlk
YXRlRnJhbWVidWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OmludmFsaWRhdGVTdWJGcmFtZWJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTF1aXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0ydWl2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtM3Vpdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTR1aXYpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXgyeDNmdik6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybU1hdHJpeDN4MmZ2KToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4Mng0ZnYp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRy
aXg0eDJmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5p
Zm9ybU1hdHJpeDN4NGZ2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjp1bmlmb3JtTWF0cml4NHgzZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYkk0aXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYkk0dWl2KToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpkcmF3QnVmZmVycyk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y2xlYXJCdWZmZXJpdik6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y2xlYXJCdWZmZXJ1aXYpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNsZWFyQnVmZmVyZnYpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2N2L0dyYXBoaWNzQ29udGV4dEdMQ1ZBTkdMRS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTENWQU5HTEU6OmluaXRpYWxpemVVVkNv
bnRleHRPYmplY3RzKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQ1ZBTkdM
RTo6Y29weVBpeGVsQnVmZmVyVG9UZXh0dXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaDoKKwogMjAyMC0xMS0yMiAgQW50dGkg
S29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CiAKICAgICAgICAgW0xGQ11bSW50ZWdyYXRpb25d
IENvbnZlcnQgc29tZSByZW1haW5pbmcgSW5saW5lQm94IGFjY2VzcyB0byB1c2UgaW5saW5lIGl0
ZXJhdG9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5k
ZXJpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRl
cmluZ0NvbnRleHQuY3BwCmluZGV4IDU1YmMxZjhkYjI0OWQzMzgyMmU3ODg5Y2E3ODNmNWJlYzAy
NWEyOTkuLmQzNjliOWZhYTNjNDgwZTNjNDg0NDA5ZWYwNDVhZmQ4NmI1Zjg1ZDUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQu
Y3BwCkBAIC04OTUsNyArODk1LDcgQEAgdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjppbnZh
bGlkYXRlRnJhbWVidWZmZXIoR0NHTGVudW0gdGFyZ2V0LCBjb25zdCBWZWN0b3IKICAgICBWZWN0
b3I8R0NHTGVudW0+IHRyYW5zbGF0ZWRBdHRhY2htZW50cyA9IGF0dGFjaG1lbnRzOwogICAgIGlm
ICghY2hlY2tBbmRUcmFuc2xhdGVBdHRhY2htZW50cygiaW52YWxpZGF0ZUZyYW1lYnVmZmVyIiwg
dGFyZ2V0LCB0cmFuc2xhdGVkQXR0YWNobWVudHMpKQogICAgICAgICByZXR1cm47Ci0gICAgbV9j
b250ZXh0LT5pbnZhbGlkYXRlRnJhbWVidWZmZXIodGFyZ2V0LCB0cmFuc2xhdGVkQXR0YWNobWVu
dHMuc2l6ZSgpLCB0cmFuc2xhdGVkQXR0YWNobWVudHMuZGF0YSgpKTsKKyAgICBtX2NvbnRleHQt
PmludmFsaWRhdGVGcmFtZWJ1ZmZlcih0YXJnZXQsIHRyYW5zbGF0ZWRBdHRhY2htZW50cyk7CiB9
CiAKIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6aW52YWxpZGF0ZVN1YkZyYW1lYnVmZmVy
KEdDR0xlbnVtIHRhcmdldCwgY29uc3QgVmVjdG9yPEdDR0xlbnVtPiYgYXR0YWNobWVudHMsIEdD
R0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpCkBA
IC05MDYsNyArOTA2LDcgQEAgdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjppbnZhbGlkYXRl
U3ViRnJhbWVidWZmZXIoR0NHTGVudW0gdGFyZ2V0LCBjb25zdCBWZWMKICAgICBWZWN0b3I8R0NH
TGVudW0+IHRyYW5zbGF0ZWRBdHRhY2htZW50cyA9IGF0dGFjaG1lbnRzOwogICAgIGlmICghY2hl
Y2tBbmRUcmFuc2xhdGVBdHRhY2htZW50cygiaW52YWxpZGF0ZVN1YkZyYW1lYnVmZmVyIiwgdGFy
Z2V0LCB0cmFuc2xhdGVkQXR0YWNobWVudHMpKQogICAgICAgICByZXR1cm47Ci0gICAgbV9jb250
ZXh0LT5pbnZhbGlkYXRlU3ViRnJhbWVidWZmZXIodGFyZ2V0LCB0cmFuc2xhdGVkQXR0YWNobWVu
dHMuc2l6ZSgpLCB0cmFuc2xhdGVkQXR0YWNobWVudHMuZGF0YSgpLCB4LCB5LCB3aWR0aCwgaGVp
Z2h0KTsKKyAgICBtX2NvbnRleHQtPmludmFsaWRhdGVTdWJGcmFtZWJ1ZmZlcih0YXJnZXQsIHRy
YW5zbGF0ZWRBdHRhY2htZW50cywgeCwgeSwgd2lkdGgsIGhlaWdodCk7CiB9CiAKIHZvaWQgV2Vi
R0wyUmVuZGVyaW5nQ29udGV4dDo6cmVhZEJ1ZmZlcihHQ0dMZW51bSBzcmMpCkBAIC0xMTI5LDcg
KzExMjksNyBAQCB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnRleEltYWdlMkQoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50CiAgICAgaWYgKCF2YWxpZGF0ZVRleEZ1
bmMoInRleEltYWdlMkQiLCBUZXhJbWFnZUZ1bmN0aW9uVHlwZTo6VGV4SW1hZ2UsIFNvdXJjZVVu
cGFja0J1ZmZlciwgdGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQs
IDEsIGJvcmRlciwgZm9ybWF0LCB0eXBlLCAwLCAwLCAwKSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkudGV4SW1hZ2UyRFJvYnVzdEFOR0xFKHRhcmdl
dCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIsIGZvcm1hdCwg
dHlwZSwgMCwgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ob2Zmc2V0KSk7CisgICAgbV9jb250ZXh0
LT50ZXhJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0
LCBib3JkZXIsIGZvcm1hdCwgdHlwZSwgb2Zmc2V0KTsKIH0KIAogRXhjZXB0aW9uT3I8dm9pZD4g
V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xp
bnQgbGV2ZWwsIEdDR0xpbnQgaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNp
emVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlw
ZSwgVGV4SW1hZ2VTb3VyY2UmJiBzb3VyY2UpCkBAIC0xMTczLDcgKzExNzMsNyBAQCB2b2lkIFdl
YkdMMlJlbmRlcmluZ0NvbnRleHQ6OnRleEltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50
IGxldmVsLCBHQ0dMaW50CiAgICAgaWYgKCF2YWxpZGF0ZVRleEZ1bmMoInRleEltYWdlM0QiLCBU
ZXhJbWFnZUZ1bmN0aW9uVHlwZTo6VGV4SW1hZ2UsIFNvdXJjZVVucGFja0J1ZmZlciwgdGFyZ2V0
LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBib3JkZXIsIGZv
cm1hdCwgdHlwZSwgMCwgMCwgMCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fY29udGV4dC0+
Z2V0RXh0ZW5zaW9ucygpLnRleEltYWdlM0RSb2J1c3RBTkdMRSh0YXJnZXQsIGxldmVsLCBpbnRl
cm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGJvcmRlciwgZm9ybWF0LCB0eXBlLCAw
LCByZWludGVycHJldF9jYXN0PHZvaWQqPihvZmZzZXQpKTsKKyAgICBtX2NvbnRleHQtPmdldEV4
dGVuc2lvbnMoKS50ZXhJbWFnZTNEUm9idXN0QU5HTEUodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxm
b3JtYXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBib3JkZXIsIGZvcm1hdCwgdHlwZSwgIHN0YXRp
Y19jYXN0PGludHB0cl90PihvZmZzZXQpKTsKIH0KIAogRXhjZXB0aW9uT3I8dm9pZD4gV2ViR0wy
UmVuZGVyaW5nQ29udGV4dDo6dGV4SW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2
ZWwsIEdDR0xpbnQgaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhl
aWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMaW50IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0LCBH
Q0dMZW51bSB0eXBlLCBUZXhJbWFnZVNvdXJjZSYmIHNvdXJjZSkKQEAgLTEyNTksNyArMTI1OSw3
IEBAIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0
YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpCiAgICAgaWYgKCF2YWxpZGF0ZVRleEZ1bmMoInRl
eFN1YkltYWdlMkQiLCBUZXhJbWFnZUZ1bmN0aW9uVHlwZTo6VGV4U3ViSW1hZ2UsIFNvdXJjZVVu
cGFja0J1ZmZlciwgdGFyZ2V0LCBsZXZlbCwgMCwgd2lkdGgsIGhlaWdodCwgMSwgMCwgZm9ybWF0
LCB0eXBlLCB4b2Zmc2V0LCB5b2Zmc2V0LCAwKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9j
b250ZXh0LT5nZXRFeHRlbnNpb25zKCkudGV4U3ViSW1hZ2UyRFJvYnVzdEFOR0xFKHRhcmdldCwg
bGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgMCwg
cmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ob2Zmc2V0KSk7CisgICAgbV9jb250ZXh0LT5nZXRFeHRl
bnNpb25zKCkudGV4U3ViSW1hZ2UyRFJvYnVzdEFOR0xFKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQs
IHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgb2Zmc2V0KTsKIH0KIAogRXhj
ZXB0aW9uT3I8dm9pZD4gV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dGV4U3ViSW1hZ2UyRChHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zm
c2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwg
R0NHTGVudW0gdHlwZSwgVGV4SW1hZ2VTb3VyY2UmJiBzb3VyY2UpCkBAIC0xMzAzLDcgKzEzMDMs
NyBAQCB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnRleFN1YkltYWdlM0QoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaQogICAgIGlmICghdmFsaWRhdGVUZXhGdW5jKCJ0
ZXhTdWJJbWFnZTNEIiwgVGV4SW1hZ2VGdW5jdGlvblR5cGU6OlRleFN1YkltYWdlLCBTb3VyY2VV
bnBhY2tCdWZmZXIsIHRhcmdldCwgbGV2ZWwsIDAsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCAwLCBm
b3JtYXQsIHR5cGUsIHhvZmZzZXQsIHlvZmZzZXQsIHpvZmZzZXQpKQogICAgICAgICByZXR1cm47
CiAKLSAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS50ZXhTdWJJbWFnZTNEUm9idXN0QU5H
TEUodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgem9mZnNldCwgd2lkdGgsIGhlaWdo
dCwgZGVwdGgsIGZvcm1hdCwgdHlwZSwgMCwgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ob2Zmc2V0
KSk7CisgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkudGV4U3ViSW1hZ2UzRFJvYnVzdEFO
R0xFKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHpvZmZzZXQsIHdpZHRoLCBoZWln
aHQsIGRlcHRoLCBmb3JtYXQsIHR5cGUsIHN0YXRpY19jYXN0PGludHB0cl90PihvZmZzZXQpKTsK
IH0KIAogdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp0ZXhTdWJJbWFnZTNEKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQs
IEdDR0xpbnQgem9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dM
c2l6ZWkgZGVwdGgsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgUmVmUHRyPEFycmF5
QnVmZmVyVmlldz4mJiBzcmNEYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQpCkBAIC0xMzcyLDcgKzEz
NzIsNyBAQCB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmNvbXByZXNzZWRUZXhJbWFnZTJE
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbAogICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5z
aW9ucygpLmNvbXByZXNzZWRUZXhJbWFnZTJEUm9idXN0QU5HTEUoCiAgICAgICAgIHRhcmdldCwg
bGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwKICAgICAgICAgaGVpZ2h0LCBib3JkZXIsIGlt
YWdlU2l6ZSwKLSAgICAgICAgMCwgcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4ob2Zmc2V0KSk7
CisgICAgICAgIHN0YXRpY19jYXN0PGludHB0cl90PihvZmZzZXQpKTsKIH0KIAogdm9pZCBXZWJH
TDJSZW5kZXJpbmdDb250ZXh0Ojpjb21wcmVzc2VkVGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQs
IEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgs
IEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBBcnJheUJ1ZmZlclZpZXcmIHNyY0Rh
dGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoT3ZlcnJpZGUpCkBAIC0x
MzkzLDcgKzEzOTMsNyBAQCB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmNvbXByZXNzZWRU
ZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbAogICAgIG1fY29udGV4dC0+
Z2V0RXh0ZW5zaW9ucygpLmNvbXByZXNzZWRUZXhJbWFnZTJEUm9idXN0QU5HTEUoCiAgICAgICAg
IHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LAogICAgICAgICBi
b3JkZXIsIHNsaWNlLT5ieXRlTGVuZ3RoKCksCi0gICAgICAgIHNsaWNlLT5ieXRlTGVuZ3RoKCks
IHNsaWNlLT5iYXNlQWRkcmVzcygpKTsKKyAgICAgICAgbWFrZUdDR0xTcGFuKHNsaWNlLT5iYXNl
QWRkcmVzcygpLCBzbGljZS0+Ynl0ZUxlbmd0aCgpKSk7CiB9CiAKIHZvaWQgV2ViR0wyUmVuZGVy
aW5nQ29udGV4dDo6Y29tcHJlc3NlZFRleEltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50
IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6
ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMc2l6ZWkgaW1h
Z2VTaXplLCBHQ0dMaW50NjQgb2Zmc2V0KQpAQCAtMTQxMSw3ICsxNDExLDcgQEAgdm9pZCBXZWJH
TDJSZW5kZXJpbmdDb250ZXh0Ojpjb21wcmVzc2VkVGV4SW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQs
IEdDR0xpbnQgbGV2ZWwKICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5jb21wcmVzc2Vk
VGV4SW1hZ2UzRFJvYnVzdEFOR0xFKAogICAgICAgICB0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZv
cm1hdCwgd2lkdGgsCiAgICAgICAgIGhlaWdodCwgZGVwdGgsIGJvcmRlciwgaW1hZ2VTaXplLAot
ICAgICAgICAwLCByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihvZmZzZXQpKTsKKyAgICAgICAg
c3RhdGljX2Nhc3Q8aW50cHRyX3Q+KG9mZnNldCkpOwogfQogCiB2b2lkIFdlYkdMMlJlbmRlcmlu
Z0NvbnRleHQ6OmNvbXByZXNzZWRUZXhJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBs
ZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVp
IGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMaW50IGJvcmRlciwgQXJyYXlCdWZmZXJWaWV3
JiBzcmNEYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aE92ZXJyaWRl
KQpAQCAtMTQzMiw3ICsxNDMyLDcgQEAgdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojpjb21w
cmVzc2VkVGV4SW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwKICAgICBtX2Nv
bnRleHQtPmdldEV4dGVuc2lvbnMoKS5jb21wcmVzc2VkVGV4SW1hZ2UzRFJvYnVzdEFOR0xFKAog
ICAgICAgICB0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwKICAg
ICAgICAgZGVwdGgsIGJvcmRlciwgc2xpY2UtPmJ5dGVMZW5ndGgoKSwKLSAgICAgICAgc2xpY2Ut
PmJ5dGVMZW5ndGgoKSwgc2xpY2UtPmJhc2VBZGRyZXNzKCkpOworICAgICAgICBtYWtlR0NHTFNw
YW4oc2xpY2UtPmJhc2VBZGRyZXNzKCksIHNsaWNlLT5ieXRlTGVuZ3RoKCkpKTsKIH0KIAogdm9p
ZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojpjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChHQ0dMZW51
bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0
LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgQXJy
YXlCdWZmZXJWaWV3JiBzcmNEYXRhKQpAQCAtMTQ2Myw3ICsxNDYzLDcgQEAgdm9pZCBXZWJHTDJS
ZW5kZXJpbmdDb250ZXh0Ojpjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQs
IEdDR0xpbnQgbGUKICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5jb21wcmVzc2VkVGV4
U3ViSW1hZ2UyRFJvYnVzdEFOR0xFKAogICAgICAgICB0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5
b2Zmc2V0LAogICAgICAgICB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIGltYWdlU2l6ZSwKLSAgICAg
ICAgMCwgcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4ob2Zmc2V0KSk7CisgICAgICAgIG9mZnNl
dCk7CiB9CiAKIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Y29tcHJlc3NlZFRleFN1Yklt
YWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdD
R0xpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51
bSBmb3JtYXQsIEFycmF5QnVmZmVyVmlldyYgc3JjRGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBH
Q0dMdWludCBzcmNMZW5ndGhPdmVycmlkZSkKQEAgLTE0ODQsNyArMTQ4NCw3IEBAIHZvaWQgV2Vi
R0wyUmVuZGVyaW5nQ29udGV4dDo6Y29tcHJlc3NlZFRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMaW50IGxlCiAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuY29tcHJlc3Nl
ZFRleFN1YkltYWdlMkRSb2J1c3RBTkdMRSgKICAgICAgICAgdGFyZ2V0LCBsZXZlbCwgeG9mZnNl
dCwgeW9mZnNldCwKICAgICAgICAgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCBzbGljZS0+Ynl0ZUxl
bmd0aCgpLAotICAgICAgICBzbGljZS0+Ynl0ZUxlbmd0aCgpLCBzbGljZS0+YmFzZUFkZHJlc3Mo
KSk7CisgICAgICAgIG1ha2VHQ0dMU3BhbihzbGljZS0+YmFzZUFkZHJlc3MoKSwgc2xpY2UtPmJ5
dGVMZW5ndGgoKSkpOwogfQogCiB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmNvbXByZXNz
ZWRUZXhTdWJJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4
b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xpbnQgem9mZnNldCwgR0NHTHNpemVpIHdpZHRo
LCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xlbnVtIGZvcm1hdCwgR0NH
THNpemVpIGltYWdlU2l6ZSwgR0NHTGludDY0IG9mZnNldCkKQEAgLTE1MDIsNyArMTUwMiw3IEBA
IHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Y29tcHJlc3NlZFRleFN1YkltYWdlM0QoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxlCiAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCku
Y29tcHJlc3NlZFRleFN1YkltYWdlM0RSb2J1c3RBTkdMRSgKICAgICAgICAgdGFyZ2V0LCBsZXZl
bCwgeG9mZnNldCwgeW9mZnNldCwgem9mZnNldCwKICAgICAgICAgd2lkdGgsIGhlaWdodCwgZGVw
dGgsIGZvcm1hdCwgaW1hZ2VTaXplLAotICAgICAgICAwLCByZWludGVycHJldF9jYXN0PHVpbnQ4
X3QqPihvZmZzZXQpKTsKKyAgICAgICAgc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KG9mZnNldCkpOwog
fQogCiB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmNvbXByZXNzZWRUZXhTdWJJbWFnZTNE
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50
IHlvZmZzZXQsIEdDR0xpbnQgem9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVp
Z2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xlbnVtIGZvcm1hdCwgQXJyYXlCdWZmZXJWaWV3JiBz
cmNEYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aE92ZXJyaWRlKQpA
QCAtMTUyMyw3ICsxNTIzLDcgQEAgdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojpjb21wcmVz
c2VkVGV4U3ViSW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGUKICAgICBtX2NvbnRl
eHQtPmdldEV4dGVuc2lvbnMoKS5jb21wcmVzc2VkVGV4U3ViSW1hZ2UzRFJvYnVzdEFOR0xFKAog
ICAgICAgICB0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB6b2Zmc2V0LAogICAgICAg
ICB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgZm9ybWF0LCBzbGljZS0+Ynl0ZUxlbmd0aCgpLAotICAg
ICAgICBzbGljZS0+Ynl0ZUxlbmd0aCgpLCBzbGljZS0+YmFzZUFkZHJlc3MoKSk7CisgICAgICAg
IG1ha2VHQ0dMU3BhbihzbGljZS0+YmFzZUFkZHJlc3MoKSwgc2xpY2UtPmJ5dGVMZW5ndGgoKSkp
OwogfQogCiBHQ0dMaW50IFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldEZyYWdEYXRhTG9jYXRp
b24oV2ViR0xQcm9ncmFtJiBwcm9ncmFtLCBjb25zdCBTdHJpbmcmIG5hbWUpCkBAIC0xNTYzLDcy
ICsxNTYzLDEwMiBAQCB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm00dWkoV2Vi
R0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBHQ0dMdWludAogCiB2b2lkIFdlYkdMMlJlbmRl
cmluZ0NvbnRleHQ6OnVuaWZvcm0xdWl2KFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwg
VWludDMyTGlzdCYmIHZhbHVlLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0
aCkKIHsKLSAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVVuaWZv
cm1QYXJhbWV0ZXJzKCJ1bmlmb3JtMXVpdiIsIGxvY2F0aW9uLCB2YWx1ZSwgMSwgc3JjT2Zmc2V0
LCBzcmNMZW5ndGgpKQorICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCisgICAgICAg
IHJldHVybjsKKyAgICBhdXRvIGRhdGEgPSB2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKCJ1bmlm
b3JtMXVpdiIsIGxvY2F0aW9uLCB2YWx1ZSwgMSwgc3JjT2Zmc2V0LCBzcmNMZW5ndGgpOworICAg
IGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuOwotICAgIG1fY29udGV4dC0+dW5pZm9ybTF1aXYo
bG9jYXRpb24tPmxvY2F0aW9uKCksIHZhbHVlLmRhdGEoKSwgc3JjT2Zmc2V0LCBzcmNMZW5ndGgg
PyBzcmNMZW5ndGggOiAodmFsdWUubGVuZ3RoKCkgLSBzcmNPZmZzZXQpKTsKKyAgICBtX2NvbnRl
eHQtPnVuaWZvcm0xdWl2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCBkYXRhLnZhbHVlKCkpOwogfQog
CiB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm0ydWl2KFdlYkdMVW5pZm9ybUxv
Y2F0aW9uKiBsb2NhdGlvbiwgVWludDMyTGlzdCYmIHZhbHVlLCBHQ0dMdWludCBzcmNPZmZzZXQs
IEdDR0x1aW50IHNyY0xlbmd0aCkKIHsKLSAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygp
IHx8ICF2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKCJ1bmlmb3JtMnVpdiIsIGxvY2F0aW9uLCB2
YWx1ZSwgMiwgc3JjT2Zmc2V0LCBzcmNMZW5ndGgpKQorICAgIGlmIChpc0NvbnRleHRMb3N0T3JQ
ZW5kaW5nKCkpCisgICAgICAgIHJldHVybjsKKyAgICBhdXRvIGRhdGEgPSB2YWxpZGF0ZVVuaWZv
cm1QYXJhbWV0ZXJzKCJ1bmlmb3JtMnVpdiIsIGxvY2F0aW9uLCB2YWx1ZSwgMiwgc3JjT2Zmc2V0
LCBzcmNMZW5ndGgpOworICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuOwotICAgIG1fY29u
dGV4dC0+dW5pZm9ybTJ1aXYobG9jYXRpb24tPmxvY2F0aW9uKCksIHZhbHVlLmRhdGEoKSwgc3Jj
T2Zmc2V0LCAoc3JjTGVuZ3RoID8gc3JjTGVuZ3RoIDogdmFsdWUubGVuZ3RoKCkgLSBzcmNPZmZz
ZXQpIC8gMik7CisgICAgbV9jb250ZXh0LT51bmlmb3JtMnVpdihsb2NhdGlvbi0+bG9jYXRpb24o
KSwgZGF0YS52YWx1ZSgpKTsKIH0KIAogdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlm
b3JtM3VpdihXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIFVpbnQzMkxpc3QmJiB2YWx1
ZSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCiB7Ci0gICAgaWYgKGlz
Q29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycygidW5p
Zm9ybTN1aXYiLCBsb2NhdGlvbiwgdmFsdWUsIDMsIHNyY09mZnNldCwgc3JjTGVuZ3RoKSkKKyAg
ICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpKQorICAgICAgICByZXR1cm47CisgICAgYXV0
byBkYXRhID0gdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycygidW5pZm9ybTN1aXYiLCBsb2NhdGlv
biwgdmFsdWUsIDMsIHNyY09mZnNldCwgc3JjTGVuZ3RoKTsKKyAgICBpZiAoIWRhdGEpCiAgICAg
ICAgIHJldHVybjsKLSAgICBtX2NvbnRleHQtPnVuaWZvcm0zdWl2KGxvY2F0aW9uLT5sb2NhdGlv
bigpLCB2YWx1ZS5kYXRhKCksIHNyY09mZnNldCwgKHNyY0xlbmd0aCA/IHNyY0xlbmd0aCA6IHZh
bHVlLmxlbmd0aCgpIC0gc3JjT2Zmc2V0KSAvIDMpOworICAgIG1fY29udGV4dC0+dW5pZm9ybTN1
aXYobG9jYXRpb24tPmxvY2F0aW9uKCksIGRhdGEudmFsdWUoKSk7CiB9CiAKIHZvaWQgV2ViR0wy
UmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTR1aXYoV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0
aW9uLCBVaW50MzJMaXN0JiYgdmFsdWUsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3Jj
TGVuZ3RoKQogewotICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRl
VW5pZm9ybVBhcmFtZXRlcnMoInVuaWZvcm00dWl2IiwgbG9jYXRpb24sIHZhbHVlLCA0LCBzcmNP
ZmZzZXQsIHNyY0xlbmd0aCkpCisgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSkKKyAg
ICAgICAgcmV0dXJuOworICAgIGF1dG8gZGF0YSA9IHZhbGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMo
InVuaWZvcm00dWl2IiwgbG9jYXRpb24sIHZhbHVlLCA0LCBzcmNPZmZzZXQsIHNyY0xlbmd0aCk7
CisgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm47Ci0gICAgbV9jb250ZXh0LT51bmlmb3Jt
NHVpdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgdmFsdWUuZGF0YSgpLCBzcmNPZmZzZXQsIChzcmNM
ZW5ndGggPyBzcmNMZW5ndGggOiB2YWx1ZS5sZW5ndGgoKSAtIHNyY09mZnNldCkgLyA0KTsKKyAg
ICBtX2NvbnRleHQtPnVuaWZvcm00dWl2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCBkYXRhLnZhbHVl
KCkpOwogfQogCiB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm1NYXRyaXgyeDNm
dihXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwg
RmxvYXQzMkxpc3QmJiB2LCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkK
IHsKLSAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVVuaWZvcm1N
YXRyaXhQYXJhbWV0ZXJzKCJ1bmlmb3JtTWF0cml4MngzZnYiLCBsb2NhdGlvbiwgdHJhbnNwb3Nl
LCB2LCA2LCBzcmNPZmZzZXQsIHNyY0xlbmd0aCkpCisgICAgaWYgKGlzQ29udGV4dExvc3RPclBl
bmRpbmcoKSkKKyAgICAgICAgcmV0dXJuOworICAgIGF1dG8gZGF0YSA9IHZhbGlkYXRlVW5pZm9y
bU1hdHJpeFBhcmFtZXRlcnMoInVuaWZvcm1NYXRyaXgyeDNmdiIsIGxvY2F0aW9uLCB0cmFuc3Bv
c2UsIHYsIDYsIHNyY09mZnNldCwgc3JjTGVuZ3RoKTsKKyAgICBpZiAoIWRhdGEpCiAgICAgICAg
IHJldHVybjsKLSAgICBtX2NvbnRleHQtPnVuaWZvcm1NYXRyaXgyeDNmdihsb2NhdGlvbi0+bG9j
YXRpb24oKSwgdHJhbnNwb3NlLCB2LmRhdGEoKSwgc3JjT2Zmc2V0LCAoc3JjTGVuZ3RoID8gc3Jj
TGVuZ3RoIDogdi5sZW5ndGgoKSAtIHNyY09mZnNldCkgLyA2KTsKKyAgICBtX2NvbnRleHQtPnVu
aWZvcm1NYXRyaXgyeDNmdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgdHJhbnNwb3NlLCBkYXRhLnZh
bHVlKCkpOwogfQogCiB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm1NYXRyaXgz
eDJmdihXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9z
ZSwgRmxvYXQzMkxpc3QmJiB2LCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0
aCkKIHsKLSAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVVuaWZv
cm1NYXRyaXhQYXJhbWV0ZXJzKCJ1bmlmb3JtTWF0cml4M3gyZnYiLCBsb2NhdGlvbiwgdHJhbnNw
b3NlLCB2LCA2LCBzcmNPZmZzZXQsIHNyY0xlbmd0aCkpCisgICAgaWYgKGlzQ29udGV4dExvc3RP
clBlbmRpbmcoKSkKKyAgICAgICAgcmV0dXJuOworICAgIGF1dG8gZGF0YSA9IHZhbGlkYXRlVW5p
Zm9ybU1hdHJpeFBhcmFtZXRlcnMoInVuaWZvcm1NYXRyaXgzeDJmdiIsIGxvY2F0aW9uLCB0cmFu
c3Bvc2UsIHYsIDYsIHNyY09mZnNldCwgc3JjTGVuZ3RoKTsKKyAgICBpZiAoIWRhdGEpCiAgICAg
ICAgIHJldHVybjsKLSAgICBtX2NvbnRleHQtPnVuaWZvcm1NYXRyaXgzeDJmdihsb2NhdGlvbi0+
bG9jYXRpb24oKSwgdHJhbnNwb3NlLCB2LmRhdGEoKSwgc3JjT2Zmc2V0LCAoc3JjTGVuZ3RoID8g
c3JjTGVuZ3RoIDogdi5sZW5ndGgoKSAtIHNyY09mZnNldCkgLyA2KTsKKyAgICBtX2NvbnRleHQt
PnVuaWZvcm1NYXRyaXgzeDJmdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgdHJhbnNwb3NlLCBkYXRh
LnZhbHVlKCkpOwogfQogCiB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm1NYXRy
aXgyeDRmdihXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5z
cG9zZSwgRmxvYXQzMkxpc3QmJiB2LCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xl
bmd0aCkKIHsKLSAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVVu
aWZvcm1NYXRyaXhQYXJhbWV0ZXJzKCJ1bmlmb3JtTWF0cml4Mng0ZnYiLCBsb2NhdGlvbiwgdHJh
bnNwb3NlLCB2LCA4LCBzcmNPZmZzZXQsIHNyY0xlbmd0aCkpCisgICAgaWYgKGlzQ29udGV4dExv
c3RPclBlbmRpbmcoKSkKKyAgICAgICAgcmV0dXJuOworICAgIGF1dG8gZGF0YSA9IHZhbGlkYXRl
VW5pZm9ybU1hdHJpeFBhcmFtZXRlcnMoInVuaWZvcm1NYXRyaXgyeDRmdiIsIGxvY2F0aW9uLCB0
cmFuc3Bvc2UsIHYsIDgsIHNyY09mZnNldCwgc3JjTGVuZ3RoKTsKKyAgICBpZiAoIWRhdGEpCiAg
ICAgICAgIHJldHVybjsKLSAgICBtX2NvbnRleHQtPnVuaWZvcm1NYXRyaXgyeDRmdihsb2NhdGlv
bi0+bG9jYXRpb24oKSwgdHJhbnNwb3NlLCB2LmRhdGEoKSwgc3JjT2Zmc2V0LCAoc3JjTGVuZ3Ro
ID8gc3JjTGVuZ3RoIDogdi5sZW5ndGgoKSAtIHNyY09mZnNldCkgLyA4KTsKKyAgICBtX2NvbnRl
eHQtPnVuaWZvcm1NYXRyaXgyeDRmdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgdHJhbnNwb3NlLCBk
YXRhLnZhbHVlKCkpOwogfQogCiB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm1N
YXRyaXg0eDJmdihXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEdDR0xib29sZWFuIHRy
YW5zcG9zZSwgRmxvYXQzMkxpc3QmJiB2LCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNy
Y0xlbmd0aCkKIHsKLSAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0
ZVVuaWZvcm1NYXRyaXhQYXJhbWV0ZXJzKCJ1bmlmb3JtTWF0cml4NHgyZnYiLCBsb2NhdGlvbiwg
dHJhbnNwb3NlLCB2LCA4LCBzcmNPZmZzZXQsIHNyY0xlbmd0aCkpCisgICAgaWYgKGlzQ29udGV4
dExvc3RPclBlbmRpbmcoKSkKICAgICAgICAgcmV0dXJuOwotICAgIG1fY29udGV4dC0+dW5pZm9y
bU1hdHJpeDR4MmZ2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCB0cmFuc3Bvc2UsIHYuZGF0YSgpLCBz
cmNPZmZzZXQsIChzcmNMZW5ndGggPyBzcmNMZW5ndGggOiB2Lmxlbmd0aCgpIC0gc3JjT2Zmc2V0
KSAvIDgpOworICAgIGF1dG8gZGF0YSA9IHZhbGlkYXRlVW5pZm9ybU1hdHJpeFBhcmFtZXRlcnMo
InVuaWZvcm1NYXRyaXg0eDJmdiIsIGxvY2F0aW9uLCB0cmFuc3Bvc2UsIHYsIDgsIHNyY09mZnNl
dCwgc3JjTGVuZ3RoKTsKKyAgICBpZiAoIWRhdGEpCisgICAgICAgIHJldHVybjsKKyAgICBtX2Nv
bnRleHQtPnVuaWZvcm1NYXRyaXg0eDJmdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgdHJhbnNwb3Nl
LCBkYXRhLnZhbHVlKCkpOwogfQogCiB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZv
cm1NYXRyaXgzeDRmdihXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEdDR0xib29sZWFu
IHRyYW5zcG9zZSwgRmxvYXQzMkxpc3QmJiB2LCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50
IHNyY0xlbmd0aCkKIHsKLSAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxp
ZGF0ZVVuaWZvcm1NYXRyaXhQYXJhbWV0ZXJzKCJ1bmlmb3JtTWF0cml4M3g0ZnYiLCBsb2NhdGlv
biwgdHJhbnNwb3NlLCB2LCAxMiwgc3JjT2Zmc2V0LCBzcmNMZW5ndGgpKQorICAgIGlmIChpc0Nv
bnRleHRMb3N0T3JQZW5kaW5nKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBtX2NvbnRleHQtPnVu
aWZvcm1NYXRyaXgzeDRmdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgdHJhbnNwb3NlLCB2LmRhdGEo
KSwgc3JjT2Zmc2V0LCAoc3JjTGVuZ3RoID8gc3JjTGVuZ3RoIDogdi5sZW5ndGgoKSAtIHNyY09m
ZnNldCkgLyAxMik7CisgICAgYXV0byBkYXRhID0gdmFsaWRhdGVVbmlmb3JtTWF0cml4UGFyYW1l
dGVycygidW5pZm9ybU1hdHJpeDN4NGZ2IiwgbG9jYXRpb24sIHRyYW5zcG9zZSwgdiwgMTIsIHNy
Y09mZnNldCwgc3JjTGVuZ3RoKTsKKyAgICBpZiAoIWRhdGEpCisgICAgICAgIHJldHVybjsKKyAg
ICBtX2NvbnRleHQtPnVuaWZvcm1NYXRyaXgzeDRmdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgdHJh
bnNwb3NlLCBkYXRhLnZhbHVlKCkpOwogfQogCiB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6
OnVuaWZvcm1NYXRyaXg0eDNmdihXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEdDR0xi
b29sZWFuIHRyYW5zcG9zZSwgRmxvYXQzMkxpc3QmJiB2LCBHQ0dMdWludCBzcmNPZmZzZXQsIEdD
R0x1aW50IHNyY0xlbmd0aCkKIHsKLSAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8
ICF2YWxpZGF0ZVVuaWZvcm1NYXRyaXhQYXJhbWV0ZXJzKCJ1bmlmb3JtTWF0cml4NHgzZnYiLCBs
b2NhdGlvbiwgdHJhbnNwb3NlLCB2LCAxMiwgc3JjT2Zmc2V0LCBzcmNMZW5ndGgpKQorICAgIGlm
IChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBtX2NvbnRl
eHQtPnVuaWZvcm1NYXRyaXg0eDNmdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgdHJhbnNwb3NlLCB2
LmRhdGEoKSwgc3JjT2Zmc2V0LCAoc3JjTGVuZ3RoID8gc3JjTGVuZ3RoIDogdi5sZW5ndGgoKSAt
IHNyY09mZnNldCkgLyAxMik7CisgICAgYXV0byBkYXRhID0gdmFsaWRhdGVVbmlmb3JtTWF0cml4
UGFyYW1ldGVycygidW5pZm9ybU1hdHJpeDR4M2Z2IiwgbG9jYXRpb24sIHRyYW5zcG9zZSwgdiwg
MTIsIHNyY09mZnNldCwgc3JjTGVuZ3RoKTsKKyAgICBpZiAoIWRhdGEpCisgICAgICAgIHJldHVy
bjsKKyAgICBtX2NvbnRleHQtPnVuaWZvcm1NYXRyaXg0eDNmdihsb2NhdGlvbi0+bG9jYXRpb24o
KSwgdHJhbnNwb3NlLCBkYXRhLnZhbHVlKCkpOwogfQogCiB2b2lkIFdlYkdMMlJlbmRlcmluZ0Nv
bnRleHQ6OnZlcnRleEF0dHJpYkk0aShHQ0dMdWludCBpbmRleCwgR0NHTGludCB4LCBHQ0dMaW50
IHksIEdDR0xpbnQgeiwgR0NHTGludCB3KQpAQCAtMTY2NCw3ICsxNjk0LDcgQEAgdm9pZCBXZWJH
TDJSZW5kZXJpbmdDb250ZXh0Ojp2ZXJ0ZXhBdHRyaWJJNGl2KEdDR0x1aW50IGluZGV4LCBJbnQz
Mkxpc3QmJiBsaXN0KQogICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRH
TDo6SU5WQUxJRF9WQUxVRSwgInZlcnRleEF0dHJpYkk0aXYiLCAiaW5kZXggb3V0IG9mIHJhbmdl
Iik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgbV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWJJ
NGl2KGluZGV4LCBkYXRhKTsKKyAgICBtX2NvbnRleHQtPnZlcnRleEF0dHJpYkk0aXYoaW5kZXgs
IG1ha2VHQ0dMU3Bhbjw0PihkYXRhKSk7CiAgICAgbV92ZXJ0ZXhBdHRyaWJWYWx1ZVtpbmRleF0u
dHlwZSA9IEdyYXBoaWNzQ29udGV4dEdMOjpJTlQ7CiAgICAgbWVtY3B5KG1fdmVydGV4QXR0cmli
VmFsdWVbaW5kZXhdLmlWYWx1ZSwgZGF0YSwgc2l6ZW9mKG1fdmVydGV4QXR0cmliVmFsdWVbaW5k
ZXhdLmlWYWx1ZSkpOwogfQpAQCAtMTcwMiw3ICsxNzMyLDcgQEAgdm9pZCBXZWJHTDJSZW5kZXJp
bmdDb250ZXh0Ojp2ZXJ0ZXhBdHRyaWJJNHVpdihHQ0dMdWludCBpbmRleCwgVWludDMyTGlzdCYm
IGxpc3QKICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFM
SURfVkFMVUUsICJ2ZXJ0ZXhBdHRyaWJJNHVpdiIsICJpbmRleCBvdXQgb2YgcmFuZ2UiKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBtX2NvbnRleHQtPnZlcnRleEF0dHJpYkk0dWl2KGlu
ZGV4LCBkYXRhKTsKKyAgICBtX2NvbnRleHQtPnZlcnRleEF0dHJpYkk0dWl2KGluZGV4LCBtYWtl
R0NHTFNwYW48ND4oZGF0YSkpOwogICAgIG1fdmVydGV4QXR0cmliVmFsdWVbaW5kZXhdLnR5cGUg
PSBHcmFwaGljc0NvbnRleHRHTDo6VU5TSUdORURfSU5UOwogICAgIG1lbWNweShtX3ZlcnRleEF0
dHJpYlZhbHVlW2luZGV4XS51aVZhbHVlLCBkYXRhLCBzaXplb2YobV92ZXJ0ZXhBdHRyaWJWYWx1
ZVtpbmRleF0udWlWYWx1ZSkpOwogfQpAQCAtMTc2Myw4ICsxNzkzLDggQEAgdm9pZCBXZWJHTDJS
ZW5kZXJpbmdDb250ZXh0OjpkcmF3QnVmZmVycyhjb25zdCBWZWN0b3I8R0NHTGVudW0+JiBidWZm
ZXJzKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIC8vIEJlY2F1c2Ug
dGhlIGJhY2tidWZmZXIgaXMgc2ltdWxhdGVkIG9uIGFsbCBjdXJyZW50IFdlYktpdCBwb3J0cywg
d2UgbmVlZCB0byBjaGFuZ2UgQkFDSyB0byBDT0xPUl9BVFRBQ0hNRU5UMC4KLSAgICAgICAgR0NH
TGVudW0gdmFsdWUgPSAoYnVmc1swXSA9PSBHcmFwaGljc0NvbnRleHRHTDo6QkFDSykgPyBHcmFw
aGljc0NvbnRleHRHTDo6Q09MT1JfQVRUQUNITUVOVDAgOiBHcmFwaGljc0NvbnRleHRHTDo6Tk9O
RTsKLSAgICAgICAgbV9jb250ZXh0LT5kcmF3QnVmZmVycygxLCAmdmFsdWUpOworICAgICAgICBH
Q0dMZW51bSB2YWx1ZVsxXSB7IChidWZzWzBdID09IEdyYXBoaWNzQ29udGV4dEdMOjpCQUNLKSA/
IEdyYXBoaWNzQ29udGV4dEdMOjpDT0xPUl9BVFRBQ0hNRU5UMCA6IEdyYXBoaWNzQ29udGV4dEdM
OjpOT05FIH07CisgICAgICAgIG1fY29udGV4dC0+ZHJhd0J1ZmZlcnModmFsdWUpOwogICAgICAg
ICBzZXRCYWNrRHJhd0J1ZmZlcihidWZzWzBdKTsKICAgICB9IGVsc2UgewogICAgICAgICBpZiAo
biA+IGdldE1heERyYXdCdWZmZXJzKCkpIHsKQEAgLTE3ODMsMjggKzE4MTMsMzYgQEAgdm9pZCBX
ZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpkcmF3QnVmZmVycyhjb25zdCBWZWN0b3I8R0NHTGVudW0+
JiBidWZmZXJzKQogCiB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmNsZWFyQnVmZmVyaXYo
R0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50IGRyYXdidWZmZXIsIEludDMyTGlzdCYmIHZhbHVlcywg
R0NHTHVpbnQgc3JjT2Zmc2V0KQogewotICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkg
fHwgIXZhbGlkYXRlQ2xlYXJCdWZmZXIoImNsZWFyQnVmZmVyaXYiLCBidWZmZXIsIHZhbHVlcy5s
ZW5ndGgoKSwgc3JjT2Zmc2V0KSkKKyAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpKQor
ICAgICAgICByZXR1cm47CisgICAgYXV0byBkYXRhID0gdmFsaWRhdGVDbGVhckJ1ZmZlcigiY2xl
YXJCdWZmZXJpdiIsIGJ1ZmZlciwgdmFsdWVzLCBzcmNPZmZzZXQpOworICAgIGlmICghZGF0YSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9jb250ZXh0LT5jbGVhckJ1ZmZlcml2KGJ1ZmZlciwg
ZHJhd2J1ZmZlciwgdmFsdWVzLmRhdGEoKSwgc3JjT2Zmc2V0KTsKKyAgICBtX2NvbnRleHQtPmNs
ZWFyQnVmZmVyaXYoYnVmZmVyLCBkcmF3YnVmZmVyLCBkYXRhLnZhbHVlKCkpOwogICAgIHVwZGF0
ZUJ1ZmZlcnNUb0F1dG9DbGVhcihDbGVhckJ1ZmZlckNhbGxlcjo6Q2xlYXJCdWZmZXJpdiwgYnVm
ZmVyLCBkcmF3YnVmZmVyKTsKIH0KIAogdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpjbGVh
ckJ1ZmZlcnVpdihHQ0dMZW51bSBidWZmZXIsIEdDR0xpbnQgZHJhd2J1ZmZlciwgVWludDMyTGlz
dCYmIHZhbHVlcywgR0NHTHVpbnQgc3JjT2Zmc2V0KQogewotICAgIGlmIChpc0NvbnRleHRMb3N0
T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlQ2xlYXJCdWZmZXIoImNsZWFyQnVmZmVydWl2IiwgYnVm
ZmVyLCB2YWx1ZXMubGVuZ3RoKCksIHNyY09mZnNldCkpCisgICAgaWYgKGlzQ29udGV4dExvc3RP
clBlbmRpbmcoKSkKICAgICAgICAgcmV0dXJuOwotCi0gICAgbV9jb250ZXh0LT5jbGVhckJ1ZmZl
cnVpdihidWZmZXIsIGRyYXdidWZmZXIsIHZhbHVlcy5kYXRhKCksIHNyY09mZnNldCk7CisgICAg
YXV0byBkYXRhID0gdmFsaWRhdGVDbGVhckJ1ZmZlcigiY2xlYXJCdWZmZXJ1aXYiLCBidWZmZXIs
IHZhbHVlcywgc3JjT2Zmc2V0KTsKKyAgICBpZiAoIWRhdGEpCisgICAgICAgIHJldHVybjsKKyAg
ICBtX2NvbnRleHQtPmNsZWFyQnVmZmVydWl2KGJ1ZmZlciwgZHJhd2J1ZmZlciwgZGF0YS52YWx1
ZSgpKTsKICAgICB1cGRhdGVCdWZmZXJzVG9BdXRvQ2xlYXIoQ2xlYXJCdWZmZXJDYWxsZXI6OkNs
ZWFyQnVmZmVydWl2LCBidWZmZXIsIGRyYXdidWZmZXIpOwogfQogCiB2b2lkIFdlYkdMMlJlbmRl
cmluZ0NvbnRleHQ6OmNsZWFyQnVmZmVyZnYoR0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50IGRyYXdi
dWZmZXIsIEZsb2F0MzJMaXN0JiYgdmFsdWVzLCBHQ0dMdWludCBzcmNPZmZzZXQpCiB7Ci0gICAg
aWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVDbGVhckJ1ZmZlcigiY2xl
YXJCdWZmZXJmdiIsIGJ1ZmZlciwgdmFsdWVzLmxlbmd0aCgpLCBzcmNPZmZzZXQpKQorICAgIGlm
IChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCisgICAgICAgIHJldHVybjsKKyAgICBhdXRvIGRh
dGEgPSB2YWxpZGF0ZUNsZWFyQnVmZmVyKCJjbGVhckJ1ZmZlcmZ2IiwgYnVmZmVyLCB2YWx1ZXMs
IHNyY09mZnNldCk7CisgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2Nv
bnRleHQtPmNsZWFyQnVmZmVyZnYoYnVmZmVyLCBkcmF3YnVmZmVyLCB2YWx1ZXMuZGF0YSgpLCBz
cmNPZmZzZXQpOworICAgIG1fY29udGV4dC0+Y2xlYXJCdWZmZXJmdihidWZmZXIsIGRyYXdidWZm
ZXIsIGRhdGEudmFsdWUoKSk7CiAgICAgLy8gY2xlYXJCdWZmZXJpdiBhbmQgY2xlYXJCdWZmZXJ1
aXYgd2lsbCBjdXJyZW50bHkgZ2VuZXJhdGUgYW4gZXJyb3IKICAgICAvLyBpZiB0aGV5J3JlIGNh
bGxlZCBhZ2FpbnN0IHRoZSBkZWZhdWx0IGJhY2sgYnVmZmVyLiBJZiBzdXBwb3J0IGZvcgogICAg
IC8vIGV4dGVuZGVkIGNhbnZhcyBjb2xvciBzcGFjZXMgaXMgYWRkZWQsIHRoaXMgY2FsbCBtaWdo
dCBuZWVkIHRvIGJlCkBAIC0zMzcyLDExMCArMzQxMCwxNDQgQEAgYm9vbCBXZWJHTDJSZW5kZXJp
bmdDb250ZXh0Ojp2YWxpZGF0ZUNhcGFiaWxpdHkoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBH
Q0dMZW4KICAgICB9CiB9CiAKLWJvb2wgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dmFsaWRhdGVD
bGVhckJ1ZmZlcihjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIEdDR0xlbnVtIGJ1ZmZlciwgc2l6
ZV90IHNpemUsIEdDR0x1aW50IHNyY09mZnNldCkKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVu
YW1lIFR5cGVkQXJyYXlUeXBlPgorT3B0aW9uYWw8R0NHTFNwYW48Y29uc3QgVD4+IFdlYkdMMlJl
bmRlcmluZ0NvbnRleHQ6OnZhbGlkYXRlQ2xlYXJCdWZmZXIoY29uc3QgY2hhciogZnVuY3Rpb25O
YW1lLCBHQ0dMZW51bSBidWZmZXIsIFR5cGVkTGlzdDxUeXBlZEFycmF5VHlwZSwgVD4mIHZhbHVl
cywgR0NHTHVpbnQgc3JjT2Zmc2V0KQogewotICAgIENoZWNrZWQ8R0NHTHNpemVpLCBSZWNvcmRP
dmVyZmxvdz4gY2hlY2tlZFNpemUoc2l6ZSk7CisgICAgQ2hlY2tlZDxHQ0dMc2l6ZWksIFJlY29y
ZE92ZXJmbG93PiBjaGVja2VkU2l6ZSh2YWx1ZXMubGVuZ3RoKCkpOwogICAgIGNoZWNrZWRTaXpl
IC09IHNyY09mZnNldDsKICAgICBpZiAoY2hlY2tlZFNpemUuaGFzT3ZlcmZsb3dlZCgpKSB7CiAg
ICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX1ZBTFVF
LCBmdW5jdGlvbk5hbWUsICJpbnZhbGlkIGFycmF5IHNpemUgLyBzcmNPZmZzZXQiKTsKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4geyB9OwogICAgIH0KICAgICBzd2l0Y2gg
KGJ1ZmZlcikgewogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTE9SOgogICAgICAgICBp
ZiAoY2hlY2tlZFNpemUudW5zYWZlR2V0KCkgPCA0KSB7CiAgICAgICAgICAgICBzeW50aGVzaXpl
R0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9WQUxVRSwgZnVuY3Rpb25OYW1lLCAi
aW52YWxpZCBhcnJheSBzaXplIC8gc3JjT2Zmc2V0Iik7Ci0gICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgICAgICByZXR1cm4geyB9OwogICAgICAgICB9Ci0gICAgICAgIGJyZWFrOwor
ICAgICAgICByZXR1cm4gbWFrZUdDR0xTcGFuKHZhbHVlcy5kYXRhKCkgKyBzcmNPZmZzZXQsIDQp
OwogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkRFUFRIOgogICAgIGNhc2UgR3JhcGhpY3ND
b250ZXh0R0w6OlNURU5DSUw6CiAgICAgICAgIGlmIChjaGVja2VkU2l6ZS51bnNhZmVHZXQoKSA8
IDEpIHsKICAgICAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJ
TlZBTElEX1ZBTFVFLCBmdW5jdGlvbk5hbWUsICJpbnZhbGlkIGFycmF5IHNpemUgLyBzcmNPZmZz
ZXQiKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIHJldHVybiB7IH07
CiAgICAgICAgIH0KLSAgICAgICAgYnJlYWs7CisgICAgICAgIHJldHVybiBtYWtlR0NHTFNwYW4o
dmFsdWVzLmRhdGEoKSArIHNyY09mZnNldCwgMSk7CisKICAgICBkZWZhdWx0OgogICAgICAgICBz
eW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9FTlVNLCBmdW5jdGlv
bk5hbWUsICJpbnZhbGlkIGJ1ZmZlciIpOwotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
IHJldHVybiB7IH07CiAgICAgfQotICAgIHJldHVybiB0cnVlOwogfQogCiB2b2lkIFdlYkdMMlJl
bmRlcmluZ0NvbnRleHQ6OnVuaWZvcm0xZnYoV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9u
LCBGbG9hdDMyTGlzdCBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0
aCkKIHsKLSAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVVuaWZv
cm1QYXJhbWV0ZXJzKCJ1bmlmb3JtMWZ2IiwgbG9jYXRpb24sIGRhdGEsIDEsIHNyY09mZnNldCwg
c3JjTGVuZ3RoKSkKKyAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpKQogICAgICAgICBy
ZXR1cm47Ci0gICAgbV9jb250ZXh0LT51bmlmb3JtMWZ2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCBk
YXRhLmRhdGEoKSwgc3JjT2Zmc2V0LCBzcmNMZW5ndGggPyBzcmNMZW5ndGggOiAoZGF0YS5sZW5n
dGgoKSAtIHNyY09mZnNldCkpOworICAgIGF1dG8gcmVzdWx0ID0gdmFsaWRhdGVVbmlmb3JtUGFy
YW1ldGVycygidW5pZm9ybTFmdiIsIGxvY2F0aW9uLCBkYXRhLCAxLCBzcmNPZmZzZXQsIHNyY0xl
bmd0aCk7CisgICAgaWYgKCFyZXN1bHQpCisgICAgICAgIHJldHVybjsKKyAgICBtX2NvbnRleHQt
PnVuaWZvcm0xZnYobG9jYXRpb24tPmxvY2F0aW9uKCksIHJlc3VsdC52YWx1ZSgpKTsKIH0KIAog
dm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtMmZ2KFdlYkdMVW5pZm9ybUxvY2F0
aW9uKiBsb2NhdGlvbiwgRmxvYXQzMkxpc3QgZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dM
dWludCBzcmNMZW5ndGgpCiB7Ci0gICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAh
dmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycygidW5pZm9ybTJmdiIsIGxvY2F0aW9uLCBkYXRhLCAy
LCBzcmNPZmZzZXQsIHNyY0xlbmd0aCkpCisgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmco
KSkKICAgICAgICAgcmV0dXJuOwotICAgIG1fY29udGV4dC0+dW5pZm9ybTJmdihsb2NhdGlvbi0+
bG9jYXRpb24oKSwgZGF0YS5kYXRhKCksIHNyY09mZnNldCwgKHNyY0xlbmd0aCA/IHNyY0xlbmd0
aCA6IGRhdGEubGVuZ3RoKCkgLSBzcmNPZmZzZXQpIC8gMik7CisgICAgYXV0byByZXN1bHQgPSB2
YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKCJ1bmlmb3JtMmZ2IiwgbG9jYXRpb24sIGRhdGEsIDIs
IHNyY09mZnNldCwgc3JjTGVuZ3RoKTsKKyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgcmV0dXJu
OworICAgIG1fY29udGV4dC0+dW5pZm9ybTJmdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgcmVzdWx0
LnZhbHVlKCkpOwogfQogCiB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm0zZnYo
V2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBGbG9hdDMyTGlzdCBkYXRhLCBHQ0dMdWlu
dCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKIHsKLSAgICBpZiAoaXNDb250ZXh0TG9z
dE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKCJ1bmlmb3JtM2Z2Iiwg
bG9jYXRpb24sIGRhdGEsIDMsIHNyY09mZnNldCwgc3JjTGVuZ3RoKSkKKyAgICBpZiAoaXNDb250
ZXh0TG9zdE9yUGVuZGluZygpKQogICAgICAgICByZXR1cm47Ci0gICAgbV9jb250ZXh0LT51bmlm
b3JtM2Z2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCBkYXRhLmRhdGEoKSwgc3JjT2Zmc2V0LCAoc3Jj
TGVuZ3RoID8gc3JjTGVuZ3RoIDogZGF0YS5sZW5ndGgoKSAtIHNyY09mZnNldCkgLyAzKTsKKyAg
ICBhdXRvIHJlc3VsdCA9IHZhbGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMoInVuaWZvcm0zZnYiLCBs
b2NhdGlvbiwgZGF0YSwgMywgc3JjT2Zmc2V0LCBzcmNMZW5ndGgpOworICAgIGlmICghcmVzdWx0
KQorICAgICAgICByZXR1cm47CisgICAgbV9jb250ZXh0LT51bmlmb3JtM2Z2KGxvY2F0aW9uLT5s
b2NhdGlvbigpLCByZXN1bHQudmFsdWUoKSk7CiB9CiAKIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29u
dGV4dDo6dW5pZm9ybTRmdihXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEZsb2F0MzJM
aXN0IGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQogewotICAg
IGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlVW5pZm9ybVBhcmFtZXRl
cnMoInVuaWZvcm00ZnYiLCBsb2NhdGlvbiwgZGF0YSwgNCwgc3JjT2Zmc2V0LCBzcmNMZW5ndGgp
KQorICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCisgICAgICAgIHJldHVybjsKKyAg
ICBhdXRvIHJlc3VsdCA9IHZhbGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMoInVuaWZvcm00ZnYiLCBs
b2NhdGlvbiwgZGF0YSwgNCwgc3JjT2Zmc2V0LCBzcmNMZW5ndGgpOworICAgIGlmICghcmVzdWx0
KQogICAgICAgICByZXR1cm47Ci0gICAgbV9jb250ZXh0LT51bmlmb3JtNGZ2KGxvY2F0aW9uLT5s
b2NhdGlvbigpLCBkYXRhLmRhdGEoKSwgc3JjT2Zmc2V0LCAoc3JjTGVuZ3RoID8gc3JjTGVuZ3Ro
IDogZGF0YS5sZW5ndGgoKSAtIHNyY09mZnNldCkgLyA0KTsKKyAgICBtX2NvbnRleHQtPnVuaWZv
cm00ZnYobG9jYXRpb24tPmxvY2F0aW9uKCksIHJlc3VsdC52YWx1ZSgpKTsKIH0KIAogdm9pZCBX
ZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtMWl2KFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBs
b2NhdGlvbiwgSW50MzJMaXN0IGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3Jj
TGVuZ3RoKQogewotICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRl
VW5pZm9ybVBhcmFtZXRlcnMoInVuaWZvcm0xaXYiLCBsb2NhdGlvbiwgZGF0YSwgMSwgc3JjT2Zm
c2V0LCBzcmNMZW5ndGgpKQorICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCisgICAg
ICAgIHJldHVybjsKKyAgICBhdXRvIHJlc3VsdCA9IHZhbGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMo
InVuaWZvcm0xaXYiLCBsb2NhdGlvbiwgZGF0YSwgMSwgc3JjT2Zmc2V0LCBzcmNMZW5ndGgpOwor
ICAgIGlmICghcmVzdWx0KQogICAgICAgICByZXR1cm47Ci0gICAgbV9jb250ZXh0LT51bmlmb3Jt
MWl2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCBkYXRhLmRhdGEoKSwgc3JjT2Zmc2V0LCBzcmNMZW5n
dGggPyBzcmNMZW5ndGggOiAoZGF0YS5sZW5ndGgoKSAtIHNyY09mZnNldCkpOworICAgIG1fY29u
dGV4dC0+dW5pZm9ybTFpdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgcmVzdWx0LnZhbHVlKCkpOwog
fQogCiB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm0yaXYoV2ViR0xVbmlmb3Jt
TG9jYXRpb24qIGxvY2F0aW9uLCBJbnQzMkxpc3QgZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBH
Q0dMdWludCBzcmNMZW5ndGgpCiB7Ci0gICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8
fCAhdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycygidW5pZm9ybTJpdiIsIGxvY2F0aW9uLCBkYXRh
LCAyLCBzcmNPZmZzZXQsIHNyY0xlbmd0aCkpCisgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRp
bmcoKSkKKyAgICAgICAgcmV0dXJuOworICAgIGF1dG8gcmVzdWx0ID0gdmFsaWRhdGVVbmlmb3Jt
UGFyYW1ldGVycygidW5pZm9ybTJpdiIsIGxvY2F0aW9uLCBkYXRhLCAyLCBzcmNPZmZzZXQsIHNy
Y0xlbmd0aCk7CisgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgIHJldHVybjsKLSAgICBtX2NvbnRl
eHQtPnVuaWZvcm0yaXYobG9jYXRpb24tPmxvY2F0aW9uKCksIGRhdGEuZGF0YSgpLCBzcmNPZmZz
ZXQsIChzcmNMZW5ndGggPyBzcmNMZW5ndGggOiBkYXRhLmxlbmd0aCgpIC0gc3JjT2Zmc2V0KSAv
IDIpOworICAgIG1fY29udGV4dC0+dW5pZm9ybTJpdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgcmVz
dWx0LnZhbHVlKCkpOwogfQogCiB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm0z
aXYoV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBJbnQzMkxpc3QgZGF0YSwgR0NHTHVp
bnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCiB7Ci0gICAgaWYgKGlzQ29udGV4dExv
c3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycygidW5pZm9ybTNpdiIs
IGxvY2F0aW9uLCBkYXRhLCAzLCBzcmNPZmZzZXQsIHNyY0xlbmd0aCkpCisgICAgaWYgKGlzQ29u
dGV4dExvc3RPclBlbmRpbmcoKSkKKyAgICAgICAgcmV0dXJuOworICAgIGF1dG8gcmVzdWx0ID0g
dmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycygidW5pZm9ybTNpdiIsIGxvY2F0aW9uLCBkYXRhLCAz
LCBzcmNPZmZzZXQsIHNyY0xlbmd0aCk7CisgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgIHJldHVy
bjsKLSAgICBtX2NvbnRleHQtPnVuaWZvcm0zaXYobG9jYXRpb24tPmxvY2F0aW9uKCksIGRhdGEu
ZGF0YSgpLCBzcmNPZmZzZXQsIChzcmNMZW5ndGggPyBzcmNMZW5ndGggOiBkYXRhLmxlbmd0aCgp
IC0gc3JjT2Zmc2V0KSAvIDMpOworICAgIG1fY29udGV4dC0+dW5pZm9ybTNpdihsb2NhdGlvbi0+
bG9jYXRpb24oKSwgcmVzdWx0LnZhbHVlKCkpOwogfQogCiB2b2lkIFdlYkdMMlJlbmRlcmluZ0Nv
bnRleHQ6OnVuaWZvcm00aXYoV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBJbnQzMkxp
c3QgZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCiB7Ci0gICAg
aWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVy
cygidW5pZm9ybTRpdiIsIGxvY2F0aW9uLCBkYXRhLCA0LCBzcmNPZmZzZXQsIHNyY0xlbmd0aCkp
CisgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSkKICAgICAgICAgcmV0dXJuOwotICAg
IG1fY29udGV4dC0+dW5pZm9ybTRpdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgZGF0YS5kYXRhKCks
IHNyY09mZnNldCwgKHNyY0xlbmd0aCA/IHNyY0xlbmd0aCA6IGRhdGEubGVuZ3RoKCkgLSBzcmNP
ZmZzZXQpIC8gNCk7CisgICAgYXV0byByZXN1bHQgPSB2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJz
KCJ1bmlmb3JtNGl2IiwgbG9jYXRpb24sIGRhdGEsIDQsIHNyY09mZnNldCwgc3JjTGVuZ3RoKTsK
KyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgcmV0dXJuOworICAgIG1fY29udGV4dC0+dW5pZm9y
bTRpdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgcmVzdWx0LnZhbHVlKCkpOwogfQogCiB2b2lkIFdl
YkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm1NYXRyaXgyZnYoV2ViR0xVbmlmb3JtTG9jYXRp
b24qIGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEZsb2F0MzJMaXN0IGRhdGEsIEdD
R0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQogewotICAgIGlmIChpc0NvbnRl
eHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlVW5pZm9ybU1hdHJpeFBhcmFtZXRlcnMoInVu
aWZvcm1NYXRyaXgyZnYiLCBsb2NhdGlvbiwgdHJhbnNwb3NlLCBkYXRhLCAyKjIsIHNyY09mZnNl
dCwgc3JjTGVuZ3RoKSkKKyAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpKQogICAgICAg
ICByZXR1cm47Ci0gICAgbV9jb250ZXh0LT51bmlmb3JtTWF0cml4MmZ2KGxvY2F0aW9uLT5sb2Nh
dGlvbigpLCB0cmFuc3Bvc2UsIGRhdGEuZGF0YSgpLCBzcmNPZmZzZXQsIChzcmNMZW5ndGggPyBz
cmNMZW5ndGggOiBkYXRhLmxlbmd0aCgpIC0gc3JjT2Zmc2V0KSAvICgyKjIpKTsKKyAgICBhdXRv
IHJlc3VsdCA9IHZhbGlkYXRlVW5pZm9ybU1hdHJpeFBhcmFtZXRlcnMoInVuaWZvcm1NYXRyaXgy
ZnYiLCBsb2NhdGlvbiwgdHJhbnNwb3NlLCBkYXRhLCAyKjIsIHNyY09mZnNldCwgc3JjTGVuZ3Ro
KTsKKyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgcmV0dXJuOworICAgIG1fY29udGV4dC0+dW5p
Zm9ybU1hdHJpeDJmdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgdHJhbnNwb3NlLCByZXN1bHQudmFs
dWUoKSk7CiB9CiAKIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybU1hdHJpeDNm
dihXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwg
RmxvYXQzMkxpc3QgZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgp
CiB7Ci0gICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVVbmlmb3Jt
TWF0cml4UGFyYW1ldGVycygidW5pZm9ybU1hdHJpeDNmdiIsIGxvY2F0aW9uLCB0cmFuc3Bvc2Us
IGRhdGEsIDMqMywgc3JjT2Zmc2V0LCBzcmNMZW5ndGgpKQorICAgIGlmIChpc0NvbnRleHRMb3N0
T3JQZW5kaW5nKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBtX2NvbnRleHQtPnVuaWZvcm1NYXRy
aXgzZnYobG9jYXRpb24tPmxvY2F0aW9uKCksIHRyYW5zcG9zZSwgZGF0YS5kYXRhKCksIHNyY09m
ZnNldCwgKHNyY0xlbmd0aCA/IHNyY0xlbmd0aCA6IGRhdGEubGVuZ3RoKCkgLSBzcmNPZmZzZXQp
IC8gKDMqMykpOworICAgIGF1dG8gcmVzdWx0ID0gdmFsaWRhdGVVbmlmb3JtTWF0cml4UGFyYW1l
dGVycygidW5pZm9ybU1hdHJpeDNmdiIsIGxvY2F0aW9uLCB0cmFuc3Bvc2UsIGRhdGEsIDMqMywg
c3JjT2Zmc2V0LCBzcmNMZW5ndGgpOworICAgIGlmICghcmVzdWx0KQorICAgICAgICByZXR1cm47
CisgICAgbV9jb250ZXh0LT51bmlmb3JtTWF0cml4M2Z2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCB0
cmFuc3Bvc2UsIHJlc3VsdC52YWx1ZSgpKTsKIH0KIAogdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250
ZXh0Ojp1bmlmb3JtTWF0cml4NGZ2KFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgR0NH
TGJvb2xlYW4gdHJhbnNwb3NlLCBGbG9hdDMyTGlzdCBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQs
IEdDR0x1aW50IHNyY0xlbmd0aCkKIHsKLSAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygp
IHx8ICF2YWxpZGF0ZVVuaWZvcm1NYXRyaXhQYXJhbWV0ZXJzKCJ1bmlmb3JtTWF0cml4NGZ2Iiwg
bG9jYXRpb24sIHRyYW5zcG9zZSwgZGF0YSwgNCo0LCBzcmNPZmZzZXQsIHNyY0xlbmd0aCkpCisg
ICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSkKKyAgICAgICAgcmV0dXJuOworICAgIGF1
dG8gcmVzdWx0ID0gdmFsaWRhdGVVbmlmb3JtTWF0cml4UGFyYW1ldGVycygidW5pZm9ybU1hdHJp
eDRmdiIsIGxvY2F0aW9uLCB0cmFuc3Bvc2UsIGRhdGEsIDQqNCwgc3JjT2Zmc2V0LCBzcmNMZW5n
dGgpOworICAgIGlmICghcmVzdWx0KQogICAgICAgICByZXR1cm47Ci0gICAgbV9jb250ZXh0LT51
bmlmb3JtTWF0cml4NGZ2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCB0cmFuc3Bvc2UsIGRhdGEuZGF0
YSgpLCBzcmNPZmZzZXQsIChzcmNMZW5ndGggPyBzcmNMZW5ndGggOiBkYXRhLmxlbmd0aCgpIC0g
c3JjT2Zmc2V0KSAvICg0KjQpKTsKKyAgICBtX2NvbnRleHQtPnVuaWZvcm1NYXRyaXg0ZnYobG9j
YXRpb24tPmxvY2F0aW9uKCksIHRyYW5zcG9zZSwgcmVzdWx0LnZhbHVlKCkpOwogfQogCiB2b2lk
IFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnJlYWRQaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHks
IEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dM
ZW51bSB0eXBlLCBBcnJheUJ1ZmZlclZpZXcmIHBpeGVscykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuaAppbmRleCBiOGIwMzZlNDQ3
NmE0ZjE1ZDRlNTA2NzU4YzU3NTkzNWUwYTA2MjRmLi41ZjQ3ZTYxZjBhNDQ0NGEyODhjMWI0NjBm
YjRlMGY3MzY2NzQ2Njc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTDJSZW5kZXJpbmdDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0wyUmVuZGVyaW5nQ29udGV4dC5oCkBAIC0yOTIsNyArMjkyLDggQEAgcHJpdmF0ZToKICAg
ICBib29sIHZhbGlkYXRlSW5kZXhBcnJheUNvbnNlcnZhdGl2ZShHQ0dMZW51bSB0eXBlLCB1bnNp
Z25lZCYgbnVtRWxlbWVudHNSZXF1aXJlZCkgZmluYWw7CiAgICAgYm9vbCB2YWxpZGF0ZUJsZW5k
RXF1YXRpb24oY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBHQ0dMZW51bSBtb2RlKSBmaW5hbDsK
ICAgICBib29sIHZhbGlkYXRlQ2FwYWJpbGl0eShjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIEdD
R0xlbnVtIGNhcCkgZmluYWw7Ci0gICAgYm9vbCB2YWxpZGF0ZUNsZWFyQnVmZmVyKGNvbnN0IGNo
YXIqIGZ1bmN0aW9uTmFtZSwgR0NHTGVudW0gYnVmZmVyLCBzaXplX3QsIEdDR0x1aW50IHNyY09m
ZnNldCk7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVHlwZWRBcnJheVR5cGU+
CisgICAgT3B0aW9uYWw8R0NHTFNwYW48Y29uc3QgVD4+IHZhbGlkYXRlQ2xlYXJCdWZmZXIoY29u
c3QgY2hhciogZnVuY3Rpb25OYW1lLCBHQ0dMZW51bSBidWZmZXIsIFR5cGVkTGlzdDxUeXBlZEFy
cmF5VHlwZSwgVD4mIHZhbHVlcywgR0NHTHVpbnQgc3JjT2Zmc2V0KTsKICAgICBib29sIHZhbGlk
YXRlRnJhbWVidWZmZXJUYXJnZXQoR0NHTGVudW0gdGFyZ2V0KSBmaW5hbDsKICAgICBXZWJHTEZy
YW1lYnVmZmVyKiBnZXRGcmFtZWJ1ZmZlckJpbmRpbmcoR0NHTGVudW0gdGFyZ2V0KSBmaW5hbDsK
ICAgICBXZWJHTEZyYW1lYnVmZmVyKiBnZXRSZWFkRnJhbWVidWZmZXJCaW5kaW5nKCkgZmluYWw7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTERyYXdCdWZmZXJz
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRHJhd0J1ZmZlcnMuY3BwCmlu
ZGV4IDQ5NDE1NmUxZTY1YjYwMjkxOTBkYjdjMWMwMjZhZGY4MDNkZGE4ZDIuLmU1Y2ViNGJkZGNj
NGMwNTFkYjhiOWFhOWNlMDIwODFiZjIyMzA1MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMRHJhd0J1ZmZlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMRHJhd0J1ZmZlcnMuY3BwCkBAIC03NCw4ICs3NCw4IEBAIHZvaWQgV2Vi
R0xEcmF3QnVmZmVyczo6ZHJhd0J1ZmZlcnNXRUJHTChjb25zdCBWZWN0b3I8R0NHTGVudW0+JiBi
dWZmZXJzKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIC8vIEJlY2F1
c2UgdGhlIGJhY2tidWZmZXIgaXMgc2ltdWxhdGVkIG9uIGFsbCBjdXJyZW50IFdlYktpdCBwb3J0
cywgd2UgbmVlZCB0byBjaGFuZ2UgQkFDSyB0byBDT0xPUl9BVFRBQ0hNRU5UMC4KLSAgICAgICAg
R0NHTGVudW0gdmFsdWUgPSAoYnVmc1swXSA9PSBHcmFwaGljc0NvbnRleHRHTDo6QkFDSykgPyBH
cmFwaGljc0NvbnRleHRHTDo6Q09MT1JfQVRUQUNITUVOVDAgOiBHcmFwaGljc0NvbnRleHRHTDo6
Tk9ORTsKLSAgICAgICAgbV9jb250ZXh0LT5ncmFwaGljc0NvbnRleHRHTCgpLT5nZXRFeHRlbnNp
b25zKCkuZHJhd0J1ZmZlcnNFWFQoMSwgJnZhbHVlKTsKKyAgICAgICAgR0NHTGVudW0gdmFsdWVb
MV0geyAoYnVmc1swXSA9PSBHcmFwaGljc0NvbnRleHRHTDo6QkFDSykgPyBHcmFwaGljc0NvbnRl
eHRHTDo6Q09MT1JfQVRUQUNITUVOVDAgOiBHcmFwaGljc0NvbnRleHRHTDo6Tk9ORSB9OworICAg
ICAgICBtX2NvbnRleHQtPmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5kcmF3
QnVmZmVyc0VYVCh2YWx1ZSk7CiAgICAgICAgIG1fY29udGV4dC0+c2V0QmFja0RyYXdCdWZmZXIo
YnVmc1swXSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgaWYgKG4gPiBtX2NvbnRleHQtPmdldE1h
eERyYXdCdWZmZXJzKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMRnJhbWVidWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xG
cmFtZWJ1ZmZlci5jcHAKaW5kZXggMzY1OGVlOGVhYWY3ZjBkYmI4ODYzY2VkNTAyNDI1ZjRmYjRl
MjNhNS4uYjE5OGIzNjZiMTFmMTViMWI4MDNiZDA2M2M3NmM0ZjJjZDhkMTE3OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5jcHAKQEAgLTcwMiwx
MyArNzAyLDEwIEBAIHZvaWQgV2ViR0xGcmFtZWJ1ZmZlcjo6ZHJhd0J1ZmZlcnNJZk5lY2Vzc2Fy
eShib29sIGZvcmNlKQogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGlmIChyZXNl
dCkgewotICAgICAgICAgICAgaWYgKGNvbnRleHQoKS0+aXNXZWJHTDIoKSkgewotICAgICAgICAg
ICAgICAgIGNvbnRleHQoKS0+Z3JhcGhpY3NDb250ZXh0R0woKS0+ZHJhd0J1ZmZlcnMoCi0gICAg
ICAgICAgICAgICAgICAgIG1fZmlsdGVyZWREcmF3QnVmZmVycy5zaXplKCksIG1fZmlsdGVyZWRE
cmF3QnVmZmVycy5kYXRhKCkpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAg
ICBjb250ZXh0KCktPmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5kcmF3QnVm
ZmVyc0VYVCgKLSAgICAgICAgICAgICAgICAgICAgbV9maWx0ZXJlZERyYXdCdWZmZXJzLnNpemUo
KSwgbV9maWx0ZXJlZERyYXdCdWZmZXJzLmRhdGEoKSk7Ci0gICAgICAgICAgICB9CisgICAgICAg
ICAgICBpZiAoY29udGV4dCgpLT5pc1dlYkdMMigpKQorICAgICAgICAgICAgICAgIGNvbnRleHQo
KS0+Z3JhcGhpY3NDb250ZXh0R0woKS0+ZHJhd0J1ZmZlcnMobV9maWx0ZXJlZERyYXdCdWZmZXJz
KTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBjb250ZXh0KCktPmdyYXBoaWNz
Q29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5kcmF3QnVmZmVyc0VYVChtX2ZpbHRlcmVkRHJh
d0J1ZmZlcnMpOwogICAgICAgICB9CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAppbmRleCAxODVl
OGM2MmU2ZmJlMzFmMzEzODhjMGM5ZjgwZDgxY2VlMjRhM2IxLi4yNTRjYzk3YjQxNTU1MzQwMzZm
NWJkMmVhZjg3ZjA2OTYxNDc0NWQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcApAQCAtMTYwMyw3ICsxNjAz
LDcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpidWZmZXJEYXRhKEdDR0xlbnVt
IHRhcmdldCwgT3B0aW9uYWw8QnVmZmVyRGF0YVMKICAgICAgICAgfQogCiAgICAgICAgIG1fY29u
dGV4dC0+bW92ZUVycm9yc1RvU3ludGhldGljRXJyb3JMaXN0KCk7Ci0gICAgICAgIG1fY29udGV4
dC0+YnVmZmVyRGF0YSh0YXJnZXQsIGRhdGEtPmJ5dGVMZW5ndGgoKSwgZGF0YS0+ZGF0YSgpLCB1
c2FnZSk7CisgICAgICAgIG1fY29udGV4dC0+YnVmZmVyRGF0YSh0YXJnZXQsIEdDR0xTcGFuPGNv
bnN0IEdDR0x2b2lkPihkYXRhLT5kYXRhKCksIGRhdGEtPmJ5dGVMZW5ndGgoKSksIHVzYWdlKTsK
ICAgICAgICAgaWYgKG1fY29udGV4dC0+bW92ZUVycm9yc1RvU3ludGhldGljRXJyb3JMaXN0KCkp
IHsKICAgICAgICAgICAgIC8vIFRoZSBidWZmZXJEYXRhIGZ1bmN0aW9uIGZhaWxlZC4gVGVsbCB0
aGUgYnVmZmVyIGl0IGRvZXNuJ3QgaGF2ZSB0aGUgZGF0YSBpdCB0aGlua3MgaXQgZG9lcy4KICAg
ICAgICAgICAgIGJ1ZmZlci0+ZGlzYXNzb2NpYXRlQnVmZmVyRGF0YSgpOwpAQCAtMTYzMCw3ICsx
NjMwLDcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpidWZmZXJTdWJEYXRhKEdD
R0xlbnVtIHRhcmdldCwgbG9uZyBsb25nIG9mZnNldCwKICAgICAgICAgfQogCiAgICAgICAgIG1f
Y29udGV4dC0+bW92ZUVycm9yc1RvU3ludGhldGljRXJyb3JMaXN0KCk7Ci0gICAgICAgIG1fY29u
dGV4dC0+YnVmZmVyU3ViRGF0YSh0YXJnZXQsIHN0YXRpY19jYXN0PEdDR0xpbnRwdHI+KG9mZnNl
dCksIGRhdGEtPmJ5dGVMZW5ndGgoKSwgZGF0YS0+ZGF0YSgpKTsKKyAgICAgICAgbV9jb250ZXh0
LT5idWZmZXJTdWJEYXRhKHRhcmdldCwgc3RhdGljX2Nhc3Q8R0NHTGludHB0cj4ob2Zmc2V0KSwg
R0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+KGRhdGEtPmRhdGEoKSwgZGF0YS0+Ynl0ZUxlbmd0aCgp
KSk7CiAgICAgICAgIGlmIChtX2NvbnRleHQtPm1vdmVFcnJvcnNUb1N5bnRoZXRpY0Vycm9yTGlz
dCgpKSB7CiAgICAgICAgICAgICAvLyBUaGUgYnVmZmVyU3ViRGF0YSBmdW5jdGlvbiBmYWlsZWQu
IFRlbGwgdGhlIGJ1ZmZlciBpdCBkb2Vzbid0IGhhdmUgdGhlIGRhdGEgaXQgdGhpbmtzIGl0IGRv
ZXMuCiAgICAgICAgICAgICBidWZmZXItPmRpc2Fzc29jaWF0ZUJ1ZmZlckRhdGEoKTsKQEAgLTE3
NTcsNyArMTc1Nyw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Y29tcHJlc3Nl
ZFRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxlCiAgICAgaWYgKCF2YWxpZGF0
ZVRleHR1cmUyREJpbmRpbmcoImNvbXByZXNzZWRUZXhJbWFnZTJEIiwgdGFyZ2V0KSkKICAgICAg
ICAgcmV0dXJuOwogICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmNvbXByZXNzZWRUZXhJ
bWFnZTJEUm9idXN0QU5HTEUodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBo
ZWlnaHQsCi0gICAgICAgIGJvcmRlciwgZGF0YS5ieXRlTGVuZ3RoKCksIGRhdGEuYnl0ZUxlbmd0
aCgpLCBkYXRhLmJhc2VBZGRyZXNzKCkpOworICAgICAgICBib3JkZXIsIGRhdGEuYnl0ZUxlbmd0
aCgpLCBtYWtlR0NHTFNwYW4oZGF0YS5iYXNlQWRkcmVzcygpLCBkYXRhLmJ5dGVMZW5ndGgoKSkp
OwogI2Vsc2UKICAgICBpZiAoIXZhbGlkYXRlVGV4RnVuY0xldmVsKCJjb21wcmVzc2VkVGV4SW1h
Z2UyRCIsIHRhcmdldCwgbGV2ZWwpKQogICAgICAgICByZXR1cm47CkBAIC0xODAxLDcgKzE4MDEs
NyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmNvbXByZXNzZWRUZXhTdWJJbWFn
ZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludAogI2lmIFVTRShBTkdMRSkKICAgICBpZiAoIXZh
bGlkYXRlVGV4dHVyZTJEQmluZGluZygiY29tcHJlc3NlZFRleFN1YkltYWdlMkQiLCB0YXJnZXQp
KQogICAgICAgICByZXR1cm47Ci0gICAgZ3JhcGhpY3NDb250ZXh0R0woKS0+Z2V0RXh0ZW5zaW9u
cygpLmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEUm9idXN0QU5HTEUodGFyZ2V0LCBsZXZlbCwgeG9m
ZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCBkYXRhLmJ5dGVMZW5ndGgoKSwg
ZGF0YS5ieXRlTGVuZ3RoKCksIGRhdGEuYmFzZUFkZHJlc3MoKSk7CisgICAgZ3JhcGhpY3NDb250
ZXh0R0woKS0+Z2V0RXh0ZW5zaW9ucygpLmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEUm9idXN0QU5H
TEUodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0
LCBkYXRhLmJ5dGVMZW5ndGgoKSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+KGRhdGEuYmFzZUFk
ZHJlc3MoKSwgZGF0YS5ieXRlTGVuZ3RoKCkpKTsKICNlbHNlCiAgICAgaWYgKCF2YWxpZGF0ZVRl
eEZ1bmNMZXZlbCgiY29tcHJlc3NlZFRleFN1YkltYWdlMkQiLCB0YXJnZXQsIGxldmVsKSkKICAg
ICAgICAgcmV0dXJuOwpAQCAtNDcwOSwxMiArNDcwOSwxMiBAQCBFeGNlcHRpb25Pcjx2b2lkPiBX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp0ZXhJbWFnZVNvdXJjZUhlbHBlcihUZXhJbWFnZUZ1
bmN0aQogICAgICAgICAgICAgaWYgKGZ1bmN0aW9uSUQgPT0gVGV4SW1hZ2VGdW5jdGlvbklEOjpU
ZXhJbWFnZTNEKSB7CiAgICAgICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCku
dGV4SW1hZ2UzRFJvYnVzdEFOR0xFKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LAogICAg
ICAgICAgICAgICAgICAgICBhZGp1c3RlZFNvdXJjZUltYWdlUmVjdC53aWR0aCgpLCBhZGp1c3Rl
ZFNvdXJjZUltYWdlUmVjdC5oZWlnaHQoKSwgZGVwdGgsIDAsCi0gICAgICAgICAgICAgICAgICAg
IGZvcm1hdCwgdHlwZSwgYnl0ZUxlbmd0aCwgbmVlZENvbnZlcnNpb24gPyBkYXRhLmRhdGEoKSA6
IHBpeGVscy0+ZGF0YSgpLT5kYXRhKCkpOworICAgICAgICAgICAgICAgICAgICBmb3JtYXQsIHR5
cGUsIG1ha2VHQ0dMU3BhbihuZWVkQ29udmVyc2lvbiA/IGRhdGEuZGF0YSgpIDogcGl4ZWxzLT5k
YXRhKCktPmRhdGEoKSwgYnl0ZUxlbmd0aCkpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAg
ICAgICAgICAgICBBU1NFUlQoZnVuY3Rpb25JRCA9PSBUZXhJbWFnZUZ1bmN0aW9uSUQ6OlRleFN1
YkltYWdlM0QpOwogICAgICAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnRl
eFN1YkltYWdlM0RSb2J1c3RBTkdMRSh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB6
b2Zmc2V0LAogICAgICAgICAgICAgICAgICAgICBhZGp1c3RlZFNvdXJjZUltYWdlUmVjdC53aWR0
aCgpLCBhZGp1c3RlZFNvdXJjZUltYWdlUmVjdC5oZWlnaHQoKSwgZGVwdGgsCi0gICAgICAgICAg
ICAgICAgICAgIGZvcm1hdCwgdHlwZSwgYnl0ZUxlbmd0aCwgbmVlZENvbnZlcnNpb24gPyBkYXRh
LmRhdGEoKSA6IHBpeGVscy0+ZGF0YSgpLT5kYXRhKCkpOworICAgICAgICAgICAgICAgICAgICBm
b3JtYXQsIHR5cGUsIG1ha2VHQ0dMU3BhbihuZWVkQ29udmVyc2lvbiA/IGRhdGEuZGF0YSgpIDog
cGl4ZWxzLT5kYXRhKCktPmRhdGEoKSwgYnl0ZUxlbmd0aCkpOwogICAgICAgICAgICAgfQogI2Vs
c2UKICAgICAgICAgICAgIC8vIFdlYkdMIDIuMCBpcyBvbmx5IHN1cHBvcnRlZCB3aXRoIHRoZSBB
TkdMRSBiYWNrZW5kLgpAQCAtNDg5NCwxMSArNDg5NCwxMSBAQCB2b2lkIFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2U6OnRleEltYWdlQXJyYXlCdWZmZXJWaWV3SGVscGVyKFRleEltYWdlRnVuY3Rp
b25JRAogICAgIH0KICNpZiBVU0UoQU5HTEUpCiAgICAgaWYgKGZ1bmN0aW9uSUQgPT0gVGV4SW1h
Z2VGdW5jdGlvbklEOjpUZXhJbWFnZTNEKSB7Ci0gICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5z
aW9ucygpLnRleEltYWdlM0RSb2J1c3RBTkdMRSh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1h
dCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGJvcmRlciwgZm9ybWF0LCB0eXBlLCBieXRlTGVuZ3Ro
LCBkYXRhKTsKKyAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkudGV4SW1hZ2UzRFJv
YnVzdEFOR0xFKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBk
ZXB0aCwgYm9yZGVyLCBmb3JtYXQsIHR5cGUsIG1ha2VHQ0dMU3BhbihkYXRhLCBieXRlTGVuZ3Ro
KSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgaWYgKGZ1bmN0aW9uSUQgPT0gVGV4SW1h
Z2VGdW5jdGlvbklEOjpUZXhTdWJJbWFnZTNEKSB7Ci0gICAgICAgIG1fY29udGV4dC0+Z2V0RXh0
ZW5zaW9ucygpLnRleFN1YkltYWdlM0RSb2J1c3RBTkdMRSh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0
LCB5b2Zmc2V0LCB6b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgZm9ybWF0LCB0eXBlLCBi
eXRlTGVuZ3RoLCBkYXRhKTsKKyAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkudGV4
U3ViSW1hZ2UzRFJvYnVzdEFOR0xFKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHpv
ZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBmb3JtYXQsIHR5cGUsIG1ha2VHQ0dMU3Bhbihk
YXRhLCBieXRlTGVuZ3RoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAjZW5kaWYgLy8gVVNF
KEFOR0xFKQpAQCAtNDk3NSwxMiArNDk3NSwxMiBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2U6OnRleEltYWdlSW1wbChUZXhJbWFnZUZ1bmN0aW9uSUQgZnVuY3Rpb25JRCwgR0NHTAog
ICAgICAgICBpZiAoZnVuY3Rpb25JRCA9PSBUZXhJbWFnZUZ1bmN0aW9uSUQ6OlRleEltYWdlM0Qp
IHsKICAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnRleEltYWdlM0RSb2J1
c3RBTkdMRSh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwKICAgICAgICAgICAgICAgICBh
ZGp1c3RlZFNvdXJjZUltYWdlUmVjdC53aWR0aCgpLCBhZGp1c3RlZFNvdXJjZUltYWdlUmVjdC5o
ZWlnaHQoKSwgZGVwdGgsIDAsCi0gICAgICAgICAgICAgICAgZm9ybWF0LCB0eXBlLCBieXRlTGVu
Z3RoLCBuZWVkQ29udmVyc2lvbiA/IGRhdGEuZGF0YSgpIDogaW1hZ2VQaXhlbERhdGEpOworICAg
ICAgICAgICAgICAgIGZvcm1hdCwgdHlwZSwgbWFrZUdDR0xTcGFuKG5lZWRDb252ZXJzaW9uID8g
ZGF0YS5kYXRhKCkgOiBpbWFnZVBpeGVsRGF0YSwgYnl0ZUxlbmd0aCkpOwogICAgICAgICB9IGVs
c2UgewogICAgICAgICAgICAgQVNTRVJUKGZ1bmN0aW9uSUQgPT0gVGV4SW1hZ2VGdW5jdGlvbklE
OjpUZXhTdWJJbWFnZTNEKTsKICAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygp
LnRleFN1YkltYWdlM0RSb2J1c3RBTkdMRSh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0
LCB6b2Zmc2V0LAogICAgICAgICAgICAgICAgIGFkanVzdGVkU291cmNlSW1hZ2VSZWN0LndpZHRo
KCksIGFkanVzdGVkU291cmNlSW1hZ2VSZWN0LmhlaWdodCgpLCBkZXB0aCwKLSAgICAgICAgICAg
ICAgICBmb3JtYXQsIHR5cGUsIGJ5dGVMZW5ndGgsIG5lZWRDb252ZXJzaW9uID8gZGF0YS5kYXRh
KCkgOiBpbWFnZVBpeGVsRGF0YSk7CisgICAgICAgICAgICAgICAgZm9ybWF0LCB0eXBlLCBtYWtl
R0NHTFNwYW4obmVlZENvbnZlcnNpb24gPyBkYXRhLmRhdGEoKSA6IGltYWdlUGl4ZWxEYXRhLCBi
eXRlTGVuZ3RoKSk7CiAgICAgICAgIH0KICNlbHNlCiAgICAgICAgIFVOVVNFRF9QQVJBTSh6b2Zm
c2V0KTsKQEAgLTQ5OTMsNyArNDk5Myw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZTo6dGV4SW1hZ2VJbXBsKFRleEltYWdlRnVuY3Rpb25JRCBmdW5jdGlvbklELCBHQ0dMCiB2b2lk
IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnRleEltYWdlMkRCYXNlKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEdDR0xzaXplaSB3aWR0
aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NH
TGVudW0gdHlwZSwgR0NHTHNpemVpIGJ5dGVMZW5ndGgsIGNvbnN0IHZvaWQqIHBpeGVscykKIHsK
ICNpZiBVU0UoQU5HTEUpCi0gICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkudGV4SW1hZ2Uy
RFJvYnVzdEFOR0xFKHRhcmdldCwgbGV2ZWwsIGludGVybmFsRm9ybWF0LCB3aWR0aCwgaGVpZ2h0
LCBib3JkZXIsIGZvcm1hdCwgdHlwZSwgYnl0ZUxlbmd0aCwgcGl4ZWxzKTsKKyAgICBtX2NvbnRl
eHQtPmdldEV4dGVuc2lvbnMoKS50ZXhJbWFnZTJEUm9idXN0QU5HTEUodGFyZ2V0LCBsZXZlbCwg
aW50ZXJuYWxGb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGJvcmRlciwgZm9ybWF0LCB0eXBlLCBtYWtl
R0NHTFNwYW4ocGl4ZWxzLCBieXRlTGVuZ3RoKSk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShi
eXRlTGVuZ3RoKTsKICAgICAvLyBGSVhNRTogRm9yIG5vdyB3ZSBpZ25vcmUgYW55IGVycm9ycyBy
ZXR1cm5lZC4KQEAgLTUwMjMsNyArNTAyMyw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZTo6dGV4U3ViSW1hZ2UyREJhc2UoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsCiAg
ICAgQVNTRVJUKCFpc0NvbnRleHRMb3N0KCkpOwogI2lmIFVTRShBTkdMRSkKICAgICBVTlVTRURf
UEFSQU0oaW50ZXJuYWxGb3JtYXQpOwotICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnRl
eFN1YkltYWdlMkRSb2J1c3RBTkdMRSh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB3
aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIGJ5dGVMZW5ndGgsIHBpeGVscyk7CisgICAgbV9j
b250ZXh0LT5nZXRFeHRlbnNpb25zKCkudGV4U3ViSW1hZ2UyRFJvYnVzdEFOR0xFKHRhcmdldCwg
bGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgbWFr
ZUdDR0xTcGFuKHBpeGVscywgYnl0ZUxlbmd0aCkpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0o
Ynl0ZUxlbmd0aCk7CiAgICAgQVNTRVJUKHZhbGlkYXRlVGV4RnVuY1BhcmFtZXRlcnMoInRleFN1
YkltYWdlMkQiLCBUZXhJbWFnZUZ1bmN0aW9uVHlwZTo6VGV4U3ViSW1hZ2UsIFNvdXJjZUFycmF5
QnVmZmVyVmlldywgdGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxGb3JtYXQsIHdpZHRoLCBoZWlnaHQs
IDEsIDAsIGZvcm1hdCwgdHlwZSkpOwpAQCAtNTgyNiwxMDAgKzU4MjYsMTI1IEBAIHZvaWQgV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybTRpKGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0
aW9uKiBsb2NhdGlvbiwKIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3Jt
MWZ2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgRmxvYXQzMkxpc3QmJiB2
KQogewotICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlVW5pZm9y
bVBhcmFtZXRlcnMoInVuaWZvcm0xZnYiLCBsb2NhdGlvbiwgdiwgMSwgMCwgdi5sZW5ndGgoKSkp
CisgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSkKICAgICAgICAgcmV0dXJuOwotCi0g
ICAgbV9jb250ZXh0LT51bmlmb3JtMWZ2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCB2Lmxlbmd0aCgp
LCB2LmRhdGEoKSk7CisgICAgYXV0byBkYXRhID0gdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycygi
dW5pZm9ybTFmdiIsIGxvY2F0aW9uLCB2LCAxKTsKKyAgICBpZiAoIWRhdGEpCisgICAgICAgIHJl
dHVybjsKKyAgICBtX2NvbnRleHQtPnVuaWZvcm0xZnYobG9jYXRpb24tPmxvY2F0aW9uKCksIGRh
dGEudmFsdWUoKSk7CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9y
bTJmdihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEZsb2F0MzJMaXN0JiYg
dikKIHsKLSAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVVuaWZv
cm1QYXJhbWV0ZXJzKCJ1bmlmb3JtMmZ2IiwgbG9jYXRpb24sIHYsIDIsIDAsIHYubGVuZ3RoKCkp
KQorICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCiAgICAgICAgIHJldHVybjsKLQot
ICAgIG1fY29udGV4dC0+dW5pZm9ybTJmdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgdi5sZW5ndGgo
KSAvIDIsIHYuZGF0YSgpKTsKKyAgICBhdXRvIGRhdGEgPSB2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0
ZXJzKCJ1bmlmb3JtMmZ2IiwgbG9jYXRpb24sIHYsIDIpOworICAgIGlmICghZGF0YSkKKyAgICAg
ICAgcmV0dXJuOworICAgIG1fY29udGV4dC0+dW5pZm9ybTJmdihsb2NhdGlvbi0+bG9jYXRpb24o
KSwgZGF0YS52YWx1ZSgpKTsKIH0KIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1
bmlmb3JtM2Z2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgRmxvYXQzMkxp
c3QmJiB2KQogewotICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRl
VW5pZm9ybVBhcmFtZXRlcnMoInVuaWZvcm0zZnYiLCBsb2NhdGlvbiwgdiwgMywgMCwgdi5sZW5n
dGgoKSkpCisgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSkKICAgICAgICAgcmV0dXJu
OwotCi0gICAgbV9jb250ZXh0LT51bmlmb3JtM2Z2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCB2Lmxl
bmd0aCgpIC8gMywgdi5kYXRhKCkpOworICAgIGF1dG8gZGF0YSA9IHZhbGlkYXRlVW5pZm9ybVBh
cmFtZXRlcnMoInVuaWZvcm0zZnYiLCBsb2NhdGlvbiwgdiwgMyk7CisgICAgaWYgKCFkYXRhKQor
ICAgICAgICByZXR1cm47CisgICAgbV9jb250ZXh0LT51bmlmb3JtM2Z2KGxvY2F0aW9uLT5sb2Nh
dGlvbigpLCBkYXRhLnZhbHVlKCkpOwogfQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U6OnVuaWZvcm00ZnYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBGbG9h
dDMyTGlzdCYmIHYpCiB7Ci0gICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhdmFs
aWRhdGVVbmlmb3JtUGFyYW1ldGVycygidW5pZm9ybTRmdiIsIGxvY2F0aW9uLCB2LCA0LCAwLCB2
Lmxlbmd0aCgpKSkKKyAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpKQogICAgICAgICBy
ZXR1cm47Ci0KLSAgICBtX2NvbnRleHQtPnVuaWZvcm00ZnYobG9jYXRpb24tPmxvY2F0aW9uKCks
IHYubGVuZ3RoKCkgLyA0LCB2LmRhdGEoKSk7CisgICAgYXV0byBkYXRhID0gdmFsaWRhdGVVbmlm
b3JtUGFyYW1ldGVycygidW5pZm9ybTRmdiIsIGxvY2F0aW9uLCB2LCA0KTsKKyAgICBpZiAoIWRh
dGEpCisgICAgICAgIHJldHVybjsKKyAgICBtX2NvbnRleHQtPnVuaWZvcm00ZnYobG9jYXRpb24t
PmxvY2F0aW9uKCksIGRhdGEudmFsdWUoKSk7CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZTo6dW5pZm9ybTFpdihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24s
IEludDMyTGlzdCYmIHYpCiB7Ci0gICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAh
dmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycygidW5pZm9ybTFpdiIsIGxvY2F0aW9uLCB2LCAxLCAw
LCB2Lmxlbmd0aCgpKSkKKyAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpKQorICAgICAg
ICByZXR1cm47CisgICAgYXV0byByZXN1bHQgPSB2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKCJ1
bmlmb3JtMWl2IiwgbG9jYXRpb24sIHYsIDEpOworICAgIGlmICghcmVzdWx0KQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBhdXRvIGRhdGEgPSB2LmRhdGEoKTsKLSAgICBhdXRvIGxlbmd0aCA9IHYu
bGVuZ3RoKCk7CisgICAgYXV0byBkYXRhID0gcmVzdWx0LnZhbHVlKCk7CiAKICAgICBpZiAobG9j
YXRpb24tPnR5cGUoKSA9PSBHcmFwaGljc0NvbnRleHRHTDo6U0FNUExFUl8yRCB8fCBsb2NhdGlv
bi0+dHlwZSgpID09IEdyYXBoaWNzQ29udGV4dEdMOjpTQU1QTEVSX0NVQkUpIHsKLSAgICAgICAg
Zm9yIChhdXRvIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKKyAgICAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBkYXRhLmJ1ZlNpemU7ICsraSkgewogICAgICAgICAgICAgaWYgKGRhdGFbaV0g
Pj0gc3RhdGljX2Nhc3Q8aW50PihtX3RleHR1cmVVbml0cy5zaXplKCkpKSB7Ci0gICAgICAgICAg
ICAgICAgTE9HKFdlYkdMLCAiVGV4dHVyZSB1bml0IHNpemU9JXp1LCB2WyVkXT0lZC4gTG9jYXRp
b24gdHlwZSA9ICUwNFguIiwgbV90ZXh0dXJlVW5pdHMuc2l6ZSgpLCBpLCBkYXRhW2ldLCBsb2Nh
dGlvbi0+dHlwZSgpKTsKKyAgICAgICAgICAgICAgICBMT0coV2ViR0wsICJUZXh0dXJlIHVuaXQg
c2l6ZT0lenUsIHZbJXp1XT0lZC4gTG9jYXRpb24gdHlwZSA9ICUwNFguIiwgbV90ZXh0dXJlVW5p
dHMuc2l6ZSgpLCBpLCBkYXRhW2ldLCBsb2NhdGlvbi0+dHlwZSgpKTsKICAgICAgICAgICAgICAg
ICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9WQUxVRSwgInVu
aWZvcm0xaXYiLCAiaW52YWxpZCB0ZXh0dXJlIHVuaXQiKTsKICAgICAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBtX2NvbnRleHQtPnVu
aWZvcm0xaXYobG9jYXRpb24tPmxvY2F0aW9uKCksIGxlbmd0aCwgZGF0YSk7CisgICAgbV9jb250
ZXh0LT51bmlmb3JtMWl2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCBkYXRhKTsKIH0KIAogdm9pZCBX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtMml2KGNvbnN0IFdlYkdMVW5pZm9ybUxv
Y2F0aW9uKiBsb2NhdGlvbiwgSW50MzJMaXN0JiYgdikKIHsKLSAgICBpZiAoaXNDb250ZXh0TG9z
dE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKCJ1bmlmb3JtMml2Iiwg
bG9jYXRpb24sIHYsIDIsIDAsIHYubGVuZ3RoKCkpKQorICAgIGlmIChpc0NvbnRleHRMb3N0T3JQ
ZW5kaW5nKCkpCiAgICAgICAgIHJldHVybjsKLQotICAgIG1fY29udGV4dC0+dW5pZm9ybTJpdihs
b2NhdGlvbi0+bG9jYXRpb24oKSwgdi5sZW5ndGgoKSAvIDIsIHYuZGF0YSgpKTsKKyAgICBhdXRv
IGRhdGEgPSB2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKCJ1bmlmb3JtMml2IiwgbG9jYXRpb24s
IHYsIDIpOworICAgIGlmICghZGF0YSkKKyAgICAgICAgcmV0dXJuOworICAgIG1fY29udGV4dC0+
dW5pZm9ybTJpdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgZGF0YS52YWx1ZSgpKTsKIH0KIAogdm9p
ZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtM2l2KGNvbnN0IFdlYkdMVW5pZm9y
bUxvY2F0aW9uKiBsb2NhdGlvbiwgSW50MzJMaXN0JiYgdikKIHsKLSAgICBpZiAoaXNDb250ZXh0
TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKCJ1bmlmb3JtM2l2
IiwgbG9jYXRpb24sIHYsIDMsIDAsIHYubGVuZ3RoKCkpKQorICAgIGlmIChpc0NvbnRleHRMb3N0
T3JQZW5kaW5nKCkpCiAgICAgICAgIHJldHVybjsKLQotICAgIG1fY29udGV4dC0+dW5pZm9ybTNp
dihsb2NhdGlvbi0+bG9jYXRpb24oKSwgdi5sZW5ndGgoKSAvIDMsIHYuZGF0YSgpKTsKKyAgICBh
dXRvIGRhdGEgPSB2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKCJ1bmlmb3JtM2l2IiwgbG9jYXRp
b24sIHYsIDMpOworICAgIGlmICghZGF0YSkKKyAgICAgICAgcmV0dXJuOworICAgIG1fY29udGV4
dC0+dW5pZm9ybTNpdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgZGF0YS52YWx1ZSgpKTsKIH0KIAog
dm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtNGl2KGNvbnN0IFdlYkdMVW5p
Zm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgSW50MzJMaXN0JiYgdikKIHsKLSAgICBpZiAoaXNDb250
ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKCJ1bmlmb3Jt
NGl2IiwgbG9jYXRpb24sIHYsIDQsIDAsIHYubGVuZ3RoKCkpKQorICAgIGlmIChpc0NvbnRleHRM
b3N0T3JQZW5kaW5nKCkpCiAgICAgICAgIHJldHVybjsKLQotICAgIG1fY29udGV4dC0+dW5pZm9y
bTRpdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgdi5sZW5ndGgoKSAvIDQsIHYuZGF0YSgpKTsKKyAg
ICBhdXRvIGRhdGEgPSB2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKCJ1bmlmb3JtNGl2IiwgbG9j
YXRpb24sIHYsIDQpOworICAgIGlmICghZGF0YSkKKyAgICAgICAgcmV0dXJuOworICAgIG1fY29u
dGV4dC0+dW5pZm9ybTRpdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgZGF0YS52YWx1ZSgpKTsKIH0K
IAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtTWF0cml4MmZ2KGNvbnN0
IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBG
bG9hdDMyTGlzdCYmIHYpCiB7Ci0gICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAh
dmFsaWRhdGVVbmlmb3JtTWF0cml4UGFyYW1ldGVycygidW5pZm9ybU1hdHJpeDJmdiIsIGxvY2F0
aW9uLCB0cmFuc3Bvc2UsIHYsIDQsIDAsIHYubGVuZ3RoKCkpKQorICAgIGlmIChpc0NvbnRleHRM
b3N0T3JQZW5kaW5nKCkpCisgICAgICAgIHJldHVybjsKKyAgICBhdXRvIGRhdGEgPSB2YWxpZGF0
ZVVuaWZvcm1NYXRyaXhQYXJhbWV0ZXJzKCJ1bmlmb3JtTWF0cml4MmZ2IiwgbG9jYXRpb24sIHRy
YW5zcG9zZSwgdiwgNCk7CisgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm47Ci0gICAgbV9j
b250ZXh0LT51bmlmb3JtTWF0cml4MmZ2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCB2Lmxlbmd0aCgp
IC8gNCwgdHJhbnNwb3NlLCB2LmRhdGEoKSk7CisgICAgbV9jb250ZXh0LT51bmlmb3JtTWF0cml4
MmZ2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCB0cmFuc3Bvc2UsIGRhdGEudmFsdWUoKSk7CiB9CiAK
IHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybU1hdHJpeDNmdihjb25zdCBX
ZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgRmxv
YXQzMkxpc3QmJiB2KQogewotICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZh
bGlkYXRlVW5pZm9ybU1hdHJpeFBhcmFtZXRlcnMoInVuaWZvcm1NYXRyaXgzZnYiLCBsb2NhdGlv
biwgdHJhbnNwb3NlLCB2LCA5LCAwLCB2Lmxlbmd0aCgpKSkKKyAgICBpZiAoaXNDb250ZXh0TG9z
dE9yUGVuZGluZygpKQorICAgICAgICByZXR1cm47CisgICAgYXV0byBkYXRhID0gdmFsaWRhdGVV
bmlmb3JtTWF0cml4UGFyYW1ldGVycygidW5pZm9ybU1hdHJpeDNmdiIsIGxvY2F0aW9uLCB0cmFu
c3Bvc2UsIHYsIDkpOworICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuOwotICAgIG1fY29u
dGV4dC0+dW5pZm9ybU1hdHJpeDNmdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgdi5sZW5ndGgoKSAv
IDksIHRyYW5zcG9zZSwgdi5kYXRhKCkpOworICAgIG1fY29udGV4dC0+dW5pZm9ybU1hdHJpeDNm
dihsb2NhdGlvbi0+bG9jYXRpb24oKSwgdHJhbnNwb3NlLCBkYXRhLnZhbHVlKCkpOwogfQogCiB2
b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm1NYXRyaXg0ZnYoY29uc3QgV2Vi
R0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEZsb2F0
MzJMaXN0JiYgdikKIHsKLSAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxp
ZGF0ZVVuaWZvcm1NYXRyaXhQYXJhbWV0ZXJzKCJ1bmlmb3JtTWF0cml4NGZ2IiwgbG9jYXRpb24s
IHRyYW5zcG9zZSwgdiwgMTYsIDAsIHYubGVuZ3RoKCkpKQorICAgIGlmIChpc0NvbnRleHRMb3N0
T3JQZW5kaW5nKCkpCisgICAgICAgIHJldHVybjsKKyAgICBhdXRvIGRhdGEgPSB2YWxpZGF0ZVVu
aWZvcm1NYXRyaXhQYXJhbWV0ZXJzKCJ1bmlmb3JtTWF0cml4NGZ2IiwgbG9jYXRpb24sIHRyYW5z
cG9zZSwgdiwgMTYpOworICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuOwotICAgIG1fY29u
dGV4dC0+dW5pZm9ybU1hdHJpeDRmdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgdi5sZW5ndGgoKSAv
IDE2LCB0cmFuc3Bvc2UsIHYuZGF0YSgpKTsKKyAgICBtX2NvbnRleHQtPnVuaWZvcm1NYXRyaXg0
ZnYobG9jYXRpb24tPmxvY2F0aW9uKCksIHRyYW5zcG9zZSwgZGF0YS52YWx1ZSgpKTsKIH0KIAog
dm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1c2VQcm9ncmFtKFdlYkdMUHJvZ3JhbSog
cHJvZ3JhbSkKQEAgLTcwNDcsNjIgKzcwNzIsNDggQEAgYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlOjp2YWxpZGF0ZUNhcGFiaWxpdHkoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBHQ0cK
ICAgICB9CiB9CiAKLWJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmFsaWRhdGVVbmlm
b3JtUGFyYW1ldGVycyhjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIGNvbnN0IFdlYkdMVW5pZm9y
bUxvY2F0aW9uKiBsb2NhdGlvbiwgY29uc3QgRmxvYXQzMkxpc3QmIHYsIEdDR0xzaXplaSByZXF1
aXJlZE1pblNpemUsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQotewot
ICAgIHJldHVybiB2YWxpZGF0ZVVuaWZvcm1NYXRyaXhQYXJhbWV0ZXJzKGZ1bmN0aW9uTmFtZSwg
bG9jYXRpb24sIGZhbHNlLCB2LmRhdGEoKSwgdi5sZW5ndGgoKSwgcmVxdWlyZWRNaW5TaXplLCBz
cmNPZmZzZXQsIHNyY0xlbmd0aCk7Ci19Ci0KLWJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZTo6dmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycyhjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIGNv
bnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgY29uc3QgSW50MzJMaXN0JiB2LCBH
Q0dMc2l6ZWkgcmVxdWlyZWRNaW5TaXplLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNy
Y0xlbmd0aCkKLXsKLSAgICByZXR1cm4gdmFsaWRhdGVVbmlmb3JtTWF0cml4UGFyYW1ldGVycyhm
dW5jdGlvbk5hbWUsIGxvY2F0aW9uLCBmYWxzZSwgdi5kYXRhKCksIHYubGVuZ3RoKCksIHJlcXVp
cmVkTWluU2l6ZSwgc3JjT2Zmc2V0LCBzcmNMZW5ndGgpOwotfQogCi1ib29sIFdlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMoY29uc3QgY2hhciogZnVu
Y3Rpb25OYW1lLCBjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIGNvbnN0IFVp
bnQzMkxpc3QmIHYsIEdDR0xzaXplaSByZXF1aXJlZE1pblNpemUsIEdDR0x1aW50IHNyY09mZnNl
dCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQotewotICAgIHJldHVybiB2YWxpZGF0ZVVuaWZvcm1NYXRy
aXhQYXJhbWV0ZXJzKGZ1bmN0aW9uTmFtZSwgbG9jYXRpb24sIGZhbHNlLCB2LmRhdGEoKSwgdi5s
ZW5ndGgoKSwgcmVxdWlyZWRNaW5TaXplLCBzcmNPZmZzZXQsIHNyY0xlbmd0aCk7Ci19Ci0KLWJv
b2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycyhj
b25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2Nh
dGlvbiwgdm9pZCogdiwgR0NHTHNpemVpIHNpemUsIEdDR0xzaXplaSByZXF1aXJlZE1pblNpemUs
IEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQotewotICAgIHJldHVybiB2
YWxpZGF0ZVVuaWZvcm1NYXRyaXhQYXJhbWV0ZXJzKGZ1bmN0aW9uTmFtZSwgbG9jYXRpb24sIGZh
bHNlLCB2LCBzaXplLCByZXF1aXJlZE1pblNpemUsIHNyY09mZnNldCwgc3JjTGVuZ3RoKTsKLX0K
LQotYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZVVuaWZvcm1NYXRyaXhQ
YXJhbWV0ZXJzKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgY29uc3QgV2ViR0xVbmlmb3JtTG9j
YXRpb24qIGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEZsb2F0MzJMaXN0
JiB2LCBHQ0dMc2l6ZWkgcmVxdWlyZWRNaW5TaXplLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1
aW50IHNyY0xlbmd0aCkKLXsKLSAgICByZXR1cm4gdmFsaWRhdGVVbmlmb3JtTWF0cml4UGFyYW1l
dGVycyhmdW5jdGlvbk5hbWUsIGxvY2F0aW9uLCB0cmFuc3Bvc2UsIHYuZGF0YSgpLCB2Lmxlbmd0
aCgpLCByZXF1aXJlZE1pblNpemUsIHNyY09mZnNldCwgc3JjTGVuZ3RoKTsKLX0KLQotYm9vbCBX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZVVuaWZvcm1NYXRyaXhQYXJhbWV0ZXJz
KGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxv
Y2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IHZvaWQqIHYsIEdDR0xzaXplaSBz
aXplLCBHQ0dMc2l6ZWkgcmVxdWlyZWRNaW5TaXplLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1
aW50IHNyY0xlbmd0aCkKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFR5cGVkTGlzdFR5
cGU+CitPcHRpb25hbDxHQ0dMU3Bhbjxjb25zdCBUPj4gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZTo6dmFsaWRhdGVVbmlmb3JtTWF0cml4UGFyYW1ldGVycyhjb25zdCBjaGFyKiBmdW5jdGlvbk5h
bWUsIGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJh
bnNwb3NlLCBjb25zdCBUeXBlZExpc3Q8VHlwZWRMaXN0VHlwZSwgVD4mIHZhbHVlcywgR0NHTHNp
emVpIHJlcXVpcmVkTWluU2l6ZSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5n
dGgpCiB7CiAgICAgaWYgKCF2YWxpZGF0ZVVuaWZvcm1Mb2NhdGlvbihmdW5jdGlvbk5hbWUsIGxv
Y2F0aW9uKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICghdikgeworICAgICAgICBy
ZXR1cm4geyB9OworICAgIGlmICghdmFsdWVzLmRhdGEoKSkgewogICAgICAgICBzeW50aGVzaXpl
R0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9WQUxVRSwgZnVuY3Rpb25OYW1lLCAi
bm8gYXJyYXkiKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4geyB9Owog
ICAgIH0KICAgICBpZiAodHJhbnNwb3NlICYmICFpc1dlYkdMMigpKSB7CiAgICAgICAgIHN5bnRo
ZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX1ZBTFVFLCBmdW5jdGlvbk5h
bWUsICJ0cmFuc3Bvc2Ugbm90IEZBTFNFIik7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgcmV0dXJuIHsgfTsKICAgICB9Ci0gICAgaWYgKHNyY09mZnNldCA+PSBzdGF0aWNfY2FzdDxH
Q0dMdWludD4oc2l6ZSkpIHsKKyAgICBpZiAoc3JjT2Zmc2V0ID49IHN0YXRpY19jYXN0PEdDR0x1
aW50Pih2YWx1ZXMubGVuZ3RoKCkpKSB7CiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBo
aWNzQ29udGV4dEdMOjpJTlZBTElEX1ZBTFVFLCBmdW5jdGlvbk5hbWUsICJpbnZhbGlkIHNyY09m
ZnNldCIpOwotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiB7IH07CiAgICAg
fQotICAgIEdDR0xzaXplaSBhY3R1YWxTaXplID0gc2l6ZSAtIHNyY09mZnNldDsKKyAgICBHQ0dM
c2l6ZWkgYWN0dWFsU2l6ZSA9IHZhbHVlcy5sZW5ndGgoKSAtIHNyY09mZnNldDsKICAgICBpZiAo
c3JjTGVuZ3RoID4gMCkgewogICAgICAgICBpZiAoc3JjTGVuZ3RoID4gc3RhdGljX2Nhc3Q8R0NH
THVpbnQ+KGFjdHVhbFNpemUpKSB7CiAgICAgICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFw
aGljc0NvbnRleHRHTDo6SU5WQUxJRF9WQUxVRSwgZnVuY3Rpb25OYW1lLCAiaW52YWxpZCBzcmNP
ZmZzZXQgKyBzcmNMZW5ndGgiKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
ICAgIHJldHVybiB7IH07CiAgICAgICAgIH0KICAgICAgICAgYWN0dWFsU2l6ZSA9IHNyY0xlbmd0
aDsKICAgICB9CiAgICAgaWYgKGFjdHVhbFNpemUgPCByZXF1aXJlZE1pblNpemUgfHwgKGFjdHVh
bFNpemUgJSByZXF1aXJlZE1pblNpemUpKSB7CiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdy
YXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX1ZBTFVFLCBmdW5jdGlvbk5hbWUsICJpbnZhbGlkIHNp
emUiKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4geyB9OwogICAgIH0K
LSAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gbWFrZUdDR0xTcGFuKHZhbHVlcy5kYXRhKCkg
KyBzcmNPZmZzZXQsIGFjdHVhbFNpemUpOwogfQogCit0ZW1wbGF0ZQorT3B0aW9uYWw8R0NHTFNw
YW48Y29uc3QgR0NHTHVpbnQ+PiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZVVu
aWZvcm1NYXRyaXhQYXJhbWV0ZXJzPEdDR0x1aW50LCBVaW50MzJBcnJheT4oY29uc3QgY2hhciog
ZnVuY3Rpb25OYW1lLCBjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiosIEdDR0xib29sZWFuIHRy
YW5zcG9zZSwgY29uc3QgVHlwZWRMaXN0PFVpbnQzMkFycmF5LCB1aW50MzJfdD4mIHZhbHVlcywg
R0NHTHNpemVpIHJlcXVpcmVkTWluU2l6ZSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBz
cmNMZW5ndGgpOworCit0ZW1wbGF0ZQorT3B0aW9uYWw8R0NHTFNwYW48Y29uc3QgR0NHTGludD4+
IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlVW5pZm9ybU1hdHJpeFBhcmFtZXRl
cnM8R0NHTGludCwgSW50MzJBcnJheT4oY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBjb25zdCBX
ZWJHTFVuaWZvcm1Mb2NhdGlvbiosIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgVHlwZWRM
aXN0PEludDMyQXJyYXksIGludDMyX3Q+JiB2YWx1ZXMsIEdDR0xzaXplaSByZXF1aXJlZE1pblNp
emUsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKTsKKwordGVtcGxhdGUK
K09wdGlvbmFsPEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4+IFdlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2U6OnZhbGlkYXRlVW5pZm9ybU1hdHJpeFBhcmFtZXRlcnM8R0NHTGZsb2F0LCBGbG9hdDMy
QXJyYXk+KGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRp
b24qLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IFR5cGVkTGlzdDxGbG9hdDMyQXJyYXks
IGZsb2F0PiYgdmFsdWVzLCBHQ0dMc2l6ZWkgcmVxdWlyZWRNaW5TaXplLCBHQ0dMdWludCBzcmNP
ZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCk7CisKIFdlYkdMQnVmZmVyKiBXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlOjp2YWxpZGF0ZUJ1ZmZlckRhdGFQYXJhbWV0ZXJzKGNvbnN0IGNoYXIqIGZ1
bmN0aW9uTmFtZSwgR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSB1c2FnZSkKIHsKICAgICBXZWJH
TEJ1ZmZlciogYnVmZmVyID0gdmFsaWRhdGVCdWZmZXJEYXRhVGFyZ2V0KGZ1bmN0aW9uTmFtZSwg
dGFyZ2V0KTsKQEAgLTcyNDYsMTYgKzcyNTcsMTYgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlOjp2ZXJ0ZXhBdHRyaWJmdkltcGwoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBHQ0cK
ICAgICB7CiAgICAgICAgIHN3aXRjaCAoZXhwZWN0ZWRTaXplKSB7CiAgICAgICAgIGNhc2UgMToK
LSAgICAgICAgICAgIG1fY29udGV4dC0+dmVydGV4QXR0cmliMWZ2KGluZGV4LCBkYXRhKTsKKyAg
ICAgICAgICAgIG1fY29udGV4dC0+dmVydGV4QXR0cmliMWZ2KGluZGV4LCBtYWtlR0NHTFNwYW48
MT4oZGF0YSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgMjoKLSAgICAgICAg
ICAgIG1fY29udGV4dC0+dmVydGV4QXR0cmliMmZ2KGluZGV4LCBkYXRhKTsKKyAgICAgICAgICAg
IG1fY29udGV4dC0+dmVydGV4QXR0cmliMmZ2KGluZGV4LCBtYWtlR0NHTFNwYW48Mj4oZGF0YSkp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgMzoKLSAgICAgICAgICAgIG1fY29u
dGV4dC0+dmVydGV4QXR0cmliM2Z2KGluZGV4LCBkYXRhKTsKKyAgICAgICAgICAgIG1fY29udGV4
dC0+dmVydGV4QXR0cmliM2Z2KGluZGV4LCBtYWtlR0NHTFNwYW48Mz4oZGF0YSkpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgNDoKLSAgICAgICAgICAgIG1fY29udGV4dC0+dmVy
dGV4QXR0cmliNGZ2KGluZGV4LCBkYXRhKTsKKyAgICAgICAgICAgIG1fY29udGV4dC0+dmVydGV4
QXR0cmliNGZ2KGluZGV4LCBtYWtlR0NHTFNwYW48ND4oZGF0YSkpOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KICAgICB9CkBAIC03MzMwLDcgKzczNDEsNyBAQCBPcHRpb25hbDxib29s
PiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpzaW11bGF0ZVZlcnRleEF0dHJpYjAoR0NHTHVp
bnQgbnVtVmVydAogCiAgICAgaWYgKGJ1ZmZlckRhdGFTaXplID4gbV92ZXJ0ZXhBdHRyaWIwQnVm
ZmVyU2l6ZSkgewogICAgICAgICBtX2NvbnRleHQtPm1vdmVFcnJvcnNUb1N5bnRoZXRpY0Vycm9y
TGlzdCgpOwotICAgICAgICBtX2NvbnRleHQtPmJ1ZmZlckRhdGEoR3JhcGhpY3NDb250ZXh0R0w6
OkFSUkFZX0JVRkZFUiwgYnVmZmVyRGF0YVNpemUsIDAsIEdyYXBoaWNzQ29udGV4dEdMOjpEWU5B
TUlDX0RSQVcpOworICAgICAgICBtX2NvbnRleHQtPmJ1ZmZlckRhdGEoR3JhcGhpY3NDb250ZXh0
R0w6OkFSUkFZX0JVRkZFUiwgYnVmZmVyRGF0YVNpemUsIEdyYXBoaWNzQ29udGV4dEdMOjpEWU5B
TUlDX0RSQVcpOwogICAgICAgICBpZiAobV9jb250ZXh0LT5nZXRFcnJvcigpICE9IEdyYXBoaWNz
Q29udGV4dEdMOjpOT19FUlJPUikgewogICAgICAgICAgICAgLy8gV2Ugd2VyZSB1bmFibGUgdG8g
Y3JlYXRlIGEgYnVmZmVyLgogICAgICAgICAgICAgbV92ZXJ0ZXhBdHRyaWIwVXNlZEJlZm9yZSA9
IGZhbHNlOwpAQCAtNzM2NSw3ICs3Mzc2LDcgQEAgT3B0aW9uYWw8Ym9vbD4gV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6c2ltdWxhdGVWZXJ0ZXhBdHRyaWIwKEdDR0x1aW50IG51bVZlcnQKICAg
ICAgICAgbV92ZXJ0ZXhBdHRyaWIwQnVmZmVyVmFsdWVbMl0gPSBhdHRyaWJWYWx1ZS5mVmFsdWVb
Ml07CiAgICAgICAgIG1fdmVydGV4QXR0cmliMEJ1ZmZlclZhbHVlWzNdID0gYXR0cmliVmFsdWUu
ZlZhbHVlWzNdOwogICAgICAgICBtX2ZvcmNlQXR0cmliMEJ1ZmZlclJlZmlsbCA9IGZhbHNlOwot
ICAgICAgICBtX2NvbnRleHQtPmJ1ZmZlclN1YkRhdGEoR3JhcGhpY3NDb250ZXh0R0w6OkFSUkFZ
X0JVRkZFUiwgMCwgYnVmZmVyRGF0YVNpemUsIGJ1ZmZlckRhdGEuZ2V0KCkpOworICAgICAgICBt
X2NvbnRleHQtPmJ1ZmZlclN1YkRhdGEoR3JhcGhpY3NDb250ZXh0R0w6OkFSUkFZX0JVRkZFUiwg
MCwgbWFrZUdDR0xTcGFuKGJ1ZmZlckRhdGEuZ2V0KCksIGJ1ZmZlckRhdGFTaXplKSk7CiAgICAg
fQogICAgIG1fY29udGV4dC0+dmVydGV4QXR0cmliUG9pbnRlcigwLCA0LCBHcmFwaGljc0NvbnRl
eHRHTDo6RkxPQVQsIDAsIDAsIDApOwogICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oCmluZGV4
IGE3MWQwMzZhYTBkZWE1MmI0NTc5MDlmYmZmZGMzYWRmODBmNTEwY2MuLjAwNzgyOGY3ZmQ1NzNl
YTUwMDU5NDBlZDU2ZTQzOTc1MTU3NDNlNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmgKQEAgLTEwMDUsMTIgKzEw
MDUsMTMgQEAgcHJvdGVjdGVkOgogCiAgICAgLy8gSGVscGVyIGZ1bmN0aW9uIHRvIHZhbGlkYXRl
IGlucHV0IHBhcmFtZXRlcnMgZm9yIHVuaWZvcm0gZnVuY3Rpb25zLgogICAgIGJvb2wgdmFsaWRh
dGVVbmlmb3JtTG9jYXRpb24oY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBjb25zdCBXZWJHTFVu
aWZvcm1Mb2NhdGlvbiopOwotICAgIGJvb2wgdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycyhjb25z
dCBjaGFyKiBmdW5jdGlvbk5hbWUsIGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiwgY29uc3Qg
RmxvYXQzMkxpc3QmLCBHQ0dMc2l6ZWkgcmVxdWlyZWRNaW5TaXplLCBHQ0dMdWludCBzcmNPZmZz
ZXQsIEdDR0x1aW50IHNyY0xlbmd0aCk7Ci0gICAgYm9vbCB2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0
ZXJzKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24q
LCBjb25zdCBJbnQzMkxpc3QmLCBHQ0dMc2l6ZWkgcmVxdWlyZWRNaW5TaXplLCBHQ0dMdWludCBz
cmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCk7Ci0gICAgYm9vbCB2YWxpZGF0ZVVuaWZvcm1Q
YXJhbWV0ZXJzKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgY29uc3QgV2ViR0xVbmlmb3JtTG9j
YXRpb24qLCBjb25zdCBVaW50MzJMaXN0JiwgR0NHTHNpemVpIHJlcXVpcmVkTWluU2l6ZSwgR0NH
THVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpOwotICAgIGJvb2wgdmFsaWRhdGVV
bmlmb3JtUGFyYW1ldGVycyhjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIGNvbnN0IFdlYkdMVW5p
Zm9ybUxvY2F0aW9uKiwgdm9pZCosIEdDR0xzaXplaSwgR0NHTHNpemVpIHJlcXVpcmVkTWluU2l6
ZSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpOwotICAgIGJvb2wgdmFs
aWRhdGVVbmlmb3JtTWF0cml4UGFyYW1ldGVycyhjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIGNv
bnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBG
bG9hdDMyTGlzdCYsIEdDR0xzaXplaSByZXF1aXJlZE1pblNpemUsIEdDR0x1aW50IHNyY09mZnNl
dCwgR0NHTHVpbnQgc3JjTGVuZ3RoKTsKLSAgICBib29sIHZhbGlkYXRlVW5pZm9ybU1hdHJpeFBh
cmFtZXRlcnMoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBjb25zdCBXZWJHTFVuaWZvcm1Mb2Nh
dGlvbiosIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3Qgdm9pZCosIEdDR0xzaXplaSwgR0NH
THNpemVpIHJlcXVpcmVkTWluU2l6ZSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNM
ZW5ndGgpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFR5cGVkTGlzdFR5cGU+
CisgICAgT3B0aW9uYWw8R0NHTFNwYW48Y29uc3QgVD4+IHZhbGlkYXRlVW5pZm9ybVBhcmFtZXRl
cnMoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiog
bG9jYXRpb24sIGNvbnN0IFR5cGVkTGlzdDxUeXBlZExpc3RUeXBlLCBUPiYgdmFsdWVzLCBHQ0dM
c2l6ZWkgcmVxdWlyZWRNaW5TaXplLCBHQ0dMdWludCBzcmNPZmZzZXQgPSAwLCBHQ0dMdWludCBz
cmNMZW5ndGggPSAwKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHZhbGlkYXRlVW5pZm9ybU1hdHJp
eFBhcmFtZXRlcnMoZnVuY3Rpb25OYW1lLCBsb2NhdGlvbiwgZmFsc2UsIHZhbHVlcywgcmVxdWly
ZWRNaW5TaXplLCBzcmNPZmZzZXQsIHNyY0xlbmd0aCk7CisgICAgfQorICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFQsIHR5cGVuYW1lIFR5cGVkTGlzdFR5cGU+CisgICAgT3B0aW9uYWw8R0NHTFNwYW48
Y29uc3QgVD4+IHZhbGlkYXRlVW5pZm9ybU1hdHJpeFBhcmFtZXRlcnMoY29uc3QgY2hhciogZnVu
Y3Rpb25OYW1lLCBjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiosIEdDR0xib29sZWFuIHRyYW5z
cG9zZSwgY29uc3QgVHlwZWRMaXN0PFR5cGVkTGlzdFR5cGUsIFQ+JiwgR0NHTHNpemVpIHJlcXVp
cmVkTWluU2l6ZSwgR0NHTHVpbnQgc3JjT2Zmc2V0ID0gMCwgR0NHTHVpbnQgc3JjTGVuZ3RoID0g
MCk7CiAKICAgICAvLyBIZWxwZXIgZnVuY3Rpb24gdG8gdmFsaWRhdGUgcGFyYW1ldGVycyBmb3Ig
YnVmZmVyRGF0YS4KICAgICAvLyBSZXR1cm4gdGhlIGN1cnJlbnQgYm91bmQgYnVmZmVyIHRvIHRh
cmdldCwgb3IgMCBpZiBwYXJhbWV0ZXJzIGFyZSBpbnZhbGlkLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRXh0ZW5zaW9uc0dMLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNpb25zR0wuaAppbmRleCBiYTg2NWIzMzA4ZTZjOTQ1
ODIyMTIyMzc3OTZkNmZkNTc3NDg0N2Y4Li44ZjY4NDA2MWZhNmRkYjc2M2E3NWI0OWYzODJlNTk1
NTZkOTkyZmRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9F
eHRlbnNpb25zR0wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRl
bnNpb25zR0wuaApAQCAtMjk4LDcgKzI5OCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQg
cG9wR3JvdXBNYXJrZXJFWFQodm9pZCkgPSAwOwogCiAgICAgLy8gR0xfQVJCX2RyYXdfYnVmZmVy
cyAvIEdMX0VYVF9kcmF3X2J1ZmZlcnMKLSAgICB2aXJ0dWFsIHZvaWQgZHJhd0J1ZmZlcnNFWFQo
R0NHTHNpemVpIG4sIGNvbnN0IEdDR0xlbnVtKiBidWZzKSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IGRyYXdCdWZmZXJzRVhUKEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVtPiBidWZzKSA9IDA7CiAKICAg
ICAvLyBHTF9BTkdMRV9pbnN0YW5jZWRfYXJyYXlzCiAgICAgdmlydHVhbCB2b2lkIGRyYXdBcnJh
eXNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHNpemVpIGNvdW50
LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSA9IDA7CkBAIC0zMDcsMTcgKzMwNywxNyBAQCBwdWJsaWM6
CiAKICAgICAvLyBHTF9BTkdMRV9yb2J1c3RfY2xpZW50X21lbW9yeQogICAgIHZpcnR1YWwgdm9p
ZCByZWFkUGl4ZWxzUm9idXN0QU5HTEUoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3
aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xzaXplaSogY29sdW1ucywg
R0NHTHNpemVpKiByb3dzLCBHQ0dMdm9pZCogcGl4ZWxzKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lk
IHRleEltYWdlMkRSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdD
R0xpbnQgaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwg
R0NHTGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIGNvbnN0IEdDR0x2b2lkKiBwaXhlbHMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
dGV4SW1hZ2UyRFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NH
TGludCBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBH
Q0dMaW50IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bhbjxj
b25zdCBHQ0dMdm9pZD4gcGl4ZWxzKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHRleFBhcmFtZXRl
cmZ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIGNvbnN0IEdDR0xmbG9hdCogcGFyYW1zKSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IHRleFBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFt
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQqIHBhcmFtcykgPSAwOwotICAgIHZp
cnR1YWwgdm9pZCB0ZXhTdWJJbWFnZTJEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
aW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdp
ZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdD
R0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMdm9pZCogcGl4ZWxzKSA9IDA7Ci0gICAgdmlydHVh
bCB2b2lkIGNvbXByZXNzZWRUZXhJbWFnZTJEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBH
Q0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NH
THNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0x2b2lkKiBkYXRhKSA9IDA7Ci0gICAgdmlydHVhbCB2
b2lkIGNvbXByZXNzZWRUZXhTdWJJbWFnZTJEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTHNpemVp
IHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFn
ZVNpemUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMdm9pZCogZGF0YSkgPSAwOwotICAg
IHZpcnR1YWwgdm9pZCBjb21wcmVzc2VkVGV4SW1hZ2UzRFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRh
cmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3
aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMaW50IGJvcmRlciwg
R0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0x2b2lkKiBk
YXRhKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGNvbXByZXNzZWRUZXhTdWJJbWFnZTNEUm9idXN0
QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdD
R0xpbnQgeW9mZnNldCwgR0NHTGludCB6b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXpl
aSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMc2l6ZWkgaW1h
Z2VTaXplLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTHZvaWQqIGRhdGEpID0gMDsKLQot
ICAgIHZpcnR1YWwgdm9pZCB0ZXhJbWFnZTNEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMaW50IGxldmVsLCBHQ0dMaW50IGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdD
R0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGludCBib3JkZXIsIEdDR0xlbnVt
IGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0x2b2lk
KiBwaXhlbHMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdGV4U3ViSW1hZ2UzRFJvYnVzdEFOR0xF
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50
IHlvZmZzZXQsIEdDR0xpbnQgem9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVp
Z2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NH
THNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0x2b2lkKiBwaXhlbHMpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgdGV4U3ViSW1hZ2UyRFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBs
ZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwg
R0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bh
bjxjb25zdCBHQ0dMdm9pZD4gcGl4ZWxzKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNvbXByZXNz
ZWRUZXhJbWFnZTJEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBH
Q0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0
LCBHQ0dMaW50IGJvcmRlciwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTFNwYW48Y29uc3QgR0NH
THZvaWQ+IGRhdGEpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY29tcHJlc3NlZFRleFN1YkltYWdl
MkRSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9m
ZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQs
IEdDR0xlbnVtIGZvcm1hdCwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTFNwYW48Y29uc3QgR0NH
THZvaWQ+IGRhdGEpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY29tcHJlc3NlZFRleEltYWdlM0RS
b2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVy
bmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBk
ZXB0aCwgR0NHTGludCBib3JkZXIsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xTcGFuPGNvbnN0
IEdDR0x2b2lkPiBkYXRhKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNvbXByZXNzZWRUZXhTdWJJ
bWFnZTNEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50
IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTGludCB6b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lk
dGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGVudW0gZm9ybWF0LCBH
Q0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gZGF0YSkgPSAwOwor
CisgICAgdmlydHVhbCB2b2lkIHRleEltYWdlM0RSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQs
IEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwg
R0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMaW50IGJvcmRlciwgR0NHTGVu
dW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gcGl4ZWxz
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHRleFN1YkltYWdlM0RSb2J1c3RBTkdMRShHQ0dMZW51
bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0
LCBHQ0dMaW50IHpvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NH
THNpemVpIGRlcHRoLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPGNv
bnN0IEdDR0x2b2lkPiBwaXhlbHMpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0UXVlcnlpdlJv
YnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZT
aXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIGdldFF1ZXJ5T2JqZWN0dWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVt
IHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1aW50KiBw
YXJhbXMpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0QnVmZmVyUG9pbnRlcnZSb2J1c3RBTkdM
RShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NH
THNpemVpKiBsZW5ndGgsIEdDR0x2b2lkKiogcGFyYW1zKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaAppbmRleCAwYTcx
NTQwY2U4MDIwZmQ5ZjU4MTY4NjAzZjY3NjliOTQ0NTIyNDE1Li44ZWIyY2VmYzczNzhkNDUwNzhk
MTkwYTVmMTEzZmI4MjNmMWRiOTZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmgKQEAgLTM3Myw3ICszNzMsNyBAQCBwdWJs
aWM6CiAgICAgICAgIFVOUEFDS19DT0xPUlNQQUNFX0NPTlZFUlNJT05fV0VCR0wgPSAweDkyNDMs
CiAgICAgICAgIEJST1dTRVJfREVGQVVMVF9XRUJHTCA9IDB4OTI0NCwKICAgICAgICAgVkVSVEVY
X0FUVFJJQl9BUlJBWV9ESVZJU09SX0FOR0xFID0gMHg4OEZFLAotICAgICAgICAKKwogICAgICAg
ICAvLyBXZWJHTDIgY29uc3RhbnRzCiAgICAgICAgIFJFQURfQlVGRkVSID0gMHgwQzAyLAogICAg
ICAgICBVTlBBQ0tfUk9XX0xFTkdUSCA9IDB4MENGMiwKQEAgLTEwNjMsNDkgKzEwNjMsNDkgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB0ZXhQYXJhbWV0ZXJpKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGVudW0gcG5hbWUsIEdDR0xpbnQgcGFyYW0pID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCB1
bmlmb3JtMWYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGZsb2F0IHgpID0gMDsKLSAgICB2aXJ0dWFs
IHZvaWQgdW5pZm9ybTFmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWksIGNvbnN0IEdDR0xm
bG9hdCogdikgPSAwOworICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtMWZ2KEdDR0xpbnQgbG9jYXRp
b24sIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gdikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB1
bmlmb3JtMWkoR0NHTGludCBsb2NhdGlvbiwgR0NHTGludCB4KSA9IDA7Ci0gICAgdmlydHVhbCB2
b2lkIHVuaWZvcm0xaXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpLCBjb25zdCBHQ0dMaW50
KiB2KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVuaWZvcm0xaXYoR0NHTGludCBsb2NhdGlvbiwg
R0NHTFNwYW48Y29uc3QgR0NHTGludD4gdikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB1bmlmb3Jt
MmYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGZsb2F0IHgsIEdDR0xmbG9hdCB5KSA9IDA7Ci0gICAg
dmlydHVhbCB2b2lkIHVuaWZvcm0yZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpLCBjb25z
dCBHQ0dMZmxvYXQqIHYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybTJmdihHQ0dMaW50
IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IHYpID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgdW5pZm9ybTJpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xpbnQgeCwgR0NHTGludCB5KSA9
IDA7Ci0gICAgdmlydHVhbCB2b2lkIHVuaWZvcm0yaXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTHNp
emVpLCBjb25zdCBHQ0dMaW50KiB2KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVuaWZvcm0yaXYo
R0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gdikgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCB1bmlmb3JtM2YoR0NHTGludCBsb2NhdGlvbiwgR0NHTGZsb2F0IHgsIEdDR0xm
bG9hdCB5LCBHQ0dMZmxvYXQgeikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtM2Z2KEdD
R0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSwgY29uc3QgR0NHTGZsb2F0KiB2KSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIHVuaWZvcm0zZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3Qg
R0NHTGZsb2F0PiB2KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHVuaWZvcm0zaShHQ0dMaW50IGxv
Y2F0aW9uLCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTGludCB6KSA9IDA7Ci0gICAgdmlydHVh
bCB2b2lkIHVuaWZvcm0zaXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpLCBjb25zdCBHQ0dM
aW50KiB2KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVuaWZvcm0zaXYoR0NHTGludCBsb2NhdGlv
biwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gdikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB1bmlm
b3JtNGYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGZsb2F0IHgsIEdDR0xmbG9hdCB5LCBHQ0dMZmxv
YXQgeiwgR0NHTGZsb2F0IHcpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybTRmdihHQ0dM
aW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWksIGNvbnN0IEdDR0xmbG9hdCogdikgPSAwOworICAgIHZp
cnR1YWwgdm9pZCB1bmlmb3JtNGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdD
R0xmbG9hdD4gdikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtNGkoR0NHTGludCBsb2Nh
dGlvbiwgR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xpbnQgeiwgR0NHTGludCB3KSA9IDA7Ci0g
ICAgdmlydHVhbCB2b2lkIHVuaWZvcm00aXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpLCBj
b25zdCBHQ0dMaW50KiB2KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHVuaWZvcm1NYXRyaXgyZnYo
R0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0
IEdDR0xmbG9hdCogdmFsdWUpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybU1hdHJpeDNm
dihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWksIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29u
c3QgR0NHTGZsb2F0KiB2YWx1ZSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtTWF0cml4
NGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBj
b25zdCBHQ0dMZmxvYXQqIHZhbHVlKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVuaWZvcm00aXYo
R0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gdikgPSAwOworICAgIHZp
cnR1YWwgdm9pZCB1bmlmb3JtTWF0cml4MmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFu
IHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiB2YWx1ZSkgPSAwOworICAgIHZp
cnR1YWwgdm9pZCB1bmlmb3JtTWF0cml4M2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFu
IHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiB2YWx1ZSkgPSAwOworICAgIHZp
cnR1YWwgdm9pZCB1bmlmb3JtTWF0cml4NGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFu
IHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiB2YWx1ZSkgPSAwOwogCiAgICAg
dmlydHVhbCB2b2lkIHVzZVByb2dyYW0oUGxhdGZvcm1HTE9iamVjdCkgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCB2YWxpZGF0ZVByb2dyYW0oUGxhdGZvcm1HTE9iamVjdCkgPSAwOwogCiAgICAgdmly
dHVhbCB2b2lkIHZlcnRleEF0dHJpYjFmKEdDR0x1aW50IGluZGV4LCBHQ0dMZmxvYXQgeCkgPSAw
OwotICAgIHZpcnR1YWwgdm9pZCB2ZXJ0ZXhBdHRyaWIxZnYoR0NHTHVpbnQgaW5kZXgsIGNvbnN0
IEdDR0xmbG9hdCogdmFsdWVzKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHZlcnRleEF0dHJpYjFm
dihHQ0dMdWludCBpbmRleCwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0LCAxPiB2YWx1ZXMpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgdmVydGV4QXR0cmliMmYoR0NHTHVpbnQgaW5kZXgsIEdDR0xm
bG9hdCB4LCBHQ0dMZmxvYXQgeSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB2ZXJ0ZXhBdHRyaWIy
ZnYoR0NHTHVpbnQgaW5kZXgsIGNvbnN0IEdDR0xmbG9hdCogdmFsdWVzKSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIHZlcnRleEF0dHJpYjJmdihHQ0dMdWludCBpbmRleCwgR0NHTFNwYW48Y29uc3Qg
R0NHTGZsb2F0LCAyPiB2YWx1ZXMpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdmVydGV4QXR0cmli
M2YoR0NHTHVpbnQgaW5kZXgsIEdDR0xmbG9hdCB4LCBHQ0dMZmxvYXQgeSwgR0NHTGZsb2F0IHop
ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdmVydGV4QXR0cmliM2Z2KEdDR0x1aW50IGluZGV4LCBj
b25zdCBHQ0dMZmxvYXQqIHZhbHVlcykgPSAwOworICAgIHZpcnR1YWwgdm9pZCB2ZXJ0ZXhBdHRy
aWIzZnYoR0NHTHVpbnQgaW5kZXgsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdCwgMz4gdmFsdWVz
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHZlcnRleEF0dHJpYjRmKEdDR0x1aW50IGluZGV4LCBH
Q0dMZmxvYXQgeCwgR0NHTGZsb2F0IHksIEdDR0xmbG9hdCB6LCBHQ0dMZmxvYXQgdykgPSAwOwot
ICAgIHZpcnR1YWwgdm9pZCB2ZXJ0ZXhBdHRyaWI0ZnYoR0NHTHVpbnQgaW5kZXgsIGNvbnN0IEdD
R0xmbG9hdCogdmFsdWVzKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHZlcnRleEF0dHJpYjRmdihH
Q0dMdWludCBpbmRleCwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0LCA0PiB2YWx1ZXMpID0gMDsK
IAogICAgIHZpcnR1YWwgdm9pZCB2ZXJ0ZXhBdHRyaWJQb2ludGVyKEdDR0x1aW50IGluZGV4LCBH
Q0dMaW50IHNpemUsIEdDR0xlbnVtIHR5cGUsIEdDR0xib29sZWFuIG5vcm1hbGl6ZWQsIEdDR0xz
aXplaSBzdHJpZGUsIEdDR0xpbnRwdHIgb2Zmc2V0KSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQg
dmlld3BvcnQoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVp
IGhlaWdodCkgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIGJ1ZmZlckRhdGEoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMc2l6ZWlwdHIsIEdDR0xlbnVtIHVzYWdlKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lk
IGJ1ZmZlckRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWlwdHIsIGNvbnN0IEdDR0x2b2lk
KiBkYXRhLCBHQ0dMZW51bSB1c2FnZSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBidWZmZXJTdWJE
YXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludHB0ciBvZmZzZXQsIEdDR0xzaXplaXB0ciwgY29u
c3QgR0NHTHZvaWQqIGRhdGEpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgYnVmZmVyRGF0YShHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRhLCBHQ0dMZW51bSB1c2Fn
ZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBidWZmZXJTdWJEYXRhKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGludHB0ciBvZmZzZXQsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRhKSA9IDA7CiAK
ICAgICB2aXJ0dWFsIHZvaWQgcmVhZFBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNp
emVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5
cGUsIEdDR0x2b2lkKiBkYXRhKSA9IDA7CiAKLSAgICB2aXJ0dWFsIGJvb2wgdGV4SW1hZ2UyRChH
Q0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBH
Q0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51
bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIGNvbnN0IEdDR0x2b2lkKiBwaXhlbHMpID0gMDsKLSAg
ICB2aXJ0dWFsIHZvaWQgdGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2
ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdD
R0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgY29uc3QgR0NH
THZvaWQqIHBpeGVscykgPSAwOworICAgIHZpcnR1YWwgYm9vbCB0ZXhJbWFnZTJEKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXpl
aSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1h
dCwgR0NHTGVudW0gdHlwZSwgIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBwaXhlbHMpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgdGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQg
bGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgs
IEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTFNw
YW48Y29uc3QgR0NHTHZvaWQ+IHBpeGVscykgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIGRyYXdB
cnJheXNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHNpemVpIGNv
dW50LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRyYXdFbGVt
ZW50c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5
cGUsIEdDR0xpbnRwdHIgb2Zmc2V0LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSA9IDA7CkBAIC0xMTI1
LDggKzExMjUsOCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgYmxpdEZyYW1lYnVmZmVy
KEdDR0xpbnQgc3JjWDAsIEdDR0xpbnQgc3JjWTAsIEdDR0xpbnQgc3JjWDEsIEdDR0xpbnQgc3Jj
WTEsIEdDR0xpbnQgZHN0WDAsIEdDR0xpbnQgZHN0WTAsIEdDR0xpbnQgZHN0WDEsIEdDR0xpbnQg
ZHN0WTEsIEdDR0xiaXRmaWVsZCBtYXNrLCBHQ0dMZW51bSBmaWx0ZXIpID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgZnJhbWVidWZmZXJUZXh0dXJlTGF5ZXIoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51
bSBhdHRhY2htZW50LCBQbGF0Zm9ybUdMT2JqZWN0IHRleHR1cmUsIEdDR0xpbnQgbGV2ZWwsIEdD
R0xpbnQgbGF5ZXIpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZUZyYW1lYnVmZmVy
KEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpIG51bUF0dGFjaG1lbnRzLCBjb25zdCBHQ0dMZW51
bSogYXR0YWNobWVudHMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZVN1YkZyYW1l
YnVmZmVyKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpIG51bUF0dGFjaG1lbnRzLCBjb25zdCBH
Q0dMZW51bSogYXR0YWNobWVudHMsIEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lk
dGgsIEdDR0xzaXplaSBoZWlnaHQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZUZy
YW1lYnVmZmVyKEdDR0xlbnVtIHRhcmdldCwgR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+IGF0dGFj
aG1lbnRzKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGVTdWJGcmFtZWJ1ZmZlcihH
Q0dMZW51bSB0YXJnZXQsIEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVtPiBhdHRhY2htZW50cywgR0NH
TGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCByZWFkQnVmZmVyKEdDR0xlbnVtIHNyYykgPSAwOwogCiAgICAg
Ly8gZ2V0SW50ZXJuYWxGb3JtYXRQYXJhbWV0ZXIKQEAgLTExNDgsMjggKzExNDgsMjggQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtMnVpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0x1
aW50IHYwLCBHQ0dMdWludCB2MSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtM3VpKEdD
R0xpbnQgbG9jYXRpb24sIEdDR0x1aW50IHYwLCBHQ0dMdWludCB2MSwgR0NHTHVpbnQgdjIpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybTR1aShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMdWlu
dCB2MCwgR0NHTHVpbnQgdjEsIEdDR0x1aW50IHYyLCBHQ0dMdWludCB2MykgPSAwOwotICAgIHZp
cnR1YWwgdm9pZCB1bmlmb3JtMXVpdihHQ0dMaW50IGxvY2F0aW9uLCBjb25zdCBHQ0dMdWludCog
ZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpID0gMDsKLSAgICB2
aXJ0dWFsIHZvaWQgdW5pZm9ybTJ1aXYoR0NHTGludCBsb2NhdGlvbiwgY29uc3QgR0NHTHVpbnQq
IGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKSA9IDA7Ci0gICAg
dmlydHVhbCB2b2lkIHVuaWZvcm0zdWl2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0x1aW50
KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkgPSAwOwotICAg
IHZpcnR1YWwgdm9pZCB1bmlmb3JtNHVpdihHQ0dMaW50IGxvY2F0aW9uLCBjb25zdCBHQ0dMdWlu
dCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpID0gMDsKLSAg
ICB2aXJ0dWFsIHZvaWQgdW5pZm9ybU1hdHJpeDJ4M2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xi
b29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZz
ZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtTWF0
cml4M3gyZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBH
Q0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKSA9
IDA7Ci0gICAgdmlydHVhbCB2b2lkIHVuaWZvcm1NYXRyaXgyeDRmdihHQ0dMaW50IGxvY2F0aW9u
LCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQg
c3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdW5p
Zm9ybU1hdHJpeDR4MmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwg
Y29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xl
bmd0aCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtTWF0cml4M3g0ZnYoR0NHTGludCBs
b2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdD
R0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKSA9IDA7Ci0gICAgdmlydHVhbCB2
b2lkIHVuaWZvcm1NYXRyaXg0eDNmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFu
c3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWlu
dCBzcmNMZW5ndGgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybTF1aXYoR0NHTGludCBs
b2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTHVpbnQ+IGRhdGEpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgdW5pZm9ybTJ1aXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTHVp
bnQ+IGRhdGEpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybTN1aXYoR0NHTGludCBsb2Nh
dGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTHVpbnQ+IGRhdGEpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgdW5pZm9ybTR1aXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTHVpbnQ+
IGRhdGEpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybU1hdHJpeDJ4M2Z2KEdDR0xpbnQg
bG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0
PiBkYXRhKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVuaWZvcm1NYXRyaXgzeDJmdihHQ0dMaW50
IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9h
dD4gZGF0YSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtTWF0cml4Mng0ZnYoR0NHTGlu
dCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxv
YXQ+IGRhdGEpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybU1hdHJpeDR4MmZ2KEdDR0xp
bnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZs
b2F0PiBkYXRhKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVuaWZvcm1NYXRyaXgzeDRmdihHQ0dM
aW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xm
bG9hdD4gZGF0YSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtTWF0cml4NHgzZnYoR0NH
TGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dM
ZmxvYXQ+IGRhdGEpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdmVydGV4QXR0cmliSTRpKEdDR0x1
aW50IGluZGV4LCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTGludCB6LCBHQ0dMaW50IHcpID0g
MDsKLSAgICB2aXJ0dWFsIHZvaWQgdmVydGV4QXR0cmliSTRpdihHQ0dMdWludCBpbmRleCwgY29u
c3QgR0NHTGludCogdmFsdWVzKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHZlcnRleEF0dHJpYkk0
aXYoR0NHTHVpbnQgaW5kZXgsIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQsIDQ+IHZhbHVlcykgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCB2ZXJ0ZXhBdHRyaWJJNHVpKEdDR0x1aW50IGluZGV4LCBHQ0dM
dWludCB4LCBHQ0dMdWludCB5LCBHQ0dMdWludCB6LCBHQ0dMdWludCB3KSA9IDA7Ci0gICAgdmly
dHVhbCB2b2lkIHZlcnRleEF0dHJpYkk0dWl2KEdDR0x1aW50IGluZGV4LCBjb25zdCBHQ0dMdWlu
dCogdmFsdWVzKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHZlcnRleEF0dHJpYkk0dWl2KEdDR0x1
aW50IGluZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdWludCwgND4gdmFsdWVzKSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIHZlcnRleEF0dHJpYklQb2ludGVyKEdDR0x1aW50IGluZGV4LCBHQ0dMaW50
IHNpemUsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBzdHJpZGUsIEdDR0xpbnRwdHIgb2Zmc2V0
KSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgZHJhd1JhbmdlRWxlbWVudHMoR0NHTGVudW0gbW9k
ZSwgR0NHTHVpbnQgc3RhcnQsIEdDR0x1aW50IGVuZCwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51
bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCkgPSAwOwogCi0gICAgdmlydHVhbCB2b2lkIGRyYXdC
dWZmZXJzKEdDR0xzaXplaSBuLCBjb25zdCBHQ0dMZW51bSogYnVmcykgPSAwOwotICAgIHZpcnR1
YWwgdm9pZCBjbGVhckJ1ZmZlcml2KEdDR0xlbnVtIGJ1ZmZlciwgR0NHTGludCBkcmF3YnVmZmVy
LCBjb25zdCBHQ0dMaW50KiB2YWx1ZXMsIEdDR0x1aW50IHNyY09mZnNldCkgPSAwOwotICAgIHZp
cnR1YWwgdm9pZCBjbGVhckJ1ZmZlcnVpdihHQ0dMZW51bSBidWZmZXIsIEdDR0xpbnQgZHJhd2J1
ZmZlciwgY29uc3QgR0NHTHVpbnQqIHZhbHVlcywgR0NHTHVpbnQgc3JjT2Zmc2V0KSA9IDA7Ci0g
ICAgdmlydHVhbCB2b2lkIGNsZWFyQnVmZmVyZnYoR0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50IGRy
YXdidWZmZXIsIGNvbnN0IEdDR0xmbG9hdCogdmFsdWVzLCBHQ0dMdWludCBzcmNPZmZzZXQpID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd0J1ZmZlcnMoR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+
IGJ1ZnMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY2xlYXJCdWZmZXJpdihHQ0dMZW51bSBidWZm
ZXIsIEdDR0xpbnQgZHJhd2J1ZmZlciwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gdmFsdWVzKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIGNsZWFyQnVmZmVydWl2KEdDR0xlbnVtIGJ1ZmZlciwgR0NH
TGludCBkcmF3YnVmZmVyLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdWludD4gdmFsdWVzKSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIGNsZWFyQnVmZmVyZnYoR0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50IGRy
YXdidWZmZXIsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gdmFsdWVzKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIGNsZWFyQnVmZmVyZmkoR0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50IGRyYXdidWZm
ZXIsIEdDR0xmbG9hdCBkZXB0aCwgR0NHTGludCBzdGVuY2lsKSA9IDA7CiAKICAgICB2aXJ0dWFs
IFBsYXRmb3JtR0xPYmplY3QgY3JlYXRlUXVlcnkoKSA9IDA7CkBAIC0xMjIxLDIwICsxMjIxLDYg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgU3RyaW5nIGdldEFjdGl2ZVVuaWZvcm1CbG9ja05hbWUo
UGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMdWludCB1bmlmb3JtQmxvY2tJbmRleCkgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtQmxvY2tCaW5kaW5nKFBsYXRmb3JtR0xPYmplY3Qg
cHJvZ3JhbSwgR0NHTHVpbnQgdW5pZm9ybUJsb2NrSW5kZXgsIEdDR0x1aW50IHVuaWZvcm1CbG9j
a0JpbmRpbmcpID0gMDsKIAotICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtMWZ2KEdDR0xpbnQgbG9j
YXRpb24sIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWlu
dCBzcmNMZW5ndGgpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybTJmdihHQ0dMaW50IGxv
Y2F0aW9uLCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVp
bnQgc3JjTGVuZ3RoKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHVuaWZvcm0zZnYoR0NHTGludCBs
b2NhdGlvbiwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1
aW50IHNyY0xlbmd0aCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtNGZ2KEdDR0xpbnQg
bG9jYXRpb24sIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dM
dWludCBzcmNMZW5ndGgpID0gMDsKLQotICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtMWl2KEdDR0xp
bnQgbG9jYXRpb24sIGNvbnN0IEdDR0xpbnQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NH
THVpbnQgc3JjTGVuZ3RoKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHVuaWZvcm0yaXYoR0NHTGlu
dCBsb2NhdGlvbiwgY29uc3QgR0NHTGludCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dM
dWludCBzcmNMZW5ndGgpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybTNpdihHQ0dMaW50
IGxvY2F0aW9uLCBjb25zdCBHQ0dMaW50KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1
aW50IHNyY0xlbmd0aCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtNGl2KEdDR0xpbnQg
bG9jYXRpb24sIGNvbnN0IEdDR0xpbnQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVp
bnQgc3JjTGVuZ3RoKSA9IDA7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybU1hdHJpeDJmdihH
Q0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCog
ZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpID0gMDsKLSAgICB2
aXJ0dWFsIHZvaWQgdW5pZm9ybU1hdHJpeDNmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVh
biB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBH
Q0dMdWludCBzcmNMZW5ndGgpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybU1hdHJpeDRm
dihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9h
dCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpID0gMDsKLQog
ICAgIHZpcnR1YWwgdm9pZCBnZXRBY3RpdmVVbmlmb3JtQmxvY2tpdihHQ0dMdWludCBwcm9ncmFt
LCBHQ0dMdWludCB1bmlmb3JtQmxvY2tJbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdD
R0xpbnQ+IHBhcmFtcykgPSAwOwogCiAgICAgLy8gT3RoZXIgZnVuY3Rpb25zLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlc0dMLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5cGVzR0wuaAppbmRleCBl
N2M2OWIyOGRjZTQ2NTgyNTc1NzczMzMyNWI4ZjQ0ZGYyNzIwN2I5Li4wNjJlNTU2N2EyYzE5ZGI3
YjI4MTkxYmFhODVkMzc3Y2MwMTZjNGUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5cGVzR0wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5cGVzR0wuaApAQCAtNjgsNiArNjgsMTAgQEAgc3RydWN0
IEdDR0xTcGFuIHsKICAgICBHQ0dMU3BhbihUICgmYXJyYXkpW0V4dGVudF0pCiAgICAgICAgIDog
ZGF0YShhcnJheSkKICAgICB7IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPgorICAgIEdDR0xT
cGFuKGNvbnN0IEdDR0xTcGFuPFUsIEV4dGVudD4mIG90aGVyLCBzdGQ6OmVuYWJsZV9pZl90PHN0
ZDo6aXNfY29udmVydGlibGVfdjxVKCopW10sIFQoKilbXT4sIG51bGxwdHJfdD4gPSBudWxscHRy
KQorICAgICAgICA6IGRhdGEob3RoZXIuZGF0YSkKKyAgICB7IH0KICAgICBUJiBvcGVyYXRvcltd
KHNpemVfdCBpKSB7IFJFTEVBU0VfQVNTRVJUKGRhdGEgJiYgaSA8IGJ1ZlNpemUpOyByZXR1cm4g
ZGF0YVtpXTsgfQogICAgIFQmIG9wZXJhdG9yKigpIHsgUkVMRUFTRV9BU1NFUlQoZGF0YSAmJiBi
dWZTaXplKTsgcmV0dXJuICpkYXRhOyB9CiAgICAgVCogZGF0YTsKQEAgLTgwLDExICs4NCwxOCBA
QCBzdHJ1Y3QgR0NHTFNwYW48VCwgc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKT4g
ewogICAgICAgICA6IGRhdGEoYXJyYXkpCiAgICAgICAgICwgYnVmU2l6ZShidWZTaXplXykKICAg
ICB7IH0KLSAgICB0ZW1wbGF0ZTxzaXplX3QgU3o+IEdDR0xTcGFuKFQgKCZhcnJheSlbU3pdKQor
ICAgIHRlbXBsYXRlPHNpemVfdCBTej4KKyAgICBHQ0dMU3BhbihUICgmYXJyYXkpW1N6XSkKICAg
ICAgICAgOiBkYXRhKGFycmF5KQogICAgICAgICAsIGJ1ZlNpemUoU3opCiAgICAgeyB9Ci0gICAg
R0NHTFNwYW4oV1RGOjpWZWN0b3I8VD4mIGFycmF5KQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUs
IHNpemVfdCBVRXh0ZW50PgorICAgIEdDR0xTcGFuKGNvbnN0IEdDR0xTcGFuPFUsIFVFeHRlbnQ+
JiBvdGhlciwgc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2NvbnZlcnRpYmxlX3Y8VSgqKVtdLCBU
KCopW10+LCBudWxscHRyX3Q+ID0gbnVsbHB0cikKKyAgICAgICAgOiBkYXRhKG90aGVyLmRhdGEp
CisgICAgICAgICwgYnVmU2l6ZShvdGhlci5idWZTaXplKQorICAgIHsgfQorICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFUsIHNpemVfdCBpbmxpbmVDYXBhY2l0eT4KKyAgICBHQ0dMU3BhbihXVEY6OlZl
Y3RvcjxVLCBpbmxpbmVDYXBhY2l0eT4mIGFycmF5LCBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNf
Y29udmVydGlibGVfdjxVKCopW10sIFQoKilbXT4sIG51bGxwdHJfdD4gPSBudWxscHRyKQogICAg
ICAgICA6IGRhdGEoYXJyYXkuZGF0YSgpKQogICAgICAgICAsIGJ1ZlNpemUoYXJyYXkuc2l6ZSgp
KQogICAgIHsgfQpAQCAtOTQsNiArMTA1LDU0IEBAIHN0cnVjdCBHQ0dMU3BhbjxULCBzdGQ6Om51
bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpPiB7CiAgICAgY29uc3Qgc2l6ZV90IGJ1ZlNpemU7
CiB9OwogCit0ZW1wbGF0ZTw+CitzdHJ1Y3QgR0NHTFNwYW48R0NHTHZvaWQ+IHsKKyAgICBHQ0dM
U3BhbihHQ0dMdm9pZCogYXJyYXksIHNpemVfdCBidWZTaXplXykKKyAgICAgICAgOiBkYXRhKGFy
cmF5KQorICAgICAgICAsIGJ1ZlNpemUoYnVmU2l6ZV8pCisgICAgeyB9CisgICAgdGVtcGxhdGU8
dHlwZW5hbWUgVSwgc2l6ZV90IFN6PgorICAgIEdDR0xTcGFuKFUgKCZhcnJheSlbU3pdKQorICAg
ICAgICA6IGRhdGEoYXJyYXkpCisgICAgICAgICwgYnVmU2l6ZShTeiAqIHNpemVvZihVKSkKKyAg
ICB7IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVLCBzaXplX3QgVUV4dGVudD4KKyAgICBHQ0dM
U3Bhbihjb25zdCBHQ0dMU3BhbjxVLCBVRXh0ZW50PiYgb3RoZXIpCisgICAgICAgIDogZGF0YShv
dGhlci5kYXRhKQorICAgICAgICAsIGJ1ZlNpemUob3RoZXIuYnVmU2l6ZSAqIHNpemVvZihVKSkK
KyAgICB7IH0KKyAgICBHQ0dMdm9pZCogZGF0YTsKKyAgICBjb25zdCBzaXplX3QgYnVmU2l6ZTsK
K307CisKK3RlbXBsYXRlPD4KK3N0cnVjdCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4geworICAg
IEdDR0xTcGFuKGNvbnN0IEdDR0x2b2lkKiBhcnJheSwgc2l6ZV90IGJ1ZlNpemVfKQorICAgICAg
ICA6IGRhdGEoYXJyYXkpCisgICAgICAgICwgYnVmU2l6ZShidWZTaXplXykKKyAgICB7IH0KKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBVLCBzaXplX3QgU3o+CisgICAgR0NHTFNwYW4oVSAoJmFycmF5
KVtTel0pCisgICAgICAgIDogZGF0YShhcnJheSkKKyAgICAgICAgLCBidWZTaXplKFN6ICogc2l6
ZW9mKFUpKQorICAgIHsgfQorICAgIEdDR0xTcGFuKGNvbnN0IEdDR0xTcGFuPEdDR0x2b2lkPiYg
b3RoZXIpCisgICAgICAgIDogZGF0YShvdGhlci5kYXRhKQorICAgICAgICAsIGJ1ZlNpemUob3Ro
ZXIuYnVmU2l6ZSkKKyAgICB7IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVLCBzaXplX3QgVUV4
dGVudD4KKyAgICBHQ0dMU3Bhbihjb25zdCBHQ0dMU3BhbjxVLCBVRXh0ZW50PiYgb3RoZXIpCisg
ICAgICAgIDogZGF0YShvdGhlci5kYXRhKQorICAgICAgICAsIGJ1ZlNpemUob3RoZXIuYnVmU2l6
ZSAqIHNpemVvZihVKSkKKyAgICB7IH0KKyAgICBHQ0dMU3BhbihpbnRwdHJfdCBvZmZzZXQpCisg
ICAgICAgIDogZGF0YShyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0x2b2lkKj4ob2Zmc2V0KSkK
KyAgICAgICAgLCBidWZTaXplKDApCisgICAgeyB9CisgICAgY29uc3QgR0NHTHZvaWQqIGRhdGE7
CisgICAgY29uc3Qgc2l6ZV90IGJ1ZlNpemU7Cit9OworCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBz
aXplX3QgTj4KIEdDR0xTcGFuKFQgKCYpW05dKSAtPiBHQ0dMU3BhbjxULCBOPjsKIApAQCAtMTA1
LDMgKzE2NCw5IEBAIEdDR0xTcGFuPFQ+IG1ha2VHQ0dMU3BhbihUKiBkYXRhLCBzaXplX3QgY291
bnQpCiB7CiAgICAgcmV0dXJuIEdDR0xTcGFuPFQ+IHsgZGF0YSwgY291bnQgfTsKIH0KKwordGVt
cGxhdGU8c2l6ZV90IEV4dGVudCwgdHlwZW5hbWUgVD4KK0dDR0xTcGFuPFQsIEV4dGVudD4gbWFr
ZUdDR0xTcGFuKFQqIGRhdGEpCit7CisgICAgcmV0dXJuIEdDR0xTcGFuPFQsIEV4dGVudD4geyBk
YXRhIH07Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
bmdsZS9FeHRlbnNpb25zR0xBTkdMRS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5jcHAKaW5kZXggNGQwMjViOTkzNDIyNzc2Yjli
NWY0YWFiYzM5YTBjNzg5MTk0MGE5OS4uMTA3MTNhYzU2ZDBkZWNhZDkxYmM1Y2IxNjc0MWFiMjli
NDVhZTRkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5n
bGUvRXh0ZW5zaW9uc0dMQU5HTEUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmNwcApAQCAtMjI3LDEyICsyMjcsMTIgQEAg
Ym9vbCBFeHRlbnNpb25zR0xBTkdMRTo6c3VwcG9ydHNFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBu
YW1lKQogICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMobmFtZSkgfHwg
bV9yZXF1ZXN0YWJsZUV4dGVuc2lvbnMuY29udGFpbnMobmFtZSk7CiB9CiAKLXZvaWQgRXh0ZW5z
aW9uc0dMQU5HTEU6OmRyYXdCdWZmZXJzRVhUKEdDR0xzaXplaSBuLCBjb25zdCBHQ0dMZW51bSog
YnVmcykKK3ZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmRyYXdCdWZmZXJzRVhUKEdDR0xTcGFuPGNv
bnN0IEdDR0xlbnVtPiBidWZzKQogewogICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1
cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZ2w6OkRyYXdCdWZmZXJzRVhUKG4sIGJ1
ZnMpOworICAgIGdsOjpEcmF3QnVmZmVyc0VYVChidWZzLmJ1ZlNpemUsIGJ1ZnMuZGF0YSk7CiB9
CiAKIHZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmRyYXdBcnJheXNJbnN0YW5jZWQoR0NHTGVudW0g
bW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHNpemVpIGNvdW50LCBHQ0dMc2l6ZWkgcHJpbWNvdW50
KQpAQCAtMjg2LDE0ICsyODYsMTQgQEAgdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6cmVhZFBpeGVs
c1JvYnVzdEFOR0xFKGludCB4LCBpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0cKICAgICBnbDo6
UmVhZFBpeGVsc1JvYnVzdEFOR0xFKHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwg
YnVmU2l6ZSwgbGVuZ3RoLCBjb2x1bW5zLCByb3dzLCBwaXhlbHMpOwogfQogCi12b2lkIEV4dGVu
c2lvbnNHTEFOR0xFOjp0ZXhJbWFnZTJEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBpbnQg
bGV2ZWwsIGludCBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVp
Z2h0LCBpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXpl
aSBidWZTaXplLCBjb25zdCB2b2lkICpwaXhlbHMpCit2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjp0
ZXhJbWFnZTJEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWwsIGludCBpbnRl
cm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBpbnQgYm9yZGVy
LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lk
PiBwaXhlbHMpCiB7CiAgICAgaWYgKCFtX2NvbnRleHQtPm1faXNGb3JXZWJHTDIpCiAgICAgICAg
IGludGVybmFsZm9ybWF0ID0gYWRqdXN0V2ViR0wxVGV4dHVyZUludGVybmFsRm9ybWF0KGludGVy
bmFsZm9ybWF0LCBmb3JtYXQsIHR5cGUpOwogICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4
dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZ2w6OlRleEltYWdlMkRSb2J1c3RB
TkdMRSh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgYm9yZGVy
LCBmb3JtYXQsIHR5cGUsIGJ1ZlNpemUsIHBpeGVscyk7CisgICAgZ2w6OlRleEltYWdlMkRSb2J1
c3RBTkdMRSh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgYm9y
ZGVyLCBmb3JtYXQsIHR5cGUsIHBpeGVscy5idWZTaXplLCBwaXhlbHMuZGF0YSk7CiB9CiAKIHZv
aWQgRXh0ZW5zaW9uc0dMQU5HTEU6OnRleFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xmbG9h
dCAqcGFyYW1zKQpAQCAtMzEyLDY0ICszMTIsNjQgQEAgdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6
dGV4UGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW0K
ICAgICBnbDo6VGV4UGFyYW1ldGVyaXZSb2J1c3RBTkdMRSh0YXJnZXQsIHBuYW1lLCBidWZTaXpl
LCBwYXJhbXMpOwogfQogCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjp0ZXhTdWJJbWFnZTJEUm9i
dXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWwsIGludCB4b2Zmc2V0LCBpbnQgeW9m
ZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQs
IEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCB2b2lkICpwaXhlbHMpCit2
b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjp0ZXhTdWJJbWFnZTJEUm9idXN0QU5HTEUoR0NHTGVudW0g
dGFyZ2V0LCBpbnQgbGV2ZWwsIGludCB4b2Zmc2V0LCBpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdp
ZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdD
R0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBwaXhlbHMpCiB7CiAgICAgaWYgKCFtX2NvbnRleHQtPm1h
a2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBnbDo6VGV4U3ViSW1h
Z2UyRFJvYnVzdEFOR0xFKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBo
ZWlnaHQsIGZvcm1hdCwgdHlwZSwgYnVmU2l6ZSwgcGl4ZWxzKTsKKyAgICBnbDo6VGV4U3ViSW1h
Z2UyRFJvYnVzdEFOR0xFKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBo
ZWlnaHQsIGZvcm1hdCwgdHlwZSwgcGl4ZWxzLmJ1ZlNpemUsIHBpeGVscy5kYXRhKTsKIH0KIAot
dm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Y29tcHJlc3NlZFRleEltYWdlMkRSb2J1c3RBTkdMRShH
Q0dMZW51bSB0YXJnZXQsIGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xz
aXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgaW50IGJvcmRlciwgR0NHTHNpemVpIGltYWdl
U2l6ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IHZvaWQqIGRhdGEpCit2b2lkIEV4dGVuc2lv
bnNHTEFOR0xFOjpjb21wcmVzc2VkVGV4SW1hZ2UyRFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdl
dCwgaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBH
Q0dMc2l6ZWkgaGVpZ2h0LCBpbnQgYm9yZGVyLCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMU3Bh
bjxjb25zdCBHQ0dMdm9pZD4gZGF0YSkKIHsKICAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRl
eHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGdsOjpDb21wcmVzc2VkVGV4SW1h
Z2UyRFJvYnVzdEFOR0xFKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVp
Z2h0LCBib3JkZXIsIGltYWdlU2l6ZSwgYnVmU2l6ZSwgZGF0YSk7CisgICAgZ2w6OkNvbXByZXNz
ZWRUZXhJbWFnZTJEUm9idXN0QU5HTEUodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdp
ZHRoLCBoZWlnaHQsIGJvcmRlciwgaW1hZ2VTaXplLCBkYXRhLmJ1ZlNpemUsIGRhdGEuZGF0YSk7
CiAgICAgbV9jb250ZXh0LT5tX3N0YXRlLnRleHR1cmVTZWVkQ291bnQuYWRkKG1fY29udGV4dC0+
bV9zdGF0ZS5jdXJyZW50Qm91bmRUZXh0dXJlKCkpOwogCiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dM
QU5HTEU6OmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0
LCBpbnQgbGV2ZWwsIGludCB4b2Zmc2V0LCBpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBH
Q0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdD
R0xzaXplaSBidWZTaXplLCBjb25zdCB2b2lkKiBkYXRhKQordm9pZCBFeHRlbnNpb25zR0xBTkdM
RTo6Y29tcHJlc3NlZFRleFN1YkltYWdlMkRSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIGlu
dCBsZXZlbCwgaW50IHhvZmZzZXQsIGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xz
aXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTFNw
YW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEpCiB7CiAgICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250
ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBnbDo6Q29tcHJlc3NlZFRleFN1
YkltYWdlMkRSb2J1c3RBTkdMRSh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0
aCwgaGVpZ2h0LCBmb3JtYXQsIGltYWdlU2l6ZSwgYnVmU2l6ZSwgZGF0YSk7CisgICAgZ2w6OkNv
bXByZXNzZWRUZXhTdWJJbWFnZTJEUm9idXN0QU5HTEUodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwg
eW9mZnNldCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCBpbWFnZVNpemUsIGRhdGEuYnVmU2l6ZSwg
ZGF0YS5kYXRhKTsKICAgICBtX2NvbnRleHQtPm1fc3RhdGUudGV4dHVyZVNlZWRDb3VudC5hZGQo
bV9jb250ZXh0LT5tX3N0YXRlLmN1cnJlbnRCb3VuZFRleHR1cmUoKSk7CiB9CiAKLXZvaWQgRXh0
ZW5zaW9uc0dMQU5HTEU6OmNvbXByZXNzZWRUZXhJbWFnZTNEUm9idXN0QU5HTEUoR0NHTGVudW0g
dGFyZ2V0LCBpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lk
dGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgaW50IGJvcmRlciwgR0NHTHNp
emVpIGltYWdlU2l6ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IHZvaWQqIGRhdGEpCit2b2lk
IEV4dGVuc2lvbnNHTEFOR0xFOjpjb21wcmVzc2VkVGV4SW1hZ2UzRFJvYnVzdEFOR0xFKEdDR0xl
bnVtIHRhcmdldCwgaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVp
IHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIGludCBib3JkZXIsIEdD
R0xzaXplaSBpbWFnZVNpemUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRhKQogewogICAg
IGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgZ2w6OkNvbXByZXNzZWRUZXhJbWFnZTNEUm9idXN0QU5HTEUodGFyZ2V0LCBsZXZlbCwg
aW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBib3JkZXIsIGltYWdlU2l6ZSwg
YnVmU2l6ZSwgZGF0YSk7CisgICAgZ2w6OkNvbXByZXNzZWRUZXhJbWFnZTNEUm9idXN0QU5HTEUo
dGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBib3Jk
ZXIsIGltYWdlU2l6ZSwgZGF0YS5idWZTaXplLCBkYXRhLmRhdGEpOwogfQogCi12b2lkIEV4dGVu
c2lvbnNHTEFOR0xFOjpjb21wcmVzc2VkVGV4U3ViSW1hZ2UzRFJvYnVzdEFOR0xFKEdDR0xlbnVt
IHRhcmdldCwgaW50IGxldmVsLCBpbnQgeG9mZnNldCwgaW50IHlvZmZzZXQsIGludCB6b2Zmc2V0
LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NH
TGVudW0gZm9ybWF0LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29u
c3Qgdm9pZCogZGF0YSkKK3ZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmNvbXByZXNzZWRUZXhTdWJJ
bWFnZTNEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWwsIGludCB4b2Zmc2V0
LCBpbnQgeW9mZnNldCwgaW50IHpvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhl
aWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFnZVNp
emUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRhKQogewogICAgIGlmICghbV9jb250ZXh0
LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZ2w6OkNvbXBy
ZXNzZWRUZXhTdWJJbWFnZTNEUm9idXN0QU5HTEUodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9m
ZnNldCwgem9mZnNldCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGZvcm1hdCwgaW1hZ2VTaXplLCBi
dWZTaXplLCBkYXRhKTsKKyAgICBnbDo6Q29tcHJlc3NlZFRleFN1YkltYWdlM0RSb2J1c3RBTkdM
RSh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB6b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0
LCBkZXB0aCwgZm9ybWF0LCBpbWFnZVNpemUsIGRhdGEuYnVmU2l6ZSwgZGF0YS5kYXRhKTsKIH0K
IAogCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjp0ZXhJbWFnZTNEUm9idXN0QU5HTEUoR0NHTGVu
dW0gdGFyZ2V0LCBpbnQgbGV2ZWwsIGludCBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRo
LCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIGludCBib3JkZXIsIEdDR0xlbnVt
IGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IHZvaWQgKnBp
eGVscykKK3ZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OnRleEltYWdlM0RSb2J1c3RBTkdMRShHQ0dM
ZW51bSB0YXJnZXQsIGludCBsZXZlbCwgaW50IGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lk
dGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgaW50IGJvcmRlciwgR0NHTGVu
dW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gcGl4ZWxz
KQogewogICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgZ2w6OlRleEltYWdlM0RSb2J1c3RBTkdMRSh0YXJnZXQsIGxldmVsLCBp
bnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGJvcmRlciwgZm9ybWF0LCB0eXBl
LCBidWZTaXplLCBwaXhlbHMpOworICAgIGdsOjpUZXhJbWFnZTNEUm9idXN0QU5HTEUodGFyZ2V0
LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBib3JkZXIsIGZv
cm1hdCwgdHlwZSwgcGl4ZWxzLmJ1ZlNpemUsIHBpeGVscy5kYXRhKTsKIH0KIAotdm9pZCBFeHRl
bnNpb25zR0xBTkdMRTo6dGV4U3ViSW1hZ2UzRFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwg
aW50IGxldmVsLCBpbnQgeG9mZnNldCwgaW50IHlvZmZzZXQsIGludCB6b2Zmc2V0LCBHQ0dMc2l6
ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGVudW0gZm9y
bWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3Qgdm9pZCAqcGl4ZWxz
KQordm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6dGV4U3ViSW1hZ2UzRFJvYnVzdEFOR0xFKEdDR0xl
bnVtIHRhcmdldCwgaW50IGxldmVsLCBpbnQgeG9mZnNldCwgaW50IHlvZmZzZXQsIGludCB6b2Zm
c2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwg
R0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4g
cGl4ZWxzKQogewogICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgZ2w6OlRleFN1YkltYWdlM0RSb2J1c3RBTkdMRSh0YXJnZXQs
IGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB6b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwg
Zm9ybWF0LCB0eXBlLCBidWZTaXplLCBwaXhlbHMpOworICAgIGdsOjpUZXhTdWJJbWFnZTNEUm9i
dXN0QU5HTEUodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgem9mZnNldCwgd2lkdGgs
IGhlaWdodCwgZGVwdGgsIGZvcm1hdCwgdHlwZSwgcGl4ZWxzLmJ1ZlNpemUsIHBpeGVscy5kYXRh
KTsKIH0KIAogdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0UXVlcnlpdlJvYnVzdEFOR0xFKEdD
R0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6
ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmgKaW5kZXggNTdi
YjkzYmM4NGMzMzU5MGZiY2Y0YjNmN2ExZWI1YTU1YzU5MjU2Yy4uYWRhZWFmOTEwMWMxNGY3ZGNk
NGY5OTkwODIwZmE5ZWEyNGJjODk0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5oCkBAIC01Miw3ICs1
Miw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGluc2VydEV2ZW50TWFya2VyRVhUKGNvbnN0IFN0cmlu
ZyYpIG92ZXJyaWRlOwogICAgIHZvaWQgcHVzaEdyb3VwTWFya2VyRVhUKGNvbnN0IFN0cmluZyYp
IG92ZXJyaWRlOwogICAgIHZvaWQgcG9wR3JvdXBNYXJrZXJFWFQodm9pZCkgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCBkcmF3QnVmZmVyc0VYVChHQ0dMc2l6ZWksIGNvbnN0IEdDR0xlbnVtKikgb3ZlcnJp
ZGU7CisgICAgdm9pZCBkcmF3QnVmZmVyc0VYVChHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4pIG92
ZXJyaWRlOwogCiAgICAgU3RyaW5nIGdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRShQbGF0
Zm9ybUdMT2JqZWN0KSBvdmVycmlkZTsKIApAQCAtNzQsMTcgKzc0LDE3IEBAIHB1YmxpYzoKIAog
ICAgIC8vIEdMX0FOR0xFX3JvYnVzdF9jbGllbnRfbWVtb3J5CiAgICAgdm9pZCByZWFkUGl4ZWxz
Um9idXN0QU5HTEUoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNp
emVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xzaXplaSAqY29sdW1ucywgR0NHTHNpemVpICpy
b3dzLCB2b2lkICpwaXhlbHMpIG92ZXJyaWRlOwotICAgIHZvaWQgdGV4SW1hZ2UyRFJvYnVzdEFO
R0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCBpbnRlcm5hbGZvcm1h
dCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NH
TGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3Qgdm9p
ZCAqcGl4ZWxzKSBvdmVycmlkZTsKKyAgICB2b2lkIHRleEltYWdlMkRSb2J1c3RBTkdMRShHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgaW50ZXJuYWxmb3JtYXQsIEdDR0xz
aXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xlbnVtIGZv
cm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IHBpeGVscykgb3Zl
cnJpZGU7CiAgICAgdm9pZCB0ZXhQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMZmxvYXQgKnBh
cmFtcykgb3ZlcnJpZGU7CiAgICAgdm9pZCB0ZXhQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dM
aW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgdGV4U3ViSW1hZ2UyRFJvYnVzdEFOR0xF
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50
IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9y
bWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3Qgdm9pZCAqcGl4ZWxz
KSBvdmVycmlkZTsKLSAgICB2b2lkIGNvbXByZXNzZWRUZXhJbWFnZTJEUm9idXN0QU5HTEUoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NH
THNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTHNpemVp
IGltYWdlU2l6ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0x2b2lkKiBkYXRhKSBvdmVy
cmlkZTsKLSAgICB2b2lkIGNvbXByZXNzZWRUZXhTdWJJbWFnZTJEUm9idXN0QU5HTEUoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNl
dCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdD
R0xzaXplaSBpbWFnZVNpemUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMdm9pZCogZGF0
YSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBjb21wcmVzc2VkVGV4SW1hZ2UzRFJvYnVzdEFOR0xFKEdD
R0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdD
R0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMaW50
IGJvcmRlciwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdD
R0x2b2lkKiBkYXRhKSBvdmVycmlkZTsKLSAgICB2b2lkIGNvbXByZXNzZWRUZXhTdWJJbWFnZTNE
Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZz
ZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTGludCB6b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdD
R0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMc2l6
ZWkgaW1hZ2VTaXplLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTHZvaWQqIGRhdGEpIG92
ZXJyaWRlOwotCi0gICAgdm9pZCB0ZXhJbWFnZTNEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgs
IEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGludCBib3JkZXIsIEdDR0xl
bnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IHZvaWQg
KnBpeGVscykgb3ZlcnJpZGU7Ci0gICAgdm9pZCB0ZXhTdWJJbWFnZTNEUm9idXN0QU5HTEUoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9m
ZnNldCwgR0NHTGludCB6b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQs
IEdDR0xzaXplaSBkZXB0aCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgY29uc3Qgdm9pZCAqcGl4ZWxzKSBvdmVycmlkZTsKKyAgICB2b2lkIHRleFN1
YkltYWdlMkRSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xp
bnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBo
ZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48Y29uc3QgR0NH
THZvaWQ+IHBpeGVscykgb3ZlcnJpZGU7CisgICAgdm9pZCBjb21wcmVzc2VkVGV4SW1hZ2UyRFJv
YnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJu
YWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3Jk
ZXIsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRhKSBv
dmVycmlkZTsKKyAgICB2b2lkIGNvbXByZXNzZWRUZXhTdWJJbWFnZTJEUm9idXN0QU5HTEUoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9m
ZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQs
IEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRhKSBvdmVy
cmlkZTsKKyAgICB2b2lkIGNvbXByZXNzZWRUZXhJbWFnZTNEUm9idXN0QU5HTEUoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVp
IHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xpbnQgYm9yZGVy
LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gZGF0YSkgb3Zl
cnJpZGU7CisgICAgdm9pZCBjb21wcmVzc2VkVGV4U3ViSW1hZ2UzRFJvYnVzdEFOR0xFKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZz
ZXQsIEdDR0xpbnQgem9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBH
Q0dMc2l6ZWkgZGVwdGgsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NH
TFNwYW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEpIG92ZXJyaWRlOworCisgICAgdm9pZCB0ZXhJbWFn
ZTNEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IGlu
dGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXpl
aSBkZXB0aCwgR0NHTGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwg
R0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IHBpeGVscykgb3ZlcnJpZGU7CisgICAgdm9pZCB0ZXhT
dWJJbWFnZTNEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dM
aW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTGludCB6b2Zmc2V0LCBHQ0dMc2l6ZWkg
d2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGVudW0gZm9ybWF0
LCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gcGl4ZWxzKSBvdmVycmlk
ZTsKICAgICB2b2lkIGdldFF1ZXJ5aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xl
bnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQg
KnBhcmFtcykgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRRdWVyeU9iamVjdHVpdlJvYnVzdEFOR0xF
KEdDR0x1aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXpl
aSAqbGVuZ3RoLCBHQ0dMdWludCAqcGFyYW1zKSBvdmVycmlkZTsKICAgICB2b2lkIGdldEJ1ZmZl
clBvaW50ZXJ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NH
THNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCB2b2lkICoqcGFyYW1zKSBvdmVycmlk
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dy
YXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAKaW5kZXggZmViMGJlYmVmMzE1ZjBl
MTM4YmE5OWQ2MmViNmNmY2VkNTE5MzY3YS4uNzNmNGM0ZjMwM2FjNTBkN2FmYzg2YTI5MjBhNDYx
NjZkY2E4ZTBiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAKQEAgLTM2Miwx
NCArMzYyLDE5IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFNoYWRlclByZWNp
c2lvbkZvcm1hdChHQ0dMZW51bSBzaGFkZXJUeXBlLCBHQ0dMCiAgICAgZ2w6OkdldFNoYWRlclBy
ZWNpc2lvbkZvcm1hdChzaGFkZXJUeXBlLCBwcmVjaXNpb25UeXBlLCByYW5nZS5kYXRhLCBwcmVj
aXNpb24pOwogfQogCi1ib29sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp0ZXhJbWFnZTJEKEdD
R0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdD
R0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xlbnVt
IGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgY29uc3Qgdm9pZCogcGl4ZWxzKQorYm9vbCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6dGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2
ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBo
ZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdD
R0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBwaXhlbHMpCiB7Ci0gICAgaWYgKHdpZHRoICYmIGhlaWdo
dCAmJiAhcGl4ZWxzKSB7CisgICAgaWYgKHdpZHRoICYmIGhlaWdodCAmJiAhcGl4ZWxzLmRhdGEp
IHsKICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoSU5WQUxJRF9WQUxVRSk7CiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICB9CisgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCi0gICAgdGV4SW1hZ2UyRERpcmVjdCh0YXJnZXQsIGxldmVsLCBp
bnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgYm9yZGVyLCBmb3JtYXQsIHR5cGUsIHBpeGVs
cyk7CisgICAgaWYgKCFtX2lzRm9yV2ViR0wyICYmIG1fZXh0ZW5zaW9ucykKKyAgICAgICAgaW50
ZXJuYWxmb3JtYXQgPSBtX2V4dGVuc2lvbnMtPmFkanVzdFdlYkdMMVRleHR1cmVJbnRlcm5hbEZv
cm1hdChpbnRlcm5hbGZvcm1hdCwgZm9ybWF0LCB0eXBlKTsKKyAgICBnbDo6VGV4SW1hZ2UyRFJv
YnVzdEFOR0xFKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBi
b3JkZXIsIGZvcm1hdCwgdHlwZSwgcGl4ZWxzLmJ1ZlNpemUsIHBpeGVscy5kYXRhKTsKKyAgICBt
X3N0YXRlLnRleHR1cmVTZWVkQ291bnQuYWRkKG1fc3RhdGUuY3VycmVudEJvdW5kVGV4dHVyZSgp
KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtODM1LDIwICs4NDAsMjAgQEAgdm9pZCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6YnVmZmVyRGF0YShHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXpl
aXB0ciBzaXplLCBHQ0cKICAgICBnbDo6QnVmZmVyRGF0YSh0YXJnZXQsIHNpemUsIDAsIHVzYWdl
KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6YnVmZmVyRGF0YShHQ0dMZW51
bSB0YXJnZXQsIEdDR0xzaXplaXB0ciBzaXplLCBjb25zdCB2b2lkKiBkYXRhLCBHQ0dMZW51bSB1
c2FnZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmJ1ZmZlckRhdGEoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gZGF0YSwgR0NHTGVudW0gdXNhZ2UpCiB7
CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
Z2w6OkJ1ZmZlckRhdGEodGFyZ2V0LCBzaXplLCBkYXRhLCB1c2FnZSk7CisgICAgZ2w6OkJ1ZmZl
ckRhdGEodGFyZ2V0LCBkYXRhLmJ1ZlNpemUsIGRhdGEuZGF0YSwgdXNhZ2UpOwogfQogCi12b2lk
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpidWZmZXJTdWJEYXRhKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGludHB0ciBvZmZzZXQsIEdDR0xzaXplaXB0ciBzaXplLCBjb25zdCB2b2lkKiBkYXRhKQor
dm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6YnVmZmVyU3ViRGF0YShHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xpbnRwdHIgb2Zmc2V0LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gZGF0YSkKIHsK
ICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBn
bDo6QnVmZmVyU3ViRGF0YSh0YXJnZXQsIG9mZnNldCwgc2l6ZSwgZGF0YSk7CisgICAgZ2w6OkJ1
ZmZlclN1YkRhdGEodGFyZ2V0LCBvZmZzZXQsIGRhdGEuYnVmU2l6ZSwgZGF0YS5kYXRhKTsKIH0K
IAogdm9pZCogR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Om1hcEJ1ZmZlclJhbmdlKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGludHB0ciBvZmZzZXQsIEdDR0xzaXplaXB0ciBsZW5ndGgsIEdDR0xiaXRm
aWVsZCBhY2Nlc3MpCkBAIC0xNTAxLDEyICsxNTA2LDEyIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OnVuaWZvcm0xZihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMZmxvYXQgdjApCiAgICAg
Z2w6OlVuaWZvcm0xZihsb2NhdGlvbiwgdjApOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjp1bmlmb3JtMWZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBzaXplLCBjb25z
dCBHQ0dMZmxvYXQqIGFycmF5KQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9y
bTFmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGFycmF5KQog
ewogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAg
IGdsOjpVbmlmb3JtMWZ2KGxvY2F0aW9uLCBzaXplLCBhcnJheSk7CisgICAgZ2w6OlVuaWZvcm0x
ZnYobG9jYXRpb24sIGFycmF5LmJ1ZlNpemUsIGFycmF5LmRhdGEpOwogfQogCiB2b2lkIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMmYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGZsb2F0
IHYwLCBHQ0dMZmxvYXQgdjEpCkBAIC0xNTE3LDEzICsxNTIyLDEzIEBAIHZvaWQgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OnVuaWZvcm0yZihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMZmxvYXQgdjAs
IEdDR0xmbG9hCiAgICAgZ2w6OlVuaWZvcm0yZihsb2NhdGlvbiwgdjAsIHYxKTsKIH0KIAotdm9p
ZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTJmdihHQ0dMaW50IGxvY2F0aW9uLCBH
Q0dMc2l6ZWkgc2l6ZSwgY29uc3QgR0NHTGZsb2F0KiBhcnJheSkKK3ZvaWQgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OnVuaWZvcm0yZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3Qg
R0NHTGZsb2F0PiBhcnJheSkKIHsKLSAgICAvLyBGSVhNRTogbGVuZ3RoIG5lZWRzIHRvIGJlIGEg
bXVsdGlwbGUgb2YgMi4KKyAgICBBU1NFUlQoIShhcnJheS5idWZTaXplICUgMikpOwogICAgIGlm
ICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGdsOjpVbmlm
b3JtMmZ2KGxvY2F0aW9uLCBzaXplLCBhcnJheSk7CisgICAgZ2w6OlVuaWZvcm0yZnYobG9jYXRp
b24sIGFycmF5LmJ1ZlNpemUgLyAyLCBhcnJheS5kYXRhKTsKIH0KIAogdm9pZCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6dW5pZm9ybTNmKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xmbG9hdCB2MCwg
R0NHTGZsb2F0IHYxLCBHQ0dMZmxvYXQgdjIpCkBAIC0xNTM0LDEzICsxNTM5LDEzIEBAIHZvaWQg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0zZihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dM
ZmxvYXQgdjAsIEdDR0xmbG9hCiAgICAgZ2w6OlVuaWZvcm0zZihsb2NhdGlvbiwgdjAsIHYxLCB2
Mik7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0zZnYoR0NHTGlu
dCBsb2NhdGlvbiwgR0NHTHNpemVpIHNpemUsIGNvbnN0IEdDR0xmbG9hdCogYXJyYXkpCit2b2lk
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtM2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdD
R0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gYXJyYXkpCiB7Ci0gICAgLy8gRklYTUU6IGxlbmd0aCBu
ZWVkcyB0byBiZSBhIG11bHRpcGxlIG9mIDMuCisgICAgQVNTRVJUKCEoYXJyYXkuYnVmU2l6ZSAl
IDMpKTsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBnbDo6VW5pZm9ybTNmdihsb2NhdGlvbiwgc2l6ZSwgYXJyYXkpOworICAgIGdsOjpVbmlm
b3JtM2Z2KGxvY2F0aW9uLCBhcnJheS5idWZTaXplIC8gMywgYXJyYXkuZGF0YSk7CiB9CiAKIHZv
aWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm00ZihHQ0dMaW50IGxvY2F0aW9uLCBH
Q0dMZmxvYXQgdjAsIEdDR0xmbG9hdCB2MSwgR0NHTGZsb2F0IHYyLCBHQ0dMZmxvYXQgdjMpCkBA
IC0xNTUxLDEzICsxNTU2LDEzIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZv
cm00ZihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMZmxvYXQgdjAsIEdDR0xmbG9hCiAgICAgZ2w6OlVu
aWZvcm00Zihsb2NhdGlvbiwgdjAsIHYxLCB2MiwgdjMpOwogfQogCi12b2lkIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjp1bmlmb3JtNGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBzaXpl
LCBjb25zdCBHQ0dMZmxvYXQqIGFycmF5KQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
dW5pZm9ybTRmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGFy
cmF5KQogewotICAgIC8vIEZJWE1FOiBsZW5ndGggbmVlZHMgdG8gYmUgYSBtdWx0aXBsZSBvZiA0
LgorICAgIEFTU0VSVCghKGFycmF5LmJ1ZlNpemUgJSA0KSk7CiAgICAgaWYgKCFtYWtlQ29udGV4
dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZ2w6OlVuaWZvcm00ZnYobG9jYXRp
b24sIHNpemUsIGFycmF5KTsKKyAgICBnbDo6VW5pZm9ybTRmdihsb2NhdGlvbiwgYXJyYXkuYnVm
U2l6ZSAvIDQsIGFycmF5LmRhdGEpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
Ojp1bmlmb3JtMWkoR0NHTGludCBsb2NhdGlvbiwgR0NHTGludCB2MCkKQEAgLTE1NjgsMTIgKzE1
NzMsMTIgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTFpKEdDR0xpbnQg
bG9jYXRpb24sIEdDR0xpbnQgdjApCiAgICAgZ2w6OlVuaWZvcm0xaShsb2NhdGlvbiwgdjApOwog
fQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMWl2KEdDR0xpbnQgbG9j
YXRpb24sIEdDR0xzaXplaSBzaXplLCBjb25zdCBHQ0dMaW50KiBhcnJheSkKK3ZvaWQgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0xaXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48
Y29uc3QgR0NHTGludD4gYXJyYXkpCiB7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgZ2w6OlVuaWZvcm0xaXYobG9jYXRpb24sIHNpemUsIGFy
cmF5KTsKKyAgICBnbDo6VW5pZm9ybTFpdihsb2NhdGlvbiwgYXJyYXkuYnVmU2l6ZSwgYXJyYXku
ZGF0YSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0yaShHQ0dM
aW50IGxvY2F0aW9uLCBHQ0dMaW50IHYwLCBHQ0dMaW50IHYxKQpAQCAtMTU4NCwxMyArMTU4OSwx
MyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMmkoR0NHTGludCBsb2Nh
dGlvbiwgR0NHTGludCB2MCwgR0NHTGludCB2MQogICAgIGdsOjpVbmlmb3JtMmkobG9jYXRpb24s
IHYwLCB2MSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0yaXYo
R0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIHNpemUsIGNvbnN0IEdDR0xpbnQqIGFycmF5KQor
dm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTJpdihHQ0dMaW50IGxvY2F0aW9u
LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50PiBhcnJheSkKIHsKLSAgICAvLyBGSVhNRTogbGVuZ3Ro
IG5lZWRzIHRvIGJlIGEgbXVsdGlwbGUgb2YgMi4KKyAgICBBU1NFUlQoIShhcnJheS5idWZTaXpl
ICUgMikpOwogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIGdsOjpVbmlmb3JtMml2KGxvY2F0aW9uLCBzaXplLCBhcnJheSk7CisgICAgZ2w6OlVu
aWZvcm0yaXYobG9jYXRpb24sIGFycmF5LmJ1ZlNpemUgLyAyLCBhcnJheS5kYXRhKTsKIH0KIAog
dm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTNpKEdDR0xpbnQgbG9jYXRpb24s
IEdDR0xpbnQgdjAsIEdDR0xpbnQgdjEsIEdDR0xpbnQgdjIpCkBAIC0xNjAxLDEzICsxNjA2LDEz
IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0zaShHQ0dMaW50IGxvY2F0
aW9uLCBHQ0dMaW50IHYwLCBHQ0dMaW50IHYxCiAgICAgZ2w6OlVuaWZvcm0zaShsb2NhdGlvbiwg
djAsIHYxLCB2Mik7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0z
aXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIHNpemUsIGNvbnN0IEdDR0xpbnQqIGFycmF5
KQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTNpdihHQ0dMaW50IGxvY2F0
aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50PiBhcnJheSkKIHsKLSAgICAvLyBGSVhNRTogbGVu
Z3RoIG5lZWRzIHRvIGJlIGEgbXVsdGlwbGUgb2YgMy4KKyAgICBBU1NFUlQoIShhcnJheS5idWZT
aXplICUgMykpOwogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIGdsOjpVbmlmb3JtM2l2KGxvY2F0aW9uLCBzaXplLCBhcnJheSk7CisgICAgZ2w6
OlVuaWZvcm0zaXYobG9jYXRpb24sIGFycmF5LmJ1ZlNpemUgLyAzLCBhcnJheS5kYXRhKTsKIH0K
IAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTRpKEdDR0xpbnQgbG9jYXRp
b24sIEdDR0xpbnQgdjAsIEdDR0xpbnQgdjEsIEdDR0xpbnQgdjIsIEdDR0xpbnQgdjMpCkBAIC0x
NjE4LDQwICsxNjIzLDM5IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm00
aShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMaW50IHYwLCBHQ0dMaW50IHYxCiAgICAgZ2w6OlVuaWZv
cm00aShsb2NhdGlvbiwgdjAsIHYxLCB2MiwgdjMpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjp1bmlmb3JtNGl2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBzaXplLCBj
b25zdCBHQ0dMaW50KiBhcnJheSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZv
cm00aXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gYXJyYXkpCiB7
Ci0gICAgLy8gRklYTUU6IGxlbmd0aCBuZWVkcyB0byBiZSBhIG11bHRpcGxlIG9mIDQuCisgICAg
QVNTRVJUKCEoYXJyYXkuYnVmU2l6ZSAlIDQpKTsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVu
dCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBnbDo6VW5pZm9ybTRpdihsb2NhdGlvbiwgc2l6
ZSwgYXJyYXkpOworICAgIGdsOjpVbmlmb3JtNGl2KGxvY2F0aW9uLCBhcnJheS5idWZTaXplIC8g
NCwgYXJyYXkuZGF0YSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZv
cm1NYXRyaXgyZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIHNpemUsIEdDR0xib29sZWFu
IHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiBhcnJheSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXgyZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4g
dHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGFycmF5KQogewotICAgIC8vIEZJ
WE1FOiBsZW5ndGggbmVlZHMgdG8gYmUgYSBtdWx0aXBsZSBvZiA0LgogICAgIGlmICghbWFrZUNv
bnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGdsOjpVbmlmb3JtTWF0cml4
MmZ2KGxvY2F0aW9uLCBzaXplLCB0cmFuc3Bvc2UsIGFycmF5KTsKKyAgICBnbDo6VW5pZm9ybU1h
dHJpeDJmdihsb2NhdGlvbiwgYXJyYXkuYnVmU2l6ZSAvIDQsIHRyYW5zcG9zZSwgYXJyYXkuZGF0
YSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXgzZnYo
R0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIHNpemUsIEdDR0xib29sZWFuIHRyYW5zcG9zZSwg
Y29uc3QgR0NHTGZsb2F0KiBhcnJheSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVu
aWZvcm1NYXRyaXgzZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBH
Q0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGFycmF5KQogewotICAgIC8vIEZJWE1FOiBsZW5ndGgg
bmVlZHMgdG8gYmUgYSBtdWx0aXBsZSBvZiA5LgorICAgIEFTU0VSVCghKGFycmF5LmJ1ZlNpemUg
JSA5KSk7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgZ2w6OlVuaWZvcm1NYXRyaXgzZnYobG9jYXRpb24sIHNpemUsIHRyYW5zcG9zZSwgYXJy
YXkpOworICAgIGdsOjpVbmlmb3JtTWF0cml4M2Z2KGxvY2F0aW9uLCBhcnJheS5idWZTaXplIC8g
OSwgdHJhbnNwb3NlLCBhcnJheS5kYXRhKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6dW5pZm9ybU1hdHJpeDRmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgc2l6ZSwg
R0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHQ0dMZmxvYXQqIGFycmF5KQordm9pZCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybU1hdHJpeDRmdihHQ0dMaW50IGxvY2F0aW9uLCBH
Q0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gYXJyYXkpCiB7
Ci0gICAgLy8gRklYTUU6IGxlbmd0aCBuZWVkcyB0byBiZSBhIG11bHRpcGxlIG9mIDE2LgorICAg
IEFTU0VSVCghKGFycmF5LmJ1ZlNpemUgJSAxNikpOwogICAgIGlmICghbWFrZUNvbnRleHRDdXJy
ZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGdsOjpVbmlmb3JtTWF0cml4NGZ2KGxvY2F0
aW9uLCBzaXplLCB0cmFuc3Bvc2UsIGFycmF5KTsKKyAgICBnbDo6VW5pZm9ybU1hdHJpeDRmdihs
b2NhdGlvbiwgYXJyYXkuYnVmU2l6ZSAvIDE2LCB0cmFuc3Bvc2UsIGFycmF5LmRhdGEpOwogfQog
CiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1c2VQcm9ncmFtKFBsYXRmb3JtR0xPYmpl
Y3QgcHJvZ3JhbSkKQEAgLTE2ODAsMTIgKzE2ODQsMTIgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6dmVydGV4QXR0cmliMWYoR0NHTHVpbnQgaW5kZXgsIEdDR0xmbG9hdCB2MCkKICAg
ICBnbDo6VmVydGV4QXR0cmliMWYoaW5kZXgsIHYwKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6dmVydGV4QXR0cmliMWZ2KEdDR0x1aW50IGluZGV4LCBjb25zdCBHQ0dMZmxv
YXQqIGFycmF5KQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliMWZ2
KEdDR0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQsIDE+IGFycmF5KQogewog
ICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGds
OjpWZXJ0ZXhBdHRyaWIxZnYoaW5kZXgsIGFycmF5KTsKKyAgICBnbDo6VmVydGV4QXR0cmliMWZ2
KGluZGV4LCBhcnJheS5kYXRhKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
dmVydGV4QXR0cmliMmYoR0NHTHVpbnQgaW5kZXgsIEdDR0xmbG9hdCB2MCwgR0NHTGZsb2F0IHYx
KQpAQCAtMTY5NiwxMiArMTcwMCwxMiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2
ZXJ0ZXhBdHRyaWIyZihHQ0dMdWludCBpbmRleCwgR0NHTGZsb2F0IHYwLCBHQ0dMZgogICAgIGds
OjpWZXJ0ZXhBdHRyaWIyZihpbmRleCwgdjAsIHYxKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6dmVydGV4QXR0cmliMmZ2KEdDR0x1aW50IGluZGV4LCBjb25zdCBHQ0dMZmxv
YXQqIGFycmF5KQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliMmZ2
KEdDR0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQsIDI+IGFycmF5KQogewog
ICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGds
OjpWZXJ0ZXhBdHRyaWIyZnYoaW5kZXgsIGFycmF5KTsKKyAgICBnbDo6VmVydGV4QXR0cmliMmZ2
KGluZGV4LCBhcnJheS5kYXRhKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
dmVydGV4QXR0cmliM2YoR0NHTHVpbnQgaW5kZXgsIEdDR0xmbG9hdCB2MCwgR0NHTGZsb2F0IHYx
LCBHQ0dMZmxvYXQgdjIpCkBAIC0xNzEyLDEyICsxNzE2LDEyIEBAIHZvaWQgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYjNmKEdDR0x1aW50IGluZGV4LCBHQ0dMZmxvYXQgdjAs
IEdDR0xmCiAgICAgZ2w6OlZlcnRleEF0dHJpYjNmKGluZGV4LCB2MCwgdjEsIHYyKTsKIH0KIAot
dm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliM2Z2KEdDR0x1aW50IGlu
ZGV4LCBjb25zdCBHQ0dMZmxvYXQqIGFycmF5KQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6dmVydGV4QXR0cmliM2Z2KEdDR0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxv
YXQsIDM+IGFycmF5KQogewogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIGdsOjpWZXJ0ZXhBdHRyaWIzZnYoaW5kZXgsIGFycmF5KTsKKyAgICBn
bDo6VmVydGV4QXR0cmliM2Z2KGluZGV4LCBhcnJheS5kYXRhKTsKIH0KIAogdm9pZCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliNGYoR0NHTHVpbnQgaW5kZXgsIEdDR0xmbG9h
dCB2MCwgR0NHTGZsb2F0IHYxLCBHQ0dMZmxvYXQgdjIsIEdDR0xmbG9hdCB2MykKQEAgLTE3Mjgs
MTIgKzE3MzIsMTIgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmli
NGYoR0NHTHVpbnQgaW5kZXgsIEdDR0xmbG9hdCB2MCwgR0NHTGYKICAgICBnbDo6VmVydGV4QXR0
cmliNGYoaW5kZXgsIHYwLCB2MSwgdjIsIHYzKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6dmVydGV4QXR0cmliNGZ2KEdDR0x1aW50IGluZGV4LCBjb25zdCBHQ0dMZmxvYXQq
IGFycmF5KQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliNGZ2KEdD
R0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQsIDQ+IGFycmF5KQogewogICAg
IGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGdsOjpW
ZXJ0ZXhBdHRyaWI0ZnYoaW5kZXgsIGFycmF5KTsKKyAgICBnbDo6VmVydGV4QXR0cmliNGZ2KGlu
ZGV4LCBhcnJheS5kYXRhKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVy
dGV4QXR0cmliUG9pbnRlcihHQ0dMdWludCBpbmRleCwgR0NHTGludCBzaXplLCBHQ0dMZW51bSB0
eXBlLCBHQ0dMYm9vbGVhbiBub3JtYWxpemVkLCBHQ0dMc2l6ZWkgc3RyaWRlLCBHQ0dMaW50cHRy
IG9mZnNldCkKQEAgLTIwMjksMTMgKzIwMzMsMTMgQEAgR0NHTHNpemVpcHRyIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpnZXRWZXJ0ZXhBdHRyaWJPZmZzZXQoR0NHTHVpbnQgaW5kZXgsIEdDR0wK
ICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTHNpemVpcHRyPihyZWludGVycHJldF9jYXN0PGlu
dHB0cl90Pihwb2ludGVyKSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnRl
eFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmYs
IEdDR0xpbnQgeW9mZiwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51
bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIGNvbnN0IHZvaWQqIHBpeGVscykKK3ZvaWQgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OnRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50
IGxldmVsLCBHQ0dMaW50IHhvZmYsIEdDR0xpbnQgeW9mZiwgR0NHTHNpemVpIHdpZHRoLCBHQ0dM
c2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPGNv
bnN0IEdDR0x2b2lkPiBwaXhlbHMpCiB7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gRklYTUU6IHdlIHdpbGwgbmVlZCB0byBkZWFsIHdp
dGggUGl4ZWxTdG9yZSBwYXJhbXMgd2hlbiBkZWFsaW5nIHdpdGggaW1hZ2UgYnVmZmVycyB0aGF0
IGRpZmZlciBmcm9tIHRoZSBzdWJpbWFnZSBzaXplLgotICAgIGdsOjpUZXhTdWJJbWFnZTJEKHRh
cmdldCwgbGV2ZWwsIHhvZmYsIHlvZmYsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgcGl4
ZWxzKTsKKyAgICBnbDo6VGV4U3ViSW1hZ2UyRFJvYnVzdEFOR0xFKHRhcmdldCwgbGV2ZWwsIHhv
ZmYsIHlvZmYsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgcGl4ZWxzLmJ1ZlNpemUsIHBp
eGVscy5kYXRhKTsKICAgICBtX3N0YXRlLnRleHR1cmVTZWVkQ291bnQuYWRkKG1fc3RhdGUuY3Vy
cmVudEJvdW5kVGV4dHVyZSgpKTsKIH0KIApAQCAtMjIwMywxNyArMjIwNyw2IEBAIHZvaWQgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OmRpc3BhdGNoQ29udGV4dENoYW5nZWROb3RpZmljYXRpb24o
KQogICAgICAgICBjbGllbnQtPmRpc3BhdGNoQ29udGV4dENoYW5nZWROb3RpZmljYXRpb24oKTsK
IH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dGV4SW1hZ2UyRERpcmVjdChHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dM
c2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBm
b3JtYXQsIEdDR0xlbnVtIHR5cGUsIGNvbnN0IHZvaWQqIHBpeGVscykKLXsKLSAgICBpZiAoIW1h
a2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoIW1faXNGb3JX
ZWJHTDIgJiYgbV9leHRlbnNpb25zKQotICAgICAgICBpbnRlcm5hbGZvcm1hdCA9IG1fZXh0ZW5z
aW9ucy0+YWRqdXN0V2ViR0wxVGV4dHVyZUludGVybmFsRm9ybWF0KGludGVybmFsZm9ybWF0LCBm
b3JtYXQsIHR5cGUpOwotICAgIGdsOjpUZXhJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIGludGVybmFs
Zm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIsIGZvcm1hdCwgdHlwZSwgcGl4ZWxzKTsKLSAg
ICBtX3N0YXRlLnRleHR1cmVTZWVkQ291bnQuYWRkKG1fc3RhdGUuY3VycmVudEJvdW5kVGV4dHVy
ZSgpKTsKLX0KLQogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6ZHJhd0FycmF5c0luc3Rh
bmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xz
aXplaSBwcmltY291bnQpCiB7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKQEAgLTI0
MzYsMjAgKzI0MjksMjAgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6ZnJhbWVidWZm
ZXJUZXh0dXJlTGF5ZXIoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bQogICAgIGdsOjpGcmFtZWJ1
ZmZlclRleHR1cmVMYXllcih0YXJnZXQsIGF0dGFjaG1lbnQsIHRleHR1cmUsIGxldmVsLCBsYXll
cik7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmludmFsaWRhdGVGcmFtZWJ1
ZmZlcihHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaSBudW1BdHRhY2htZW50cywgY29uc3QgR0NH
TGVudW0qIGF0dGFjaG1lbnRzKQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6aW52YWxp
ZGF0ZUZyYW1lYnVmZmVyKEdDR0xlbnVtIHRhcmdldCwgR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+
IGF0dGFjaG1lbnRzKQogewogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIGdsOjpJbnZhbGlkYXRlRnJhbWVidWZmZXIodGFyZ2V0LCBudW1BdHRh
Y2htZW50cywgYXR0YWNobWVudHMpOworICAgIGdsOjpJbnZhbGlkYXRlRnJhbWVidWZmZXIodGFy
Z2V0LCBhdHRhY2htZW50cy5idWZTaXplLCBhdHRhY2htZW50cy5kYXRhKTsKIH0KIAotdm9pZCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6aW52YWxpZGF0ZVN1YkZyYW1lYnVmZmVyKEdDR0xlbnVt
IHRhcmdldCwgR0NHTHNpemVpIG51bUF0dGFjaG1lbnRzLCBjb25zdCBHQ0dMZW51bSogYXR0YWNo
bWVudHMsIEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBo
ZWlnaHQpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjppbnZhbGlkYXRlU3ViRnJhbWVi
dWZmZXIoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4gYXR0YWNobWVu
dHMsIEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWln
aHQpCiB7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgZ2w6OkludmFsaWRhdGVTdWJGcmFtZWJ1ZmZlcih0YXJnZXQsIG51bUF0dGFjaG1lbnRz
LCBhdHRhY2htZW50cywgeCwgeSwgd2lkdGgsIGhlaWdodCk7CisgICAgZ2w6OkludmFsaWRhdGVT
dWJGcmFtZWJ1ZmZlcih0YXJnZXQsIGF0dGFjaG1lbnRzLmJ1ZlNpemUsIGF0dGFjaG1lbnRzLmRh
dGEsIHgsIHksIHdpZHRoLCBoZWlnaHQpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpyZWFkQnVmZmVyKEdDR0xlbnVtIHNyYykKQEAgLTI1MTcsODQgKzI1MTAsOTMgQEAgdm9p
ZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTR1aShHQ0dMaW50IGxvY2F0aW9uLCBH
Q0dMdWludCB2MCwgR0NHTHVpbnQKICAgICBnbDo6VW5pZm9ybTR1aShsb2NhdGlvbiwgdjAsIHYx
LCB2MiwgdjMpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMXVp
dihHQ0dMaW50IGxvY2F0aW9uLCBjb25zdCBHQ0dMdWludCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zm
c2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1
bmlmb3JtMXVpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdWludD4gZGF0
YSkKIHsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBnbDo6VW5pZm9ybTF1aXYobG9jYXRpb24sIHNyY0xlbmd0aCwgZGF0YSArIHNyY09mZnNl
dCk7CisgICAgZ2w6OlVuaWZvcm0xdWl2KGxvY2F0aW9uLCBkYXRhLmJ1ZlNpemUsIGRhdGEuZGF0
YSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0ydWl2KEdDR0xp
bnQgbG9jYXRpb24sIGNvbnN0IEdDR0x1aW50KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdD
R0x1aW50IHNyY0xlbmd0aCkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0y
dWl2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0x1aW50PiBkYXRhKQogewor
ICAgIEFTU0VSVCghKGRhdGEuYnVmU2l6ZSAlIDIpKTsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3Vy
cmVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBnbDo6VW5pZm9ybTJ1aXYobG9jYXRpb24s
IHNyY0xlbmd0aCwgZGF0YSArIHNyY09mZnNldCk7CisgICAgZ2w6OlVuaWZvcm0ydWl2KGxvY2F0
aW9uLCBkYXRhLmJ1ZlNpemUgLyAyLCBkYXRhLmRhdGEpOwogfQogCi12b2lkIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjp1bmlmb3JtM3VpdihHQ0dMaW50IGxvY2F0aW9uLCBjb25zdCBHQ0dMdWlu
dCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCit2b2lkIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtM3VpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dM
U3Bhbjxjb25zdCBHQ0dMdWludD4gZGF0YSkKIHsKKyAgICBBU1NFUlQoIShkYXRhLmJ1ZlNpemUg
JSAzKSk7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgZ2w6OlVuaWZvcm0zdWl2KGxvY2F0aW9uLCBzcmNMZW5ndGgsIGRhdGEgKyBzcmNPZmZz
ZXQpOworICAgIGdsOjpVbmlmb3JtM3Vpdihsb2NhdGlvbiwgZGF0YS5idWZTaXplIC8gMywgZGF0
YS5kYXRhKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTR1aXYo
R0NHTGludCBsb2NhdGlvbiwgY29uc3QgR0NHTHVpbnQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNl
dCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5p
Zm9ybTR1aXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTHVpbnQ+IGRhdGEp
CiB7CisgICAgQVNTRVJUKCEoZGF0YS5idWZTaXplICUgNCkpOwogICAgIGlmICghbWFrZUNvbnRl
eHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGdsOjpVbmlmb3JtNHVpdihsb2Nh
dGlvbiwgc3JjTGVuZ3RoLCBkYXRhICsgc3JjT2Zmc2V0KTsKKyAgICBnbDo6VW5pZm9ybTR1aXYo
bG9jYXRpb24sIGRhdGEuYnVmU2l6ZSAvIDQsIGRhdGEuZGF0YSk7CiB9CiAKLXZvaWQgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXgyeDNmdihHQ0dMaW50IGxvY2F0aW9uLCBH
Q0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3Jj
T2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
Ojp1bmlmb3JtTWF0cml4MngzZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNw
b3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEpCiB7CisgICAgQVNTRVJUKCEoZGF0
YS5idWZTaXplICUgNikpOwogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIGdsOjpVbmlmb3JtTWF0cml4MngzZnYobG9jYXRpb24sIHNyY0xlbmd0
aCwgdHJhbnNwb3NlLCBkYXRhICsgc3JjT2Zmc2V0KTsKKyAgICBnbDo6VW5pZm9ybU1hdHJpeDJ4
M2Z2KGxvY2F0aW9uLCBkYXRhLmJ1ZlNpemUgLyA2LCB0cmFuc3Bvc2UsIGRhdGEuZGF0YSk7CiB9
CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXgzeDJmdihHQ0dM
aW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogZGF0
YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCit2b2lkIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4M3gyZnYoR0NHTGludCBsb2NhdGlvbiwgR0NH
TGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEpCiB7Cisg
ICAgQVNTRVJUKCEoZGF0YS5idWZTaXplICUgNikpOwogICAgIGlmICghbWFrZUNvbnRleHRDdXJy
ZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGdsOjpVbmlmb3JtTWF0cml4M3gyZnYobG9j
YXRpb24sIHNyY0xlbmd0aCwgdHJhbnNwb3NlLCBkYXRhICsgc3JjT2Zmc2V0KTsKKyAgICBnbDo6
VW5pZm9ybU1hdHJpeDN4MmZ2KGxvY2F0aW9uLCBkYXRhLmJ1ZlNpemUgLyA2LCB0cmFuc3Bvc2Us
IGRhdGEuZGF0YSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1N
YXRyaXgyeDRmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0
IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgp
Cit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4Mng0ZnYoR0NHTGlu
dCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxv
YXQ+IGRhdGEpCiB7CisgICAgQVNTRVJUKCEoZGF0YS5idWZTaXplICUgOCkpOwogICAgIGlmICgh
bWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGdsOjpVbmlmb3Jt
TWF0cml4Mng0ZnYobG9jYXRpb24sIHNyY0xlbmd0aCwgdHJhbnNwb3NlLCBkYXRhICsgc3JjT2Zm
c2V0KTsKKyAgICBnbDo6VW5pZm9ybU1hdHJpeDJ4NGZ2KGxvY2F0aW9uLCBkYXRhLmJ1ZlNpemUg
LyA4LCB0cmFuc3Bvc2UsIGRhdGEuZGF0YSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OnVuaWZvcm1NYXRyaXg0eDJmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0
cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dM
dWludCBzcmNMZW5ndGgpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0
cml4NHgyZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bh
bjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEpCiB7CisgICAgQVNTRVJUKCEoZGF0YS5idWZTaXplICUg
OCkpOwogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIGdsOjpVbmlmb3JtTWF0cml4NHgyZnYobG9jYXRpb24sIHNyY0xlbmd0aCwgdHJhbnNwb3Nl
LCBkYXRhICsgc3JjT2Zmc2V0KTsKKyAgICBnbDo6VW5pZm9ybU1hdHJpeDR4MmZ2KGxvY2F0aW9u
LCBkYXRhLmJ1ZlNpemUgLyA4LCB0cmFuc3Bvc2UsIGRhdGEuZGF0YSk7CiB9CiAKLXZvaWQgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXgzeDRmdihHQ0dMaW50IGxvY2F0aW9u
LCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQg
c3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjp1bmlmb3JtTWF0cml4M3g0ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJh
bnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEpCiB7CisgICAgQVNTRVJUKCEo
ZGF0YS5idWZTaXplICUgMTIpKTsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBnbDo6VW5pZm9ybU1hdHJpeDN4NGZ2KGxvY2F0aW9uLCBzcmNM
ZW5ndGgsIHRyYW5zcG9zZSwgZGF0YSArIHNyY09mZnNldCk7CisgICAgZ2w6OlVuaWZvcm1NYXRy
aXgzeDRmdihsb2NhdGlvbiwgZGF0YS5idWZTaXplIC8gMTIsIHRyYW5zcG9zZSwgZGF0YS5kYXRh
KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybU1hdHJpeDR4M2Z2
KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0
KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKK3ZvaWQgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXg0eDNmdihHQ0dMaW50IGxvY2F0aW9u
LCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gZGF0YSkK
IHsKKyAgICBBU1NFUlQoIShkYXRhLmJ1ZlNpemUgJSAxMikpOwogICAgIGlmICghbWFrZUNvbnRl
eHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGdsOjpVbmlmb3JtTWF0cml4NHgz
ZnYobG9jYXRpb24sIHNyY0xlbmd0aCwgdHJhbnNwb3NlLCBkYXRhICsgc3JjT2Zmc2V0KTsKKyAg
ICBnbDo6VW5pZm9ybU1hdHJpeDR4M2Z2KGxvY2F0aW9uLCBkYXRhLmJ1ZlNpemUgLyAxMiwgdHJh
bnNwb3NlLCBkYXRhLmRhdGEpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2
ZXJ0ZXhBdHRyaWJJNGkoR0NHTHVpbnQgaW5kZXgsIEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dM
aW50IHosIEdDR0xpbnQgdykKQEAgLTI2MDUsMTIgKzI2MDcsMTIgQEAgdm9pZCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliSTRpKEdDR0x1aW50IGluZGV4LCBHQ0dMaW50IHgs
IEdDR0xpbnQKICAgICBnbDo6VmVydGV4QXR0cmliSTRpKGluZGV4LCB4LCB5LCB6LCB3KTsKIH0K
IAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliSTRpdihHQ0dMdWlu
dCBpbmRleCwgY29uc3QgR0NHTGludCogdmFsdWVzKQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6dmVydGV4QXR0cmliSTRpdihHQ0dMdWludCBpbmRleCwgR0NHTFNwYW48Y29uc3QgR0NH
TGludCwgND4gdmFsdWVzKQogewogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIGdsOjpWZXJ0ZXhBdHRyaWJJNGl2KGluZGV4LCB2YWx1ZXMpOwor
ICAgIGdsOjpWZXJ0ZXhBdHRyaWJJNGl2KGluZGV4LCB2YWx1ZXMuZGF0YSk7CiB9CiAKIHZvaWQg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYkk0dWkoR0NHTHVpbnQgaW5kZXgs
IEdDR0x1aW50IHgsIEdDR0x1aW50IHksIEdDR0x1aW50IHosIEdDR0x1aW50IHcpCkBAIC0yNjIx
LDEyICsyNjIzLDEyIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJp
Ykk0dWkoR0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50IHgsIEdDR0x1CiAgICAgZ2w6OlZlcnRleEF0
dHJpYkk0dWkoaW5kZXgsIHgsIHksIHosIHcpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjp2ZXJ0ZXhBdHRyaWJJNHVpdihHQ0dMdWludCBpbmRleCwgY29uc3QgR0NHTHVpbnQq
IHZhbHVlcykKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYkk0dWl2
KEdDR0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdWludCwgND4gdmFsdWVzKQogewog
ICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGds
OjpWZXJ0ZXhBdHRyaWJJNHVpdihpbmRleCwgdmFsdWVzKTsKKyAgICBnbDo6VmVydGV4QXR0cmli
STR1aXYoaW5kZXgsIHZhbHVlcy5kYXRhKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6ZHJhd1JhbmdlRWxlbWVudHMoR0NHTGVudW0gbW9kZSwgR0NHTHVpbnQgc3RhcnQsIEdD
R0x1aW50IGVuZCwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9m
ZnNldCkKQEAgLTI2MzcsMzYgKzI2MzksMzYgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6ZHJhd1JhbmdlRWxlbWVudHMoR0NHTGVudW0gbW9kZSwgR0NHTHVpbnQgc3RhcnQsIEcKICAg
ICBnbDo6RHJhd1JhbmdlRWxlbWVudHMobW9kZSwgc3RhcnQsIGVuZCwgY291bnQsIHR5cGUsIHJl
aW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KG9mZnNldCkpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpkcmF3QnVmZmVycyhHQ0dMc2l6ZWkgbiwgY29uc3QgR0NHTGVudW0qIGJ1ZnMp
Cit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpkcmF3QnVmZmVycyhHQ0dMU3Bhbjxjb25z
dCBHQ0dMZW51bT4gYnVmcykKIHsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBnbDo6RHJhd0J1ZmZlcnMobiwgYnVmcyk7CisgICAgZ2w6OkRy
YXdCdWZmZXJzKGJ1ZnMuYnVmU2l6ZSwgYnVmcy5kYXRhKTsKIH0KIAotdm9pZCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6Y2xlYXJCdWZmZXJpdihHQ0dMZW51bSBidWZmZXIsIEdDR0xpbnQgZHJh
d2J1ZmZlciwgY29uc3QgR0NHTGludCogdmFsdWVzLCBHQ0dMdWludCBzcmNPZmZzZXQpCit2b2lk
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjbGVhckJ1ZmZlcml2KEdDR0xlbnVtIGJ1ZmZlciwg
R0NHTGludCBkcmF3YnVmZmVyLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50PiB2YWx1ZXMpCiB7CiAg
ICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZ2w6
OkNsZWFyQnVmZmVyaXYoYnVmZmVyLCBkcmF3YnVmZmVyLCB2YWx1ZXMgKyBzcmNPZmZzZXQpOwor
ICAgIGdsOjpDbGVhckJ1ZmZlcml2KGJ1ZmZlciwgZHJhd2J1ZmZlciwgdmFsdWVzLmRhdGEpOwog
fQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjbGVhckJ1ZmZlcnVpdihHQ0dMZW51
bSBidWZmZXIsIEdDR0xpbnQgZHJhd2J1ZmZlciwgY29uc3QgR0NHTHVpbnQqIHZhbHVlcywgR0NH
THVpbnQgc3JjT2Zmc2V0KQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y2xlYXJCdWZm
ZXJ1aXYoR0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50IGRyYXdidWZmZXIsIEdDR0xTcGFuPGNvbnN0
IEdDR0x1aW50PiB2YWx1ZXMpCiB7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgZ2w6OkNsZWFyQnVmZmVydWl2KGJ1ZmZlciwgZHJhd2J1ZmZl
ciwgdmFsdWVzICsgc3JjT2Zmc2V0KTsKKyAgICBnbDo6Q2xlYXJCdWZmZXJ1aXYoYnVmZmVyLCBk
cmF3YnVmZmVyLCB2YWx1ZXMuZGF0YSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OmNsZWFyQnVmZmVyZnYoR0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50IGRyYXdidWZmZXIsIGNv
bnN0IEdDR0xmbG9hdCogdmFsdWVzLCBHQ0dMdWludCBzcmNPZmZzZXQpCit2b2lkIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpjbGVhckJ1ZmZlcmZ2KEdDR0xlbnVtIGJ1ZmZlciwgR0NHTGludCBk
cmF3YnVmZmVyLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IHZhbHVlcykKIHsKICAgICBpZiAo
IW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBnbDo6Q2xlYXJC
dWZmZXJmdihidWZmZXIsIGRyYXdidWZmZXIsIHZhbHVlcyArIHNyY09mZnNldCk7CisgICAgZ2w6
OkNsZWFyQnVmZmVyZnYoYnVmZmVyLCBkcmF3YnVmZmVyLCB2YWx1ZXMuZGF0YSk7CiB9CiAKIHZv
aWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNsZWFyQnVmZmVyZmkoR0NHTGVudW0gYnVmZmVy
LCBHQ0dMaW50IGRyYXdidWZmZXIsIEdDR0xmbG9hdCBkZXB0aCwgR0NHTGludCBzdGVuY2lsKQpA
QCAtMjg1NCw5NCArMjg1Niw2IEBAIFZlY3RvcjxHQ0dMdWludD4gR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OmdldFVuaWZvcm1JbmRpY2VzKFBsYXRmb3JtR0xPYmplY3QgcHJvCiAgICAgcmV0dXJu
IHJlc3VsdDsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTFmdihH
Q0dMaW50IGxvY2F0aW9uLCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNl
dCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQotewotICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpVbmlmb3JtMWZ2KGxvY2F0aW9uLCBzcmNMZW5n
dGgsIGRhdGEgKyBzcmNPZmZzZXQpOwotfQotCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
Ojp1bmlmb3JtMmZ2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NH
THVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCi17Ci0gICAgaWYgKCFtYWtlQ29u
dGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OlVuaWZvcm0yZnYobG9j
YXRpb24sIHNyY0xlbmd0aCwgZGF0YSArIHNyY09mZnNldCk7Ci19Ci0KLXZvaWQgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OnVuaWZvcm0zZnYoR0NHTGludCBsb2NhdGlvbiwgY29uc3QgR0NHTGZs
b2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKLXsKLSAg
ICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6
VW5pZm9ybTNmdihsb2NhdGlvbiwgc3JjTGVuZ3RoLCBkYXRhICsgc3JjT2Zmc2V0KTsKLX0KLQot
dm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTRmdihHQ0dMaW50IGxvY2F0aW9u
LCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3Jj
TGVuZ3RoKQotewotICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIGdsOjpVbmlmb3JtNGZ2KGxvY2F0aW9uLCBzcmNMZW5ndGgsIGRhdGEgKyBzcmNP
ZmZzZXQpOwotfQotCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMWl2KEdD
R0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0xpbnQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwg
R0NHTHVpbnQgc3JjTGVuZ3RoKQotewotICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIGdsOjpVbmlmb3JtMWl2KGxvY2F0aW9uLCBzcmNMZW5ndGgs
IGRhdGEgKyBzcmNPZmZzZXQpOwotfQotCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1
bmlmb3JtMml2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0xpbnQqIGRhdGEsIEdDR0x1aW50
IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQotewotICAgIGlmICghbWFrZUNvbnRleHRD
dXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpVbmlmb3JtMml2KGxvY2F0aW9u
LCBzcmNMZW5ndGgsIGRhdGEgKyBzcmNPZmZzZXQpOwotfQotCi12b2lkIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjp1bmlmb3JtM2l2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0xpbnQqIGRh
dGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQotewotICAgIGlmICgh
bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpVbmlmb3Jt
M2l2KGxvY2F0aW9uLCBzcmNMZW5ndGgsIGRhdGEgKyBzcmNPZmZzZXQpOwotfQotCi12b2lkIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtNGl2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0
IEdDR0xpbnQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQot
ewotICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAg
IGdsOjpVbmlmb3JtNGl2KGxvY2F0aW9uLCBzcmNMZW5ndGgsIGRhdGEgKyBzcmNPZmZzZXQpOwot
fQotCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4MmZ2KEdDR0xp
bnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiBkYXRh
LCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKLXsKLSAgICBpZiAoIW1h
a2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6VW5pZm9ybU1h
dHJpeDJmdihsb2NhdGlvbiwgc3JjTGVuZ3RoLCB0cmFuc3Bvc2UsIGRhdGEgKyBzcmNPZmZzZXQp
OwotfQotCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4M2Z2KEdD
R0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiBk
YXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKLXsKLSAgICBpZiAo
IW1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6VW5pZm9y
bU1hdHJpeDNmdihsb2NhdGlvbiwgc3JjTGVuZ3RoLCB0cmFuc3Bvc2UsIGRhdGEgKyBzcmNPZmZz
ZXQpOwotfQotCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4NGZ2
KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0
KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKLXsKLSAgICBp
ZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6VW5p
Zm9ybU1hdHJpeDRmdihsb2NhdGlvbiwgc3JjTGVuZ3RoLCB0cmFuc3Bvc2UsIGRhdGEgKyBzcmNP
ZmZzZXQpOwotfQotCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRBY3RpdmVVbmlm
b3JtQmxvY2tpdihHQ0dMdWludCBwcm9ncmFtLCBHQ0dMdWludCB1bmlmb3JtQmxvY2tJbmRleCwg
R0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xpbnQ+IHBhcmFtcykKIHsKICAgICBpZiAoIW1h
a2VDb250ZXh0Q3VycmVudCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY3YvR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2N2L0dyYXBoaWNzQ29udGV4dEdMQ1ZBTkdMRS5jcHAKaW5kZXgg
ZjliZmNhM2M0OGNlMjhlYWIxOTQ0YTRmNWU4NTMwYTQyNWY4NjJmZS4uMWE0MzM3MmMyMWUyMjAy
MTc5NDZkNjdhZTAxNmMwODEyMTM0YjIwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY3YvR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9HcmFwaGljc0NvbnRleHRHTENWQU5HTEUu
Y3BwCkBAIC0yMzUsMTggKzIzNSwxMyBAQCBzdHJ1Y3QgR0xmbG9hdENvbG9ycyB7CiB9OwogCiBz
dHJ1Y3QgWUNiQ3JNYXRyaXggewotICAgIHVuaW9uIHsKLSAgICAgICAgR0xmbG9hdCByb3dzWzRd
WzRdOwotICAgICAgICBHTGZsb2F0IGRhdGFbMTZdOwotICAgIH07CisgICAgR0xmbG9hdCByb3dz
WzRdWzRdOwogCiAgICAgY29uc3RleHByIFlDYkNyTWF0cml4KFBpeGVsUmFuZ2UsIEdMZmxvYXQg
Y2JDb2VmZmljaWVudCwgR0xmbG9hdCBjckNvZWZmaWNpZW50KTsKIAotICAgIG9wZXJhdG9yIFZl
Y3RvcjxHTGZsb2F0PigpIGNvbnN0CisgICAgb3BlcmF0b3IgR0NHTFNwYW48Y29uc3QgR0xmbG9h
dCwgMTY+KCkgY29uc3QKICAgICB7Ci0gICAgICAgIFZlY3RvcjxHTGZsb2F0PiB2ZWN0b3I7Ci0g
ICAgICAgIHZlY3Rvci5hcHBlbmQoZGF0YSwgMTYpOwotICAgICAgICByZXR1cm4gdmVjdG9yOwor
ICAgICAgICByZXR1cm4gbWFrZUdDR0xTcGFuPDE2Pigmcm93c1swXVswXSk7CiAgICAgfQogCiAg
ICAgY29uc3RleHByIEdMZmxvYXRDb2xvciBvcGVyYXRvciooY29uc3QgR0xmbG9hdENvbG9yJikg
Y29uc3Q7CkBAIC0zMTgsMTAgKzMxMywxMCBAQCBjb25zdGV4cHIgR0xmbG9hdENvbG9yIFlDYkNy
TWF0cml4OjpvcGVyYXRvciooY29uc3QgR0xmbG9hdENvbG9yJiBjb2xvcikgY29uc3QKICAgICAp
OwogfQogCi1zdGF0aWMgY29uc3QgVmVjdG9yPEdMZmxvYXQ+IFlDYkNyVG9SR0JNYXRyaXhGb3JS
YW5nZUFuZFRyYW5zZmVyRnVuY3Rpb24oUGl4ZWxSYW5nZSByYW5nZSwgVHJhbnNmZXJGdW5jdGlv
bkNWIHRyYW5zZmVyRnVuY3Rpb24pCitzdGF0aWMgR0NHTFNwYW48Y29uc3QgR0xmbG9hdCwgMTY+
IFlDYkNyVG9SR0JNYXRyaXhGb3JSYW5nZUFuZFRyYW5zZmVyRnVuY3Rpb24oUGl4ZWxSYW5nZSBy
YW5nZSwgVHJhbnNmZXJGdW5jdGlvbkNWIHRyYW5zZmVyRnVuY3Rpb24pCiB7CiAgICAgdXNpbmcg
TWFwS2V5ID0gc3RkOjpwYWlyPFBpeGVsUmFuZ2UsIFRyYW5zZmVyRnVuY3Rpb25DVj47Ci0gICAg
dXNpbmcgTWF0cml4TWFwID0gU3RkTWFwPE1hcEtleSwgVmVjdG9yPEdMZmxvYXQ+PjsKKyAgICB1
c2luZyBNYXRyaXhNYXAgPSBTdGRNYXA8TWFwS2V5LCBjb25zdCBZQ2JDck1hdHJpeCY+OwogCiAg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPE1hdHJpeE1hcD4gbWF0cmljZXM7CiAgICAgc3RhdGlj
IGRpc3BhdGNoX29uY2VfdCBvbmNlVG9rZW47CkBAIC01MjYsNyArNTIxLDcgQEAgYm9vbCBHcmFw
aGljc0NvbnRleHRHTENWQU5HTEU6OmluaXRpYWxpemVVVkNvbnRleHRPYmplY3RzKCkKICAgICBm
bG9hdCB2ZXJ0aWNlc1sxMl0gPSB7IC0xLCAtMSwgMSwgLTEsIDEsIDEsIDEsIDEsIC0xLCAxLCAt
MSwgLTEgfTsKIAogICAgIG1fY29udGV4dC0+YmluZEJ1ZmZlcihHcmFwaGljc0NvbnRleHRHTDo6
QVJSQVlfQlVGRkVSLCBtX3l1dlZlcnRleEJ1ZmZlcik7Ci0gICAgbV9jb250ZXh0LT5idWZmZXJE
YXRhKEdyYXBoaWNzQ29udGV4dEdMOjpBUlJBWV9CVUZGRVIsIHNpemVvZih2ZXJ0aWNlcyksIHZl
cnRpY2VzLCBHcmFwaGljc0NvbnRleHRHTDo6U1RBVElDX0RSQVcpOworICAgIG1fY29udGV4dC0+
YnVmZmVyRGF0YShHcmFwaGljc0NvbnRleHRHTDo6QVJSQVlfQlVGRkVSLCBHQ0dMU3Bhbjxjb25z
dCBHQ0dMdm9pZD4odmVydGljZXMsIHNpemVvZih2ZXJ0aWNlcykpLCBHcmFwaGljc0NvbnRleHRH
TDo6U1RBVElDX0RSQVcpOwogICAgIG1fY29udGV4dC0+ZW5hYmxlVmVydGV4QXR0cmliQXJyYXko
bV95dXZQb3NpdGlvbkF0dHJpYnV0ZUxvY2F0aW9uKTsKICAgICBtX2NvbnRleHQtPnZlcnRleEF0
dHJpYlBvaW50ZXIobV95dXZQb3NpdGlvbkF0dHJpYnV0ZUxvY2F0aW9uLCAyLCBHcmFwaGljc0Nv
bnRleHRHTDo6RkxPQVQsIGZhbHNlLCAwLCAwKTsKIApAQCAtNjI1LDcgKzYyMCw3IEBAIGJvb2wg
R3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFOjpjb3B5UGl4ZWxCdWZmZXJUb1RleHR1cmUoQ1ZQaXhl
bEJ1ZmZlclJlZiBpbWFnZSwKICAgICBtX2NvbnRleHQtPnRleFBhcmFtZXRlcmkoR3JhcGhpY3ND
b250ZXh0R0w6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4dEdMOjpURVhUVVJFX01JTl9GSUxU
RVIsIEdyYXBoaWNzQ29udGV4dEdMOjpMSU5FQVIpOwogICAgIG1fY29udGV4dC0+dGV4UGFyYW1l
dGVyaShHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0R0w6OlRF
WFRVUkVfV1JBUF9TLCBHcmFwaGljc0NvbnRleHRHTDo6Q0xBTVBfVE9fRURHRSk7CiAgICAgbV9j
b250ZXh0LT50ZXhQYXJhbWV0ZXJpKEdyYXBoaWNzQ29udGV4dEdMOjpURVhUVVJFXzJELCBHcmFw
aGljc0NvbnRleHRHTDo6VEVYVFVSRV9XUkFQX1QsIEdyYXBoaWNzQ29udGV4dEdMOjpDTEFNUF9U
T19FREdFKTsKLSAgICBtX2NvbnRleHQtPnRleEltYWdlMkREaXJlY3QoR3JhcGhpY3NDb250ZXh0
R0w6OlRFWFRVUkVfMkQsIGxldmVsLCBpbnRlcm5hbEZvcm1hdCwgd2lkdGgsIGhlaWdodCwgMCwg
Zm9ybWF0LCB0eXBlLCBudWxscHRyKTsKKyAgICBnbDo6VGV4SW1hZ2UyRChHTF9URVhUVVJFXzJE
LCBsZXZlbCwgaW50ZXJuYWxGb3JtYXQsIHdpZHRoLCBoZWlnaHQsIDAsIGZvcm1hdCwgdHlwZSwg
bnVsbHB0cik7CiAKICAgICBtX2NvbnRleHQtPmZyYW1lYnVmZmVyVGV4dHVyZTJEKEdyYXBoaWNz
Q29udGV4dEdMOjpGUkFNRUJVRkZFUiwgR3JhcGhpY3NDb250ZXh0R0w6OkNPTE9SX0FUVEFDSE1F
TlQwLCBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV8yRCwgb3V0cHV0VGV4dHVyZSwgbGV2ZWwp
OwogICAgIEdDR0xlbnVtIHN0YXR1cyA9IG1fY29udGV4dC0+Y2hlY2tGcmFtZWJ1ZmZlclN0YXR1
cyhHcmFwaGljc0NvbnRleHRHTDo6RlJBTUVCVUZGRVIpOwpAQCAtNjgyLDggKzY3Nyw4IEBAIGJv
b2wgR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFOjpjb3B5UGl4ZWxCdWZmZXJUb1RleHR1cmUoQ1ZQ
aXhlbEJ1ZmZlclJlZiBpbWFnZSwKIAogICAgIGF1dG8gcmFuZ2UgPSBwaXhlbFJhbmdlRnJvbVBp
eGVsRm9ybWF0KHBpeGVsRm9ybWF0KTsKICAgICBhdXRvIHRyYW5zZmVyRnVuY3Rpb24gPSB0cmFu
c2ZlckZ1bmN0aW9uRnJvbVN0cmluZygoQ0ZTdHJpbmdSZWYpQ1ZCdWZmZXJHZXRBdHRhY2htZW50
KGltYWdlLCBrQ1ZJbWFnZUJ1ZmZlcllDYkNyTWF0cml4S2V5LCBuaWwpKTsKLSAgICBhdXRvJiBj
b2xvck1hdHJpeCA9IFlDYkNyVG9SR0JNYXRyaXhGb3JSYW5nZUFuZFRyYW5zZmVyRnVuY3Rpb24o
cmFuZ2UsIHRyYW5zZmVyRnVuY3Rpb24pOwotICAgIG1fY29udGV4dC0+dW5pZm9ybU1hdHJpeDRm
dihtX2NvbG9yTWF0cml4VW5pZm9ybUxvY2F0aW9uLCAxLCBHTF9GQUxTRSwgY29sb3JNYXRyaXgu
ZGF0YSgpKTsKKyAgICBhdXRvIGNvbG9yTWF0cml4ID0gWUNiQ3JUb1JHQk1hdHJpeEZvclJhbmdl
QW5kVHJhbnNmZXJGdW5jdGlvbihyYW5nZSwgdHJhbnNmZXJGdW5jdGlvbik7CisgICAgbV9jb250
ZXh0LT51bmlmb3JtTWF0cml4NGZ2KG1fY29sb3JNYXRyaXhVbmlmb3JtTG9jYXRpb24sIEdMX0ZB
TFNFLCBjb2xvck1hdHJpeCk7CiAKICAgICAvLyBEbyB0aGUgYWN0dWFsIGRyYXdpbmcuCiAgICAg
bV9jb250ZXh0LT5kcmF3QXJyYXlzKEdyYXBoaWNzQ29udGV4dEdMOjpUUklBTkdMRVMsIDAsIDYp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4
dGVuc2lvbnNHTE9wZW5HTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmNwcAppbmRleCAxNzc4NmE2NGJhNGUxZGEwMDk2NGVh
ZTk5N2QyOTI3NjRkYWQxODk2Li4xOTZiYjU1OTRjZTFmMWRjMmZkNDg0NWY5NzkwYmRjNThmYmFh
MGY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wv
RXh0ZW5zaW9uc0dMT3BlbkdMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmNwcApAQCAtMjA4LDE0ICsyMDgsMTQgQEAg
Ym9vbCBFeHRlbnNpb25zR0xPcGVuR0w6OnN1cHBvcnRzRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYg
bmFtZSkKICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKG5hbWUpOwog
fQogCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTDo6ZHJhd0J1ZmZlcnNFWFQoR0NHTHNpemVpIG4s
IGNvbnN0IEdDR0xlbnVtKiBidWZzKQordm9pZCBFeHRlbnNpb25zR0xPcGVuR0w6OmRyYXdCdWZm
ZXJzRVhUKEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVtPiBidWZzKQogewogICAgIGlmICghbV9jb250
ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gIEZJ
WE1FOiBpbXBsZW1lbnQgc3VwcG9ydCBmb3Igb3RoZXIgcGxhdGZvcm1zLgogI2lmIFBMQVRGT1JN
KEdUSykKLSAgICA6OmdsRHJhd0J1ZmZlcnMobiwgYnVmcyk7CisgICAgOjpnbERyYXdCdWZmZXJz
KGJ1ZnMuYnVmU2l6ZSwgYnVmcy5kYXQpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0obik7CiAg
ICAgVU5VU0VEX1BBUkFNKGJ1ZnMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5oCmluZGV4IGQzYmU4
Y2MyOGMxN2MyZGY1ZDNiNDg2NmJiM2M1Zjk0NGM0NTVmMjEuLjQ5NjI4OWNlYTBlNmEwOWQ2ZGI3
MzFmODY4YjU0OTkzYTQ0NDQ5YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmgKQEAgLTUwLDcg
KzUwLDcgQEAgcHVibGljOgogICAgIHZvaWQgaW5zZXJ0RXZlbnRNYXJrZXJFWFQoY29uc3QgU3Ry
aW5nJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBwdXNoR3JvdXBNYXJrZXJFWFQoY29uc3QgU3RyaW5n
Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBwb3BHcm91cE1hcmtlckVYVCh2b2lkKSBvdmVycmlkZTsK
LSAgICB2b2lkIGRyYXdCdWZmZXJzRVhUKEdDR0xzaXplaSwgY29uc3QgR0NHTGVudW0qKSBvdmVy
cmlkZTsKKyAgICB2b2lkIGRyYXdCdWZmZXJzRVhUKEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVtPikg
b3ZlcnJpZGU7CiAKICAgICB2b2lkIGRyYXdBcnJheXNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwg
R0NHTGludCBmaXJzdCwgR0NHTHNpemVpIGNvdW50LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSBvdmVy
cmlkZTsKICAgICB2b2lkIGRyYXdFbGVtZW50c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dM
c2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIGxvbmcgbG9uZyBvZmZzZXQsIEdDR0xzaXplaSBw
cmltY291bnQpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmNw
cAppbmRleCA2ODZmMmQ1MTE0OGVmOWIxMmZlZjEwYjNjMmFjNzBiMmEzNWQyMTU3Li5lOTBjMDY2
MGQyM2MwYmIyY2EyYmRkZjM2ZDY4NGYzOGE5MmQ4ZWRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9u
c0dMT3BlbkdMQ29tbW9uLmNwcApAQCAtMjU5LDcgKzI1OSw3IEBAIHZvaWQgRXh0ZW5zaW9uc0dM
T3BlbkdMQ29tbW9uOjpyZWFkUGl4ZWxzUm9idXN0QU5HTEUoaW50LCBpbnQsIEdDR0xzaXplaSwg
R0NHTHNpCiAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJB
VElPTik7CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjp0ZXhJbWFnZTJEUm9i
dXN0QU5HTEUoR0NHTGVudW0sIGludCwgaW50LCBHQ0dMc2l6ZWksIEdDR0xzaXplaSwgaW50LCBH
Q0dMZW51bSwgR0NHTGVudW0sIEdDR0xzaXplaSwgY29uc3Qgdm9pZCAqKQordm9pZCBFeHRlbnNp
b25zR0xPcGVuR0xDb21tb246OnRleEltYWdlMkRSb2J1c3RBTkdMRShHQ0dMZW51bSwgaW50LCBp
bnQsIEdDR0xzaXplaSwgR0NHTHNpemVpLCBpbnQsIEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTFNw
YW48Y29uc3QgR0NHTHZvaWQ+KQogewogICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3Io
R0xfSU5WQUxJRF9PUEVSQVRJT04pOwogfQpAQCAtMjc0LDM4ICsyNzQsMzggQEAgdm9pZCBFeHRl
bnNpb25zR0xPcGVuR0xDb21tb246OnRleFBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0s
IEdDR0xlbnVtLCBHQ0cKICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFM
SURfT1BFUkFUSU9OKTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OnRleFN1
YkltYWdlMkRSb2J1c3RBTkdMRShHQ0dMZW51bSwgaW50LCBpbnQsIGludCwgR0NHTHNpemVpLCBH
Q0dMc2l6ZWksIEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTHNpemVpLCBjb25zdCB2b2lkICopCit2
b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6dGV4U3ViSW1hZ2UyRFJvYnVzdEFOR0xFKEdD
R0xlbnVtLCBpbnQsIGludCwgaW50LCBHQ0dMc2l6ZWksIEdDR0xzaXplaSwgR0NHTGVudW0sIEdD
R0xlbnVtLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4pCiB7CiAgICAgbV9jb250ZXh0LT5zeW50
aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CiB9CiAKLXZvaWQgRXh0ZW5zaW9u
c0dMT3BlbkdMQ29tbW9uOjpjb21wcmVzc2VkVGV4SW1hZ2UyRFJvYnVzdEFOR0xFKEdDR0xlbnVt
LCBpbnQsIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSwgaW50LCBHQ0dMc2l6ZWksIEdD
R0xzaXplaSwgY29uc3Qgdm9pZCopCit2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Y29t
cHJlc3NlZFRleEltYWdlMkRSb2J1c3RBTkdMRShHQ0dMZW51bSwgaW50LCBHQ0dMZW51bSwgR0NH
THNpemVpLCBHQ0dMc2l6ZWksIGludCwgR0NHTHNpemVpLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9p
ZD4pCiB7CiAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJB
VElPTik7CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpjb21wcmVzc2VkVGV4
U3ViSW1hZ2UyRFJvYnVzdEFOR0xFKEdDR0xlbnVtLCBpbnQsIGludCwgaW50LCBHQ0dMc2l6ZWks
IEdDR0xzaXplaSwgR0NHTGVudW0sIEdDR0xzaXplaSwgR0NHTHNpemVpLCBjb25zdCB2b2lkKikK
K3ZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRFJv
YnVzdEFOR0xFKEdDR0xlbnVtLCBpbnQsIGludCwgaW50LCBHQ0dMc2l6ZWksIEdDR0xzaXplaSwg
R0NHTGVudW0sIEdDR0xzaXplaSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+KQogewogICAgIG1f
Y29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwogfQogCi12
b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Y29tcHJlc3NlZFRleEltYWdlM0RSb2J1c3RB
TkdMRShHQ0dMZW51bSwgaW50LCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWksIEdDR0xz
aXplaSwgaW50LCBHQ0dMc2l6ZWksIEdDR0xzaXplaSwgY29uc3Qgdm9pZCopCit2b2lkIEV4dGVu
c2lvbnNHTE9wZW5HTENvbW1vbjo6Y29tcHJlc3NlZFRleEltYWdlM0RSb2J1c3RBTkdMRShHQ0dM
ZW51bSwgaW50LCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSwgaW50
LCBHQ0dMc2l6ZWksIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPikKIHsKICAgICBtX2NvbnRleHQt
PnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKIH0KIAotdm9pZCBFeHRl
bnNpb25zR0xPcGVuR0xDb21tb246OmNvbXByZXNzZWRUZXhTdWJJbWFnZTNEUm9idXN0QU5HTEUo
R0NHTGVudW0sIGludCwgaW50LCBpbnQsIGludCwgR0NHTHNpemVpLCBHQ0dMc2l6ZWksIEdDR0xz
aXplaSwgR0NHTGVudW0sIEdDR0xzaXplaSwgR0NHTHNpemVpLCBjb25zdCB2b2lkKikKK3ZvaWQg
RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpjb21wcmVzc2VkVGV4U3ViSW1hZ2UzRFJvYnVzdEFO
R0xFKEdDR0xlbnVtLCBpbnQsIGludCwgaW50LCBpbnQsIEdDR0xzaXplaSwgR0NHTHNpemVpLCBH
Q0dMc2l6ZWksIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPikK
IHsKICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9O
KTsKIH0KIAogCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6dGV4SW1hZ2UzRFJvYnVz
dEFOR0xFKEdDR0xlbnVtLCBpbnQsIGludCwgR0NHTHNpemVpLCBHQ0dMc2l6ZWksIEdDR0xzaXpl
aSwgaW50LCBHQ0dMZW51bSwgR0NHTGVudW0sIEdDR0xzaXplaSwgY29uc3Qgdm9pZCAqKQordm9p
ZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OnRleEltYWdlM0RSb2J1c3RBTkdMRShHQ0dMZW51
bSwgaW50LCBpbnQsIEdDR0xzaXplaSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWksIGludCwgR0NHTGVu
dW0sIEdDR0xlbnVtLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4pCiB7CiAgICAgbV9jb250ZXh0
LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CiB9CiAKLXZvaWQgRXh0
ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjp0ZXhTdWJJbWFnZTNEUm9idXN0QU5HTEUoR0NHTGVudW0s
IGludCwgaW50LCBpbnQsIGludCwgR0NHTHNpemVpLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSwgR0NH
TGVudW0sIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIGNvbnN0IHZvaWQgKikKK3ZvaWQgRXh0ZW5zaW9u
c0dMT3BlbkdMQ29tbW9uOjp0ZXhTdWJJbWFnZTNEUm9idXN0QU5HTEUoR0NHTGVudW0sIGludCwg
aW50LCBpbnQsIGludCwgR0NHTHNpemVpLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSwgR0NHTGVudW0s
IEdDR0xlbnVtLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4pCiB7CiAgICAgbV9jb250ZXh0LT5z
eW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdM
Q29tbW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5z
aW9uc0dMT3BlbkdMQ29tbW9uLmgKaW5kZXggOTdlZWRmYjc0ODVjODMyZjc5M2M4Y2ZmMGZhMTdm
YmZmYmU2NTg4ZC4uZGQyMzRiYTgxNzIyOGU1MWE2OTAyNDI0ZmZhYjg0ZWE5ZjIxYzBkMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lv
bnNHTE9wZW5HTENvbW1vbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uaApAQCAtNTAsNyArNTAsNyBAQCBwdWJs
aWM6CiAgICAgR0NHTGJvb2xlYW4gaXNWZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybUdMT2JqZWN0KSBv
dmVycmlkZSA9IDA7CiAgICAgdm9pZCBiaW5kVmVydGV4QXJyYXlPRVMoUGxhdGZvcm1HTE9iamVj
dCkgb3ZlcnJpZGUgPSAwOwogCi0gICAgdm9pZCBkcmF3QnVmZmVyc0VYVChHQ0dMc2l6ZWksIGNv
bnN0IEdDR0xlbnVtKikgb3ZlcnJpZGUgPSAwOworICAgIHZvaWQgZHJhd0J1ZmZlcnNFWFQoR0NH
TFNwYW48Y29uc3QgR0NHTGVudW0+KSBvdmVycmlkZSA9IDA7CiAKICAgICBTdHJpbmcgZ2V0VHJh
bnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKFBsYXRmb3JtR0xPYmplY3QpIG92ZXJyaWRlOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5z
aW9uc0dMT3BlbkdMRVMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmNwcAppbmRleCBkMjhmNGEwMzFlYmRjNDgzODc1ZDM5
ODQ4N2Q1Nzg3NDhmZGU0N2U3Li4zNmMzZWYzOGY5OGI5OWFmMDExNTA2OTkxNDI3YmFjZWZjYmI4
YWMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wv
RXh0ZW5zaW9uc0dMT3BlbkdMRVMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5jcHAKQEAgLTE4MCw3ICsxODAsNyBA
QCB2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTEVTOjpiaW5kVmVydGV4QXJyYXlPRVMoUGxhdGZvcm1H
TE9iamVjdCBhcnJheSkKICAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9J
TlZBTElEX09QRVJBVElPTik7CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMRVM6OmRyYXdC
dWZmZXJzRVhUKEdDR0xzaXplaSAvKiBuICovLCBjb25zdCBHQ0dMZW51bSogLyogYnVmcyAqLykK
K3ZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMRVM6OmRyYXdCdWZmZXJzRVhUKEdDR0xTcGFuPGNvbnN0
IEdDR0xlbnVtPiAvKiBidWZzICovKQogewogICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQgdGhlIHN1
cHBvcnQuCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmgK
aW5kZXggYzc0ODI1YzgxZWFkMGE3NDYwYWVhMWRhZjFjOWFlMTgzNzAyOTM5Ni4uMDE3YTQ1Yjcz
OThkMDk5MmVkMTQ3NjdmMDc2N2UwNGI0NjQxNjI4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5H
TEVTLmgKQEAgLTg1LDcgKzg1LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGVsZXRlVmVydGV4QXJy
YXlPRVMoUGxhdGZvcm1HTE9iamVjdCkgb3ZlcnJpZGU7CiAgICAgR0NHTGJvb2xlYW4gaXNWZXJ0
ZXhBcnJheU9FUyhQbGF0Zm9ybUdMT2JqZWN0KSBvdmVycmlkZTsKICAgICB2b2lkIGJpbmRWZXJ0
ZXhBcnJheU9FUyhQbGF0Zm9ybUdMT2JqZWN0KSBvdmVycmlkZTsKLSAgICB2b2lkIGRyYXdCdWZm
ZXJzRVhUKEdDR0xzaXplaSwgY29uc3QgR0NHTGVudW0qKSBvdmVycmlkZTsKKyAgICB2b2lkIGRy
YXdCdWZmZXJzRVhUKEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVtPikgb3ZlcnJpZGU7CiAKICAgICB2
b2lkIGRyYXdBcnJheXNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NH
THNpemVpIGNvdW50LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSBvdmVycmlkZTsKICAgICB2b2lkIGRy
YXdFbGVtZW50c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xl
bnVtIHR5cGUsIGxvbmcgbG9uZyBvZmZzZXQsIEdDR0xzaXplaSBwcmltY291bnQpIG92ZXJyaWRl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dy
YXBoaWNzQ29udGV4dEdMT3BlbkdMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaAppbmRleCAwOTkyNjc4YjhkYzFlMTgz
ZDk4MjU5Yjc3MzE1YzM2MTIxNzAxMzBmLi41NDEzNDZmZDFmODUzZDQ1YmUzMjNhNzJmMmVmMjM3
ODAzOTIwMTc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaApAQCAtMTE5LDkg
KzExOSw2IEBAIHB1YmxpYzoKICAgICAvLyBXaXRoIG11bHRpc2FtcGxpbmcgb24sIGJsaXQgZnJv
bSBtdWx0aXNhbXBsZUZCTyB0byByZWd1bGFyIEZCTy4KICAgICB2b2lkIHByZXBhcmVUZXh0dXJl
KCk7CiAKLSAgICAvLyBFcXVpdmFsZW50IHRvIDo6Z2xUZXhJbWFnZTJEKCkuIEFsbG93cyBwaXhl
bHM9PTAgd2l0aCBubyBhbGxvY2F0aW9uLgotICAgIHZvaWQgdGV4SW1hZ2UyRERpcmVjdChHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dM
c2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBm
b3JtYXQsIEdDR0xlbnVtIHR5cGUsIGNvbnN0IHZvaWQqIHBpeGVscyk7Ci0KICAgICAvLyBHZXQg
YW4gYXR0cmlidXRlIGxvY2F0aW9uIHdpdGhvdXQgY2hlY2tpbmcgdGhlIG5hbWUgLT4gbWFuZ2xl
ZG5hbWUgbWFwcGluZy4KICAgICBpbnQgZ2V0QXR0cmliTG9jYXRpb25EaXJlY3QoUGxhdGZvcm1H
TE9iamVjdCBwcm9ncmFtLCBjb25zdCBTdHJpbmcmIG5hbWUpOwogCkBAIC0xMjksNiArMTI2LDkg
QEAgcHVibGljOgogICAgIHZvaWQgY29tcGlsZVNoYWRlckRpcmVjdChQbGF0Zm9ybUdMT2JqZWN0
KTsKIAogI2lmICFVU0UoQU5HTEUpCisgICAgLy8gRXF1aXZhbGVudCB0byA6OmdsVGV4SW1hZ2Uy
RCgpLiBBbGxvd3MgcGl4ZWxzPT0wIHdpdGggbm8gYWxsb2NhdGlvbi4KKyAgICB2b2lkIHRleElt
YWdlMkREaXJlY3QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRl
cm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJv
cmRlciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBjb25zdCB2b2lkKiBwaXhlbHMp
OworCiAgICAgLy8gSGVscGVyIHRvIHRleEltYWdlMkQgd2l0aCBwaXhlbD09MCBjYXNlOiBwaXhl
bHMgYXJlIGluaXRpYWxpemVkIHRvIDAuCiAgICAgLy8gUmV0dXJuIHRydWUgaWYgbm8gR0wgZXJy
b3IgaXMgc3ludGhlc2l6ZWQuCiAgICAgLy8gQnkgZGVmYXVsdCwgYWxpZ25tZW50IGlzIDQsIHRo
ZSBPcGVuR0wgZGVmYXVsdCBzZXR0aW5nLgpAQCAtMTU1LDggKzE1NSw4IEBAIHB1YmxpYzoKICAg
ICB2b2lkIGJsZW5kRnVuY1NlcGFyYXRlKEdDR0xlbnVtIHNyY1JHQiwgR0NHTGVudW0gZHN0UkdC
LCBHQ0dMZW51bSBzcmNBbHBoYSwgR0NHTGVudW0gZHN0QWxwaGEpIGZpbmFsOwogCiAgICAgdm9p
ZCBidWZmZXJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpcHRyIHNpemUsIEdDR0xlbnVt
IHVzYWdlKSBmaW5hbDsKLSAgICB2b2lkIGJ1ZmZlckRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
c2l6ZWlwdHIgc2l6ZSwgY29uc3Qgdm9pZCogZGF0YSwgR0NHTGVudW0gdXNhZ2UpIGZpbmFsOwot
ICAgIHZvaWQgYnVmZmVyU3ViRGF0YShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnRwdHIgb2Zmc2V0
LCBHQ0dMc2l6ZWlwdHIgc2l6ZSwgY29uc3Qgdm9pZCogZGF0YSkgZmluYWw7CisgICAgdm9pZCBi
dWZmZXJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEs
IEdDR0xlbnVtIHVzYWdlKSBmaW5hbDsKKyAgICB2b2lkIGJ1ZmZlclN1YkRhdGEoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMaW50cHRyIG9mZnNldCwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEp
IGZpbmFsOwogCiAgICAgR0NHTGVudW0gY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhHQ0dMZW51bSB0
YXJnZXQpIGZpbmFsOwogICAgIHZvaWQgY2xlYXIoR0NHTGJpdGZpZWxkIG1hc2spIGZpbmFsOwpA
QCAtMjUzLDMwICsyNTMsMzAgQEAgcHVibGljOgogICAgIHZvaWQgc3RlbmNpbE9wKEdDR0xlbnVt
IGZhaWwsIEdDR0xlbnVtIHpmYWlsLCBHQ0dMZW51bSB6cGFzcykgZmluYWw7CiAgICAgdm9pZCBz
dGVuY2lsT3BTZXBhcmF0ZShHQ0dMZW51bSBmYWNlLCBHQ0dMZW51bSBmYWlsLCBHQ0dMZW51bSB6
ZmFpbCwgR0NHTGVudW0genBhc3MpIGZpbmFsOwogCi0gICAgYm9vbCB0ZXhJbWFnZTJEKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xz
aXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xlbnVtIGZv
cm1hdCwgR0NHTGVudW0gdHlwZSwgY29uc3Qgdm9pZCogcGl4ZWxzKSBmaW5hbDsKKyAgICBib29s
IHRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRl
cm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJv
cmRlciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dM
dm9pZD4gcGl4ZWxzKSBmaW5hbDsKICAgICB2b2lkIHRleFBhcmFtZXRlcmYoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGZsb2F0IHBhcmFtKSBmaW5hbDsKICAgICB2b2lkIHRl
eFBhcmFtZXRlcmkoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCBwYXJh
bSkgZmluYWw7Ci0gICAgdm9pZCB0ZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGlu
dCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0
aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBjb25z
dCB2b2lkKiBwaXhlbHMpIGZpbmFsOworICAgIHZvaWQgdGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0
YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBH
Q0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVu
dW0gdHlwZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IHBpeGVscykgZmluYWw7CiAKICAgICB2
b2lkIHVuaWZvcm0xZihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMZmxvYXQgeCkgZmluYWw7Ci0gICAg
dm9pZCB1bmlmb3JtMWZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSwgY29uc3QgR0NHTGZs
b2F0KiB2KSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm0xZnYoR0NHTGludCBsb2NhdGlvbiwgR0NH
TFNwYW48Y29uc3QgR0NHTGZsb2F0PiB2KSBmaW5hbDsKICAgICB2b2lkIHVuaWZvcm0xaShHQ0dM
aW50IGxvY2F0aW9uLCBHQ0dMaW50IHgpIGZpbmFsOwotICAgIHZvaWQgdW5pZm9ybTFpdihHQ0dM
aW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWksIGNvbnN0IEdDR0xpbnQqIHYpIGZpbmFsOworICAgIHZv
aWQgdW5pZm9ybTFpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50PiB2
KSBmaW5hbDsKICAgICB2b2lkIHVuaWZvcm0yZihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMZmxvYXQg
eCwgR0NHTGZsb2F0IHkpIGZpbmFsOwotICAgIHZvaWQgdW5pZm9ybTJmdihHQ0dMaW50IGxvY2F0
aW9uLCBHQ0dMc2l6ZWksIGNvbnN0IEdDR0xmbG9hdCogdikgZmluYWw7CisgICAgdm9pZCB1bmlm
b3JtMmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gdikgZmlu
YWw7CiAgICAgdm9pZCB1bmlmb3JtMmkoR0NHTGludCBsb2NhdGlvbiwgR0NHTGludCB4LCBHQ0dM
aW50IHkpIGZpbmFsOwotICAgIHZvaWQgdW5pZm9ybTJpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dM
c2l6ZWksIGNvbnN0IEdDR0xpbnQqIHYpIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybTJpdihHQ0dM
aW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50PiB2KSBmaW5hbDsKICAgICB2b2lk
IHVuaWZvcm0zZihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMZmxvYXQgeCwgR0NHTGZsb2F0IHksIEdD
R0xmbG9hdCB6KSBmaW5hbDsKLSAgICB2b2lkIHVuaWZvcm0zZnYoR0NHTGludCBsb2NhdGlvbiwg
R0NHTHNpemVpLCBjb25zdCBHQ0dMZmxvYXQqIHYpIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybTNm
dihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IHYpIGZpbmFsOwog
ICAgIHZvaWQgdW5pZm9ybTNpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xpbnQgeCwgR0NHTGludCB5
LCBHQ0dMaW50IHopIGZpbmFsOwotICAgIHZvaWQgdW5pZm9ybTNpdihHQ0dMaW50IGxvY2F0aW9u
LCBHQ0dMc2l6ZWksIGNvbnN0IEdDR0xpbnQqIHYpIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybTNp
dihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50PiB2KSBmaW5hbDsKICAg
ICB2b2lkIHVuaWZvcm00ZihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMZmxvYXQgeCwgR0NHTGZsb2F0
IHksIEdDR0xmbG9hdCB6LCBHQ0dMZmxvYXQgdykgZmluYWw7Ci0gICAgdm9pZCB1bmlmb3JtNGZ2
KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSwgY29uc3QgR0NHTGZsb2F0KiB2KSBmaW5hbDsK
KyAgICB2b2lkIHVuaWZvcm00ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NH
TGZsb2F0PiB2KSBmaW5hbDsKICAgICB2b2lkIHVuaWZvcm00aShHQ0dMaW50IGxvY2F0aW9uLCBH
Q0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTGludCB6LCBHQ0dMaW50IHcpIGZpbmFsOwotICAgIHZv
aWQgdW5pZm9ybTRpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWksIGNvbnN0IEdDR0xpbnQq
IHYpIGZpbmFsOwotICAgIHZvaWQgdW5pZm9ybU1hdHJpeDJmdihHQ0dMaW50IGxvY2F0aW9uLCBH
Q0dMc2l6ZWksIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiB2YWx1ZSkg
ZmluYWw7Ci0gICAgdm9pZCB1bmlmb3JtTWF0cml4M2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xz
aXplaSwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHQ0dMZmxvYXQqIHZhbHVlKSBmaW5h
bDsKLSAgICB2b2lkIHVuaWZvcm1NYXRyaXg0ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVp
LCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogdmFsdWUpIGZpbmFsOwor
ICAgIHZvaWQgdW5pZm9ybTRpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dM
aW50PiB2KSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm1NYXRyaXgyZnYoR0NHTGludCBsb2NhdGlv
biwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IHZhbHVl
KSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm1NYXRyaXgzZnYoR0NHTGludCBsb2NhdGlvbiwgR0NH
TGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IHZhbHVlKSBmaW5h
bDsKKyAgICB2b2lkIHVuaWZvcm1NYXRyaXg0ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xl
YW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IHZhbHVlKSBmaW5hbDsKIAog
ICAgIHZvaWQgdXNlUHJvZ3JhbShQbGF0Zm9ybUdMT2JqZWN0KSBmaW5hbDsKICAgICB2b2lkIHZh
bGlkYXRlUHJvZ3JhbShQbGF0Zm9ybUdMT2JqZWN0KSBmaW5hbDsKQEAgLTI4NiwxMyArMjg2LDEz
IEBAIHB1YmxpYzoKICNlbmRpZgogCiAgICAgdm9pZCB2ZXJ0ZXhBdHRyaWIxZihHQ0dMdWludCBp
bmRleCwgR0NHTGZsb2F0IHgpIGZpbmFsOwotICAgIHZvaWQgdmVydGV4QXR0cmliMWZ2KEdDR0x1
aW50IGluZGV4LCBjb25zdCBHQ0dMZmxvYXQqIHZhbHVlcykgZmluYWw7CisgICAgdm9pZCB2ZXJ0
ZXhBdHRyaWIxZnYoR0NHTHVpbnQgaW5kZXgsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdCwgMT4g
dmFsdWVzKSBmaW5hbDsKICAgICB2b2lkIHZlcnRleEF0dHJpYjJmKEdDR0x1aW50IGluZGV4LCBH
Q0dMZmxvYXQgeCwgR0NHTGZsb2F0IHkpIGZpbmFsOwotICAgIHZvaWQgdmVydGV4QXR0cmliMmZ2
KEdDR0x1aW50IGluZGV4LCBjb25zdCBHQ0dMZmxvYXQqIHZhbHVlcykgZmluYWw7CisgICAgdm9p
ZCB2ZXJ0ZXhBdHRyaWIyZnYoR0NHTHVpbnQgaW5kZXgsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9h
dCwgMj4gdmFsdWVzKSBmaW5hbDsKICAgICB2b2lkIHZlcnRleEF0dHJpYjNmKEdDR0x1aW50IGlu
ZGV4LCBHQ0dMZmxvYXQgeCwgR0NHTGZsb2F0IHksIEdDR0xmbG9hdCB6KSBmaW5hbDsKLSAgICB2
b2lkIHZlcnRleEF0dHJpYjNmdihHQ0dMdWludCBpbmRleCwgY29uc3QgR0NHTGZsb2F0KiB2YWx1
ZXMpIGZpbmFsOworICAgIHZvaWQgdmVydGV4QXR0cmliM2Z2KEdDR0x1aW50IGluZGV4LCBHQ0dM
U3Bhbjxjb25zdCBHQ0dMZmxvYXQsIDM+IHZhbHVlcykgZmluYWw7CiAgICAgdm9pZCB2ZXJ0ZXhB
dHRyaWI0ZihHQ0dMdWludCBpbmRleCwgR0NHTGZsb2F0IHgsIEdDR0xmbG9hdCB5LCBHQ0dMZmxv
YXQgeiwgR0NHTGZsb2F0IHcpIGZpbmFsOwotICAgIHZvaWQgdmVydGV4QXR0cmliNGZ2KEdDR0x1
aW50IGluZGV4LCBjb25zdCBHQ0dMZmxvYXQqIHZhbHVlcykgZmluYWw7CisgICAgdm9pZCB2ZXJ0
ZXhBdHRyaWI0ZnYoR0NHTHVpbnQgaW5kZXgsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdCwgND4g
dmFsdWVzKSBmaW5hbDsKICAgICB2b2lkIHZlcnRleEF0dHJpYlBvaW50ZXIoR0NHTHVpbnQgaW5k
ZXgsIEdDR0xpbnQgc2l6ZSwgR0NHTGVudW0gdHlwZSwgR0NHTGJvb2xlYW4gbm9ybWFsaXplZCwg
R0NHTHNpemVpIHN0cmlkZSwgR0NHTGludHB0ciBvZmZzZXQpIGZpbmFsOwogCiAgICAgdm9pZCB2
aWV3cG9ydChHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkg
aGVpZ2h0KSBmaW5hbDsKQEAgLTMyMyw4ICszMjMsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGJs
aXRGcmFtZWJ1ZmZlcihHQ0dMaW50IHNyY1gwLCBHQ0dMaW50IHNyY1kwLCBHQ0dMaW50IHNyY1gx
LCBHQ0dMaW50IHNyY1kxLCBHQ0dMaW50IGRzdFgwLCBHQ0dMaW50IGRzdFkwLCBHQ0dMaW50IGRz
dFgxLCBHQ0dMaW50IGRzdFkxLCBHQ0dMYml0ZmllbGQgbWFzaywgR0NHTGVudW0gZmlsdGVyKSBm
aW5hbDsKICAgICB2b2lkIGZyYW1lYnVmZmVyVGV4dHVyZUxheWVyKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGVudW0gYXR0YWNobWVudCwgUGxhdGZvcm1HTE9iamVjdCB0ZXh0dXJlLCBHQ0dMaW50IGxl
dmVsLCBHQ0dMaW50IGxheWVyKSBmaW5hbDsKLSAgICB2b2lkIGludmFsaWRhdGVGcmFtZWJ1ZmZl
cihHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaSBudW1BdHRhY2htZW50cywgY29uc3QgR0NHTGVu
dW0qIGF0dGFjaG1lbnRzKSBmaW5hbDsKLSAgICB2b2lkIGludmFsaWRhdGVTdWJGcmFtZWJ1ZmZl
cihHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaSBudW1BdHRhY2htZW50cywgY29uc3QgR0NHTGVu
dW0qIGF0dGFjaG1lbnRzLCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBH
Q0dMc2l6ZWkgaGVpZ2h0KSBmaW5hbDsKKyAgICB2b2lkIGludmFsaWRhdGVGcmFtZWJ1ZmZlcihH
Q0dMZW51bSB0YXJnZXQsIEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVtPiBhdHRhY2htZW50cykgZmlu
YWw7CisgICAgdm9pZCBpbnZhbGlkYXRlU3ViRnJhbWVidWZmZXIoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4gYXR0YWNobWVudHMsIEdDR0xpbnQgeCwgR0NHTGludCB5
LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpIGZpbmFsOwogICAgIHZvaWQgcmVh
ZEJ1ZmZlcihHQ0dMZW51bSBzcmMpIGZpbmFsOwogCiAgICAgLy8gZ2V0SW50ZXJuYWxGb3JtYXRQ
YXJhbWV0ZXIKQEAgLTM0MiwyOCArMzQyLDI4IEBAIHB1YmxpYzoKICAgICB2b2lkIHVuaWZvcm0y
dWkoR0NHTGludCBsb2NhdGlvbiwgR0NHTHVpbnQgdjAsIEdDR0x1aW50IHYxKSBmaW5hbDsKICAg
ICB2b2lkIHVuaWZvcm0zdWkoR0NHTGludCBsb2NhdGlvbiwgR0NHTHVpbnQgdjAsIEdDR0x1aW50
IHYxLCBHQ0dMdWludCB2MikgZmluYWw7CiAgICAgdm9pZCB1bmlmb3JtNHVpKEdDR0xpbnQgbG9j
YXRpb24sIEdDR0x1aW50IHYwLCBHQ0dMdWludCB2MSwgR0NHTHVpbnQgdjIsIEdDR0x1aW50IHYz
KSBmaW5hbDsKLSAgICB2b2lkIHVuaWZvcm0xdWl2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdD
R0x1aW50KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkgZmlu
YWw7Ci0gICAgdm9pZCB1bmlmb3JtMnVpdihHQ0dMaW50IGxvY2F0aW9uLCBjb25zdCBHQ0dMdWlu
dCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpIGZpbmFsOwot
ICAgIHZvaWQgdW5pZm9ybTN1aXYoR0NHTGludCBsb2NhdGlvbiwgY29uc3QgR0NHTHVpbnQqIGRh
dGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKSBmaW5hbDsKLSAgICB2
b2lkIHVuaWZvcm00dWl2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0x1aW50KiBkYXRhLCBH
Q0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkgZmluYWw7Ci0gICAgdm9pZCB1
bmlmb3JtTWF0cml4MngzZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3Nl
LCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3Jj
TGVuZ3RoKSBmaW5hbDsKLSAgICB2b2lkIHVuaWZvcm1NYXRyaXgzeDJmdihHQ0dMaW50IGxvY2F0
aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVp
bnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpIGZpbmFsOwotICAgIHZvaWQgdW5pZm9y
bU1hdHJpeDJ4NGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29u
c3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0
aCkgZmluYWw7Ci0gICAgdm9pZCB1bmlmb3JtTWF0cml4NHgyZnYoR0NHTGludCBsb2NhdGlvbiwg
R0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNy
Y09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKSBmaW5hbDsKLSAgICB2b2lkIHVuaWZvcm1NYXRy
aXgzeDRmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdD
R0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpIGZp
bmFsOwotICAgIHZvaWQgdW5pZm9ybU1hdHJpeDR4M2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xi
b29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZz
ZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtMXVpdihHQ0dM
aW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdWludD4pIGZpbmFsOworICAgIHZvaWQg
dW5pZm9ybTJ1aXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTHVpbnQ+KSBm
aW5hbDsKKyAgICB2b2lkIHVuaWZvcm0zdWl2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNv
bnN0IEdDR0x1aW50PikgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtNHVpdihHQ0dMaW50IGxvY2F0
aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdWludD4pIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybU1h
dHJpeDJ4M2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNw
YW48Y29uc3QgR0NHTGZsb2F0PiBkYXRhKSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm1NYXRyaXgz
eDJmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNv
bnN0IEdDR0xmbG9hdD4gZGF0YSkgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtTWF0cml4Mng0ZnYo
R0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBH
Q0dMZmxvYXQ+IGRhdGEpIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybU1hdHJpeDR4MmZ2KEdDR0xp
bnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZs
b2F0PiBkYXRhKSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm1NYXRyaXgzeDRmdihHQ0dMaW50IGxv
Y2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4g
ZGF0YSkgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtTWF0cml4NHgzZnYoR0NHTGludCBsb2NhdGlv
biwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEp
IGZpbmFsOwogICAgIHZvaWQgdmVydGV4QXR0cmliSTRpKEdDR0x1aW50IGluZGV4LCBHQ0dMaW50
IHgsIEdDR0xpbnQgeSwgR0NHTGludCB6LCBHQ0dMaW50IHcpIGZpbmFsOwotICAgIHZvaWQgdmVy
dGV4QXR0cmliSTRpdihHQ0dMdWludCBpbmRleCwgY29uc3QgR0NHTGludCogdmFsdWVzKSBmaW5h
bDsKKyAgICB2b2lkIHZlcnRleEF0dHJpYkk0aXYoR0NHTHVpbnQgaW5kZXgsIEdDR0xTcGFuPGNv
bnN0IEdDR0xpbnQsIDQ+IHZhbHVlcykgZmluYWw7CiAgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJJNHVp
KEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCB4LCBHQ0dMdWludCB5LCBHQ0dMdWludCB6LCBHQ0dM
dWludCB3KSBmaW5hbDsKLSAgICB2b2lkIHZlcnRleEF0dHJpYkk0dWl2KEdDR0x1aW50IGluZGV4
LCBjb25zdCBHQ0dMdWludCogdmFsdWVzKSBmaW5hbDsKKyAgICB2b2lkIHZlcnRleEF0dHJpYkk0
dWl2KEdDR0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdWludCwgND4gdmFsdWVzKSBm
aW5hbDsKICAgICB2b2lkIHZlcnRleEF0dHJpYklQb2ludGVyKEdDR0x1aW50IGluZGV4LCBHQ0dM
aW50IHNpemUsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBzdHJpZGUsIEdDR0xpbnRwdHIgb2Zm
c2V0KSBmaW5hbDsKIAogICAgIHZvaWQgZHJhd1JhbmdlRWxlbWVudHMoR0NHTGVudW0gbW9kZSwg
R0NHTHVpbnQgc3RhcnQsIEdDR0x1aW50IGVuZCwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0
eXBlLCBHQ0dMaW50cHRyIG9mZnNldCkgZmluYWw7CiAKLSAgICB2b2lkIGRyYXdCdWZmZXJzKEdD
R0xzaXplaSBuLCBjb25zdCBHQ0dMZW51bSogYnVmcykgZmluYWw7Ci0gICAgdm9pZCBjbGVhckJ1
ZmZlcml2KEdDR0xlbnVtIGJ1ZmZlciwgR0NHTGludCBkcmF3YnVmZmVyLCBjb25zdCBHQ0dMaW50
KiB2YWx1ZXMsIEdDR0x1aW50IHNyY09mZnNldCkgZmluYWw7Ci0gICAgdm9pZCBjbGVhckJ1ZmZl
cnVpdihHQ0dMZW51bSBidWZmZXIsIEdDR0xpbnQgZHJhd2J1ZmZlciwgY29uc3QgR0NHTHVpbnQq
IHZhbHVlcywgR0NHTHVpbnQgc3JjT2Zmc2V0KSBmaW5hbDsKLSAgICB2b2lkIGNsZWFyQnVmZmVy
ZnYoR0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50IGRyYXdidWZmZXIsIGNvbnN0IEdDR0xmbG9hdCog
dmFsdWVzLCBHQ0dMdWludCBzcmNPZmZzZXQpIGZpbmFsOworICAgIHZvaWQgZHJhd0J1ZmZlcnMo
R0NHTFNwYW48Y29uc3QgR0NHTGVudW0+IGJ1ZnMpIGZpbmFsOworICAgIHZvaWQgY2xlYXJCdWZm
ZXJpdihHQ0dMZW51bSBidWZmZXIsIEdDR0xpbnQgZHJhd2J1ZmZlciwgR0NHTFNwYW48Y29uc3Qg
R0NHTGludD4gdmFsdWVzKSBmaW5hbDsKKyAgICB2b2lkIGNsZWFyQnVmZmVydWl2KEdDR0xlbnVt
IGJ1ZmZlciwgR0NHTGludCBkcmF3YnVmZmVyLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdWludD4gdmFs
dWVzKSBmaW5hbDsKKyAgICB2b2lkIGNsZWFyQnVmZmVyZnYoR0NHTGVudW0gYnVmZmVyLCBHQ0dM
aW50IGRyYXdidWZmZXIsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gdmFsdWVzKSBmaW5hbDsK
ICAgICB2b2lkIGNsZWFyQnVmZmVyZmkoR0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50IGRyYXdidWZm
ZXIsIEdDR0xmbG9hdCBkZXB0aCwgR0NHTGludCBzdGVuY2lsKSBmaW5hbDsKIAogICAgIFBsYXRm
b3JtR0xPYmplY3QgY3JlYXRlUXVlcnkoKSBmaW5hbDsKQEAgLTQyNCwxOSArNDI0LDYgQEAgcHVi
bGljOgogICAgIHZvaWQgY29tcHJlc3NlZFRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTHNpemVp
IHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIGNvbnN0IHZvaWQqIHNy
Y0RhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoT3ZlcnJpZGUpOwog
I2VuZGlmCiAKLSAgICB2b2lkIHVuaWZvcm0xZnYoR0NHTGludCBsb2NhdGlvbiwgY29uc3QgR0NH
TGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkgZmlu
YWw7Ci0gICAgdm9pZCB1bmlmb3JtMmZ2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0xmbG9h
dCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpIGZpbmFsOwot
ICAgIHZvaWQgdW5pZm9ybTNmdihHQ0dMaW50IGxvY2F0aW9uLCBjb25zdCBHQ0dMZmxvYXQqIGRh
dGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKSBmaW5hbDsKLSAgICB2
b2lkIHVuaWZvcm00ZnYoR0NHTGludCBsb2NhdGlvbiwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBH
Q0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkgZmluYWw7Ci0KLSAgICB2b2lk
IHVuaWZvcm0xaXYoR0NHTGludCBsb2NhdGlvbiwgY29uc3QgR0NHTGludCogZGF0YSwgR0NHTHVp
bnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpIGZpbmFsOwotICAgIHZvaWQgdW5pZm9y
bTJpdihHQ0dMaW50IGxvY2F0aW9uLCBjb25zdCBHQ0dMaW50KiBkYXRhLCBHQ0dMdWludCBzcmNP
ZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkgZmluYWw7Ci0gICAgdm9pZCB1bmlmb3JtM2l2KEdD
R0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0xpbnQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwg
R0NHTHVpbnQgc3JjTGVuZ3RoKSBmaW5hbDsKLSAgICB2b2lkIHVuaWZvcm00aXYoR0NHTGludCBs
b2NhdGlvbiwgY29uc3QgR0NHTGludCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWlu
dCBzcmNMZW5ndGgpIGZpbmFsOwotCi0gICAgdm9pZCB1bmlmb3JtTWF0cml4MmZ2KEdDR0xpbnQg
bG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBH
Q0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkgZmluYWw7Ci0gICAgdm9pZCB1
bmlmb3JtTWF0cml4M2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwg
Y29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xl
bmd0aCkgZmluYWw7Ci0gICAgdm9pZCB1bmlmb3JtTWF0cml4NGZ2KEdDR0xpbnQgbG9jYXRpb24s
IEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBz
cmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkgZmluYWw7CiAgICAgdm9pZCBnZXRBY3RpdmVV
bmlmb3JtQmxvY2tpdihHQ0dMdWludCBwcm9ncmFtLCBHQ0dMdWludCB1bmlmb3JtQmxvY2tJbmRl
eCwgR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xpbnQ+IHBhcmFtcykgZmluYWw7CiAKICNp
ZiAhVVNFKEFOR0xFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29tbW9uLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvbW1v
bi5jcHAKaW5kZXggYWJiN2UyNWEwNmYwODVjY2VhY2ZmNWFiNmU4MjA0NTdjZTlhMmQ5My4uZWJi
M2Y5YzFhMjNlZDk0YTZiODlmNGU1MzRlNzVhMWVjMGEzM2E3OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdM
Q29tbW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wv
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb21tb24uY3BwCkBAIC01NTIsMjAgKzU1MiwyMCBAQCB2
b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpidWZmZXJEYXRhKEdDR0xlbnVtIHRhcmdldCwg
R0NHTHNpemVpcHRyIHNpemUsIEdDRwogICAgIDo6Z2xCdWZmZXJEYXRhKHRhcmdldCwgc2l6ZSwg
MCwgdXNhZ2UpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpidWZmZXJEYXRh
KEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpcHRyIHNpemUsIGNvbnN0IHZvaWQqIGRhdGEsIEdD
R0xlbnVtIHVzYWdlKQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6YnVmZmVyRGF0YShH
Q0dMZW51bSB0YXJnZXQsIEdDR0xTcGFuPGNvbnN0IHZvaWQ+IGRhdGEsIEdDR0xlbnVtIHVzYWdl
KQogewogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIDo6Z2xCdWZmZXJEYXRhKHRhcmdldCwgc2l6ZSwgZGF0YSwgdXNhZ2UpOworICAgIDo6Z2xC
dWZmZXJEYXRhKHRhcmdldCwgZGF0YS5idWZTaXplLCBkYXRhLmRhdGEsIHVzYWdlKTsKIH0KIAot
dm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6YnVmZmVyU3ViRGF0YShHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xpbnRwdHIgb2Zmc2V0LCBHQ0dMc2l6ZWlwdHIgc2l6ZSwgY29uc3Qgdm9pZCogZGF0
YSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmJ1ZmZlclN1YkRhdGEoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMaW50cHRyIG9mZnNldCwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEp
CiB7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgOjpnbEJ1ZmZlclN1YkRhdGEodGFyZ2V0LCBvZmZzZXQsIHNpemUsIGRhdGEpOworICAgIDo6
Z2xCdWZmZXJTdWJEYXRhKHRhcmdldCwgb2Zmc2V0LCBkYXRhLmJ1ZlNpemUsIGRhdGEuZGF0YSk7
CiB9CiAKIEdDR0xlbnVtIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjaGVja0ZyYW1lYnVmZmVy
U3RhdHVzKEdDR0xlbnVtIHRhcmdldCkKQEAgLTE0MTUsMTIgKzE0MTUsMTIgQEAgdm9pZCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTFmKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xmbG9h
dCB2MCkKICAgICA6OmdsVW5pZm9ybTFmKGxvY2F0aW9uLCB2MCk7CiB9CiAKLXZvaWQgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0xZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVp
IHNpemUsIGNvbnN0IEdDR0xmbG9hdCogYXJyYXkpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjp1bmlmb3JtMWZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9h
dD4gYXJyYXkpCiB7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgOjpnbFVuaWZvcm0xZnYobG9jYXRpb24sIHNpemUsIGFycmF5KTsKKyAgICA6
OmdsVW5pZm9ybTFmdihsb2NhdGlvbiwgYXJyYXkuYnVmU2l6ZSwgYXJyYXkpOwogfQogCiB2b2lk
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMmYoR0NHTGludCBsb2NhdGlvbiwgR0NH
TGZsb2F0IHYwLCBHQ0dMZmxvYXQgdjEpCkBAIC0xNDMxLDEzICsxNDMxLDEzIEBAIHZvaWQgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0yZihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMZmxv
YXQgdjAsIEdDR0xmbG9hCiAgICAgOjpnbFVuaWZvcm0yZihsb2NhdGlvbiwgdjAsIHYxKTsKIH0K
IAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTJmdihHQ0dMaW50IGxvY2F0
aW9uLCBHQ0dMc2l6ZWkgc2l6ZSwgY29uc3QgR0NHTGZsb2F0KiBhcnJheSkKK3ZvaWQgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0yZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48
Y29uc3QgR0NHTGZsb2F0PiBhcnJheSkKIHsKLSAgICAvLyBGSVhNRTogbGVuZ3RoIG5lZWRzIHRv
IGJlIGEgbXVsdGlwbGUgb2YgMi4KKyAgICBBU1NFUlQoIShhcnJheS5idWZTaXplICUgMikpOwog
ICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIDo6
Z2xVbmlmb3JtMmZ2KGxvY2F0aW9uLCBzaXplLCBhcnJheSk7CisgICAgOjpnbFVuaWZvcm0yZnYo
bG9jYXRpb24sIGFycmF5LmJ1ZlNpemUgLyAyLCBhcnJheSk7CiB9CiAKIHZvaWQgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OnVuaWZvcm0zZihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMZmxvYXQgdjAs
IEdDR0xmbG9hdCB2MSwgR0NHTGZsb2F0IHYyKQpAQCAtMTQ0OCwxMyArMTQ0OCwxMyBAQCB2b2lk
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtM2YoR0NHTGludCBsb2NhdGlvbiwgR0NH
TGZsb2F0IHYwLCBHQ0dMZmxvYQogICAgIDo6Z2xVbmlmb3JtM2YobG9jYXRpb24sIHYwLCB2MSwg
djIpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtM2Z2KEdDR0xp
bnQgbG9jYXRpb24sIEdDR0xzaXplaSBzaXplLCBjb25zdCBHQ0dMZmxvYXQqIGFycmF5KQordm9p
ZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTNmdihHQ0dMaW50IGxvY2F0aW9uLCBH
Q0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGFycmF5KQogewotICAgIC8vIEZJWE1FOiBsZW5ndGgg
bmVlZHMgdG8gYmUgYSBtdWx0aXBsZSBvZiAzLgorICAgIEFTU0VSVCghKGFycmF5LmJ1ZlNpemUg
JSAzKSk7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgOjpnbFVuaWZvcm0zZnYobG9jYXRpb24sIHNpemUsIGFycmF5KTsKKyAgICA6OmdsVW5p
Zm9ybTNmdihsb2NhdGlvbiwgYXJyYXkuYnVmU2l6ZSAvIDMsIGFycmF5KTsKIH0KIAogdm9pZCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTRmKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xm
bG9hdCB2MCwgR0NHTGZsb2F0IHYxLCBHQ0dMZmxvYXQgdjIsIEdDR0xmbG9hdCB2MykKQEAgLTE0
NjUsMTMgKzE0NjUsMTMgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTRm
KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xmbG9hdCB2MCwgR0NHTGZsb2EKICAgICA6OmdsVW5pZm9y
bTRmKGxvY2F0aW9uLCB2MCwgdjEsIHYyLCB2Myk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OnVuaWZvcm00ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIHNpemUsIGNv
bnN0IEdDR0xmbG9hdCogYXJyYXkpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlm
b3JtNGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gYXJyYXkp
CiB7Ci0gICAgLy8gRklYTUU6IGxlbmd0aCBuZWVkcyB0byBiZSBhIG11bHRpcGxlIG9mIDQuCisg
ICAgQVNTRVJUKCEoYXJyYXkuYnVmU2l6ZSAlIDQpKTsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3Vy
cmVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICA6OmdsVW5pZm9ybTRmdihsb2NhdGlvbiwg
c2l6ZSwgYXJyYXkpOworICAgIDo6Z2xVbmlmb3JtNGZ2KGxvY2F0aW9uLCBhcnJheS5idWZTaXpl
IC8gNCwgYXJyYXkpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3Jt
MWkoR0NHTGludCBsb2NhdGlvbiwgR0NHTGludCB2MCkKQEAgLTE0ODIsMTIgKzE0ODIsMTIgQEAg
dm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTFpKEdDR0xpbnQgbG9jYXRpb24s
IEdDR0xpbnQgdjApCiAgICAgOjpnbFVuaWZvcm0xaShsb2NhdGlvbiwgdjApOwogfQogCi12b2lk
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMWl2KEdDR0xpbnQgbG9jYXRpb24sIEdD
R0xzaXplaSBzaXplLCBjb25zdCBHQ0dMaW50KiBhcnJheSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OnVuaWZvcm0xaXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NH
TGludD4gYXJyYXkpCiB7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgOjpnbFVuaWZvcm0xaXYobG9jYXRpb24sIHNpemUsIGFycmF5KTsKKyAg
ICA6OmdsVW5pZm9ybTFpdihsb2NhdGlvbiwgYXJyYXkuYnVmU2l6ZSwgYXJyYXkpOwogfQogCiB2
b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMmkoR0NHTGludCBsb2NhdGlvbiwg
R0NHTGludCB2MCwgR0NHTGludCB2MSkKQEAgLTE0OTgsMTMgKzE0OTgsMTMgQEAgdm9pZCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTJpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xpbnQg
djAsIEdDR0xpbnQgdjEKICAgICA6OmdsVW5pZm9ybTJpKGxvY2F0aW9uLCB2MCwgdjEpOwogfQog
Ci12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMml2KEdDR0xpbnQgbG9jYXRp
b24sIEdDR0xzaXplaSBzaXplLCBjb25zdCBHQ0dMaW50KiBhcnJheSkKK3ZvaWQgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OnVuaWZvcm0yaXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29u
c3QgR0NHTGludD4gYXJyYXkpCiB7Ci0gICAgLy8gRklYTUU6IGxlbmd0aCBuZWVkcyB0byBiZSBh
IG11bHRpcGxlIG9mIDIuCisgICAgQVNTRVJUKCEoYXJyYXkuYnVmU2l6ZSAlIDIpKTsKICAgICBp
ZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICA6OmdsVW5p
Zm9ybTJpdihsb2NhdGlvbiwgc2l6ZSwgYXJyYXkpOworICAgIDo6Z2xVbmlmb3JtMml2KGxvY2F0
aW9uLCBhcnJheS5idWZTaXplIC8gMiwgYXJyYXkpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjp1bmlmb3JtM2koR0NHTGludCBsb2NhdGlvbiwgR0NHTGludCB2MCwgR0NHTGlu
dCB2MSwgR0NHTGludCB2MikKQEAgLTE1MTUsMTMgKzE1MTUsMTMgQEAgdm9pZCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6dW5pZm9ybTNpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xpbnQgdjAsIEdD
R0xpbnQgdjEKICAgICA6OmdsVW5pZm9ybTNpKGxvY2F0aW9uLCB2MCwgdjEsIHYyKTsKIH0KIAot
dm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTNpdihHQ0dMaW50IGxvY2F0aW9u
LCBHQ0dMc2l6ZWkgc2l6ZSwgY29uc3QgR0NHTGludCogYXJyYXkpCit2b2lkIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjp1bmlmb3JtM2l2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0
IEdDR0xpbnQ+IGFycmF5KQogewotICAgIC8vIEZJWE1FOiBsZW5ndGggbmVlZHMgdG8gYmUgYSBt
dWx0aXBsZSBvZiAzLgorICAgIEFTU0VSVCghKGFycmF5LmJ1ZlNpemUgJSAzKSk7CiAgICAgaWYg
KCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgOjpnbFVuaWZv
cm0zaXYobG9jYXRpb24sIHNpemUsIGFycmF5KTsKKyAgICA6OmdsVW5pZm9ybTNpdihsb2NhdGlv
biwgYXJyYXkuYnVmU2l6ZSAvIDMsIGFycmF5KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6dW5pZm9ybTRpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xpbnQgdjAsIEdDR0xpbnQg
djEsIEdDR0xpbnQgdjIsIEdDR0xpbnQgdjMpCkBAIC0xNTMyLDQwICsxNTMyLDQwIEBAIHZvaWQg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm00aShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dM
aW50IHYwLCBHQ0dMaW50IHYxCiAgICAgOjpnbFVuaWZvcm00aShsb2NhdGlvbiwgdjAsIHYxLCB2
MiwgdjMpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtNGl2KEdD
R0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBzaXplLCBjb25zdCBHQ0dMaW50KiBhcnJheSkKK3Zv
aWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm00aXYoR0NHTGludCBsb2NhdGlvbiwg
R0NHTFNwYW48Y29uc3QgR0NHTGludD4gYXJyYXkpCiB7Ci0gICAgLy8gRklYTUU6IGxlbmd0aCBu
ZWVkcyB0byBiZSBhIG11bHRpcGxlIG9mIDQuCisgICAgQVNTRVJUKCEoYXJyYXkuYnVmU2l6ZSAl
IDQpKTsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CiAK
LSAgICA6OmdsVW5pZm9ybTRpdihsb2NhdGlvbiwgc2l6ZSwgYXJyYXkpOworICAgIDo6Z2xVbmlm
b3JtNGl2KGxvY2F0aW9uLCBhcnJheS5idWZTaXplIC8gNCwgYXJyYXkpOwogfQogCi12b2lkIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4MmZ2KEdDR0xpbnQgbG9jYXRpb24s
IEdDR0xzaXplaSBzaXplLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCog
YXJyYXkpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4MmZ2KEdD
R0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NH
TGZsb2F0PiBhcnJheSkKIHsKLSAgICAvLyBGSVhNRTogbGVuZ3RoIG5lZWRzIHRvIGJlIGEgbXVs
dGlwbGUgb2YgNC4KKyAgICBBU1NFUlQoIShhcnJheS5idWZTaXplICUgNCkpOwogICAgIGlmICgh
bWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIDo6Z2xVbmlmb3Jt
TWF0cml4MmZ2KGxvY2F0aW9uLCBzaXplLCB0cmFuc3Bvc2UsIGFycmF5KTsKKyAgICA6OmdsVW5p
Zm9ybU1hdHJpeDJmdihsb2NhdGlvbiwgYXJyYXkuYnVmU2l6ZSAvIDQsIHRyYW5zcG9zZSwgYXJy
YXkpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4M2Z2
KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBzaXplLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2Us
IGNvbnN0IEdDR0xmbG9hdCogYXJyYXkpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1
bmlmb3JtTWF0cml4M2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwg
R0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiBhcnJheSkKIHsKLSAgICAvLyBGSVhNRTogbGVuZ3Ro
IG5lZWRzIHRvIGJlIGEgbXVsdGlwbGUgb2YgOS4KKyAgICBBU1NFUlQoIShhcnJheS5idWZTaXpl
ICUgOSkpOwogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIDo6Z2xVbmlmb3JtTWF0cml4M2Z2KGxvY2F0aW9uLCBzaXplLCB0cmFuc3Bvc2UsIGFy
cmF5KTsKKyAgICA6OmdsVW5pZm9ybU1hdHJpeDNmdihsb2NhdGlvbiwgYXJyYXkuYnVmU2l6ZSAv
IDksIHRyYW5zcG9zZSwgYXJyYXkpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
Ojp1bmlmb3JtTWF0cml4NGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBzaXplLCBHQ0dM
Ym9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogYXJyYXkpCit2b2lkIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4NGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xi
b29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiBhcnJheSkKIHsKLSAg
ICAvLyBGSVhNRTogbGVuZ3RoIG5lZWRzIHRvIGJlIGEgbXVsdGlwbGUgb2YgMTYuCisgICAgQVNT
RVJUKCEoYXJyYXkuYnVmU2l6ZSAlIDE2KSk7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQo
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgOjpnbFVuaWZvcm1NYXRyaXg0ZnYobG9jYXRpb24s
IHNpemUsIHRyYW5zcG9zZSwgYXJyYXkpOworICAgIDo6Z2xVbmlmb3JtTWF0cml4NGZ2KGxvY2F0
aW9uLCBhcnJheS5idWZTaXplIC8gMTYsIHRyYW5zcG9zZSwgYXJyYXkpOwogfQogCiB2b2lkIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1c2VQcm9ncmFtKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3Jh
bSkKQEAgLTE1OTQsNyArMTU5NCw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZl
cnRleEF0dHJpYjFmKEdDR0x1aW50IGluZGV4LCBHQ0dMZmxvYXQgdjApCiAgICAgOjpnbFZlcnRl
eEF0dHJpYjFmKGluZGV4LCB2MCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OnZlcnRleEF0dHJpYjFmdihHQ0dMdWludCBpbmRleCwgY29uc3QgR0NHTGZsb2F0KiBhcnJheSkK
K3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYjFmdihHQ0dMdWludCBp
bmRleCwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiBhcnJheSkKIHsKICAgICBpZiAoIW1ha2VD
b250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CkBAIC0xNjEwLDcgKzE2MTAsNyBAQCB2
b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2ZXJ0ZXhBdHRyaWIyZihHQ0dMdWludCBpbmRl
eCwgR0NHTGZsb2F0IHYwLCBHQ0dMZgogICAgIDo6Z2xWZXJ0ZXhBdHRyaWIyZihpbmRleCwgdjAs
IHYxKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliMmZ2
KEdDR0x1aW50IGluZGV4LCBjb25zdCBHQ0dMZmxvYXQqIGFycmF5KQordm9pZCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliMmZ2KEdDR0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxj
b25zdCBHQ0dMZmxvYXQ+IGFycmF5KQogewogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkp
CiAgICAgICAgIHJldHVybjsKQEAgLTE2MjYsNyArMTYyNiw3IEBAIHZvaWQgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYjNmKEdDR0x1aW50IGluZGV4LCBHQ0dMZmxvYXQgdjAs
IEdDR0xmCiAgICAgOjpnbFZlcnRleEF0dHJpYjNmKGluZGV4LCB2MCwgdjEsIHYyKTsKIH0KIAot
dm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliM2Z2KEdDR0x1aW50IGlu
ZGV4LCBjb25zdCBHQ0dMZmxvYXQqIGFycmF5KQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6dmVydGV4QXR0cmliM2Z2KEdDR0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxv
YXQ+IGFycmF5KQogewogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJl
dHVybjsKQEAgLTE2NDIsNyArMTY0Miw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OnZlcnRleEF0dHJpYjRmKEdDR0x1aW50IGluZGV4LCBHQ0dMZmxvYXQgdjAsIEdDR0xmCiAgICAg
OjpnbFZlcnRleEF0dHJpYjRmKGluZGV4LCB2MCwgdjEsIHYyLCB2Myk7CiB9CiAKLXZvaWQgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYjRmdihHQ0dMdWludCBpbmRleCwgY29u
c3QgR0NHTGZsb2F0KiBhcnJheSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZlcnRl
eEF0dHJpYjRmdihHQ0dMdWludCBpbmRleCwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiBhcnJh
eSkKIHsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CkBA
IC0yMzk1LDE3ICsyMzk1LDE1IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmZyYW1l
YnVmZmVyVGV4dHVyZUxheWVyKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0KICAgICBVTlVTRURf
UEFSQU0obGF5ZXIpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjppbnZhbGlk
YXRlRnJhbWVidWZmZXIoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgbnVtQXR0YWNobWVudHMs
IGNvbnN0IEdDR0xlbnVtKiBhdHRhY2htZW50cykKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OmludmFsaWRhdGVGcmFtZWJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQsIEdDR0xTcGFuPGNvbnN0
IEdDR0xlbnVtPiBhdHRhY2htZW50cykKIHsKICAgICBVTlVTRURfUEFSQU0odGFyZ2V0KTsKLSAg
ICBVTlVTRURfUEFSQU0obnVtQXR0YWNobWVudHMpOwogICAgIFVOVVNFRF9QQVJBTShhdHRhY2ht
ZW50cyk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmludmFsaWRhdGVTdWJG
cmFtZWJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaSBudW1BdHRhY2htZW50cywgY29u
c3QgR0NHTGVudW0qIGF0dGFjaG1lbnRzLCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVp
IHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
aW52YWxpZGF0ZVN1YkZyYW1lYnVmZmVyKEdDR0xlbnVtIHRhcmdldCwgR0NHTFNwYW48Y29uc3Qg
R0NHTGVudW0+IGF0dGFjaG1lbnRzLCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdp
ZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KQogewogICAgIFVOVVNFRF9QQVJBTSh0YXJnZXQpOwotICAg
IFVOVVNFRF9QQVJBTShudW1BdHRhY2htZW50cyk7CiAgICAgVU5VU0VEX1BBUkFNKGF0dGFjaG1l
bnRzKTsKICAgICBVTlVTRURfUEFSQU0oeCk7CiAgICAgVU5VU0VEX1BBUkFNKHkpOwpAQCAtMjUy
OSw5MCArMjUyNyw3MCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtNHVp
KEdDR0xpbnQgbG9jYXRpb24sIEdDR0x1aW50IHYwLCBHQ0dMdWludAogICAgIFVOVVNFRF9QQVJB
TSh2Myk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0xdWl2KEdD
R0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0x1aW50KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQs
IEdDR0x1aW50IHNyY0xlbmd0aCkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZv
cm0xdWl2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0x1aW50PiBkYXRhKQog
ewogICAgIFVOVVNFRF9QQVJBTShsb2NhdGlvbik7CiAgICAgVU5VU0VEX1BBUkFNKGRhdGEpOwot
ICAgIFVOVVNFRF9QQVJBTShzcmNPZmZzZXQpOwotICAgIFVOVVNFRF9QQVJBTShzcmNMZW5ndGgp
OwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMnVpdihHQ0dMaW50
IGxvY2F0aW9uLCBjb25zdCBHQ0dMdWludCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dM
dWludCBzcmNMZW5ndGgpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMnVp
dihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdWludD4gZGF0YSkKIHsKICAg
ICBVTlVTRURfUEFSQU0obG9jYXRpb24pOwogICAgIFVOVVNFRF9QQVJBTShkYXRhKTsKLSAgICBV
TlVTRURfUEFSQU0oc3JjT2Zmc2V0KTsKLSAgICBVTlVTRURfUEFSQU0oc3JjTGVuZ3RoKTsKIH0K
IAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTN1aXYoR0NHTGludCBsb2Nh
dGlvbiwgY29uc3QgR0NHTHVpbnQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQg
c3JjTGVuZ3RoKQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTN1aXYoR0NH
TGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTHVpbnQ+IGRhdGEpCiB7CiAgICAgVU5V
U0VEX1BBUkFNKGxvY2F0aW9uKTsKICAgICBVTlVTRURfUEFSQU0oZGF0YSk7Ci0gICAgVU5VU0VE
X1BBUkFNKHNyY09mZnNldCk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY0xlbmd0aCk7CiB9CiAKLXZv
aWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm00dWl2KEdDR0xpbnQgbG9jYXRpb24s
IGNvbnN0IEdDR0x1aW50KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xl
bmd0aCkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm00dWl2KEdDR0xpbnQg
bG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0x1aW50PiBkYXRhKQogewogICAgIFVOVVNFRF9Q
QVJBTShsb2NhdGlvbik7CiAgICAgVU5VU0VEX1BBUkFNKGRhdGEpOwotICAgIFVOVVNFRF9QQVJB
TShzcmNPZmZzZXQpOwotICAgIFVOVVNFRF9QQVJBTShzcmNMZW5ndGgpOwogfQogCi12b2lkIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4MngzZnYoR0NHTGludCBsb2NhdGlv
biwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50
IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6dW5pZm9ybU1hdHJpeDJ4M2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRy
YW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiBkYXRhKQogewogICAgIFVOVVNFRF9Q
QVJBTShsb2NhdGlvbik7CiAgICAgVU5VU0VEX1BBUkFNKHRyYW5zcG9zZSk7CiAgICAgVU5VU0VE
X1BBUkFNKGRhdGEpOwotICAgIFVOVVNFRF9QQVJBTShzcmNPZmZzZXQpOwotICAgIFVOVVNFRF9Q
QVJBTShzcmNMZW5ndGgpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlm
b3JtTWF0cml4M3gyZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBj
b25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVu
Z3RoKQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybU1hdHJpeDN4MmZ2KEdD
R0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NH
TGZsb2F0PiBkYXRhKQogewogICAgIFVOVVNFRF9QQVJBTShsb2NhdGlvbik7CiAgICAgVU5VU0VE
X1BBUkFNKHRyYW5zcG9zZSk7CiAgICAgVU5VU0VEX1BBUkFNKGRhdGEpOwotICAgIFVOVVNFRF9Q
QVJBTShzcmNPZmZzZXQpOwotICAgIFVOVVNFRF9QQVJBTShzcmNMZW5ndGgpOwogfQogCi12b2lk
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4Mng0ZnYoR0NHTGludCBsb2Nh
dGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1
aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQordm9pZCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6dW5pZm9ybU1hdHJpeDJ4NGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFu
IHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiBkYXRhKQogewogICAgIFVOVVNF
RF9QQVJBTShsb2NhdGlvbik7CiAgICAgVU5VU0VEX1BBUkFNKHRyYW5zcG9zZSk7CiAgICAgVU5V
U0VEX1BBUkFNKGRhdGEpOwotICAgIFVOVVNFRF9QQVJBTShzcmNPZmZzZXQpOwotICAgIFVOVVNF
RF9QQVJBTShzcmNMZW5ndGgpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1
bmlmb3JtTWF0cml4NHgyZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3Nl
LCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3Jj
TGVuZ3RoKQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybU1hdHJpeDR4MmZ2
KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3Qg
R0NHTGZsb2F0PiBkYXRhKQogewogICAgIFVOVVNFRF9QQVJBTShsb2NhdGlvbik7CiAgICAgVU5V
U0VEX1BBUkFNKHRyYW5zcG9zZSk7CiAgICAgVU5VU0VEX1BBUkFNKGRhdGEpOwotICAgIFVOVVNF
RF9QQVJBTShzcmNPZmZzZXQpOwotICAgIFVOVVNFRF9QQVJBTShzcmNMZW5ndGgpOwogfQogCi12
b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4M3g0ZnYoR0NHTGludCBs
b2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdD
R0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQordm9pZCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6dW5pZm9ybU1hdHJpeDN4NGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29s
ZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiBkYXRhKQogewogICAgIFVO
VVNFRF9QQVJBTShsb2NhdGlvbik7CiAgICAgVU5VU0VEX1BBUkFNKHRyYW5zcG9zZSk7CiAgICAg
VU5VU0VEX1BBUkFNKGRhdGEpOwotICAgIFVOVVNFRF9QQVJBTShzcmNPZmZzZXQpOwotICAgIFVO
VVNFRF9QQVJBTShzcmNMZW5ndGgpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
Ojp1bmlmb3JtTWF0cml4NHgzZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNw
b3NlLCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQg
c3JjTGVuZ3RoKQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybU1hdHJpeDR4
M2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29u
c3QgR0NHTGZsb2F0PiBkYXRhKQogewogICAgIFVOVVNFRF9QQVJBTShsb2NhdGlvbik7CiAgICAg
VU5VU0VEX1BBUkFNKHRyYW5zcG9zZSk7CiAgICAgVU5VU0VEX1BBUkFNKGRhdGEpOwotICAgIFVO
VVNFRF9QQVJBTShzcmNPZmZzZXQpOwotICAgIFVOVVNFRF9QQVJBTShzcmNMZW5ndGgpOwogfQog
CiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2ZXJ0ZXhBdHRyaWJJNGkoR0NHTHVpbnQg
aW5kZXgsIEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMaW50IHosIEdDR0xpbnQgdykKQEAgLTI2
MjQsNyArMjYwMiw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJp
Ykk0aShHQ0dMdWludCBpbmRleCwgR0NHTGludCB4LCBHQ0dMaW50CiAgICAgVU5VU0VEX1BBUkFN
KHcpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2ZXJ0ZXhBdHRyaWJJNGl2
KEdDR0x1aW50IGluZGV4LCBjb25zdCBHQ0dMaW50KiB2YWx1ZXMpCit2b2lkIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjp2ZXJ0ZXhBdHRyaWJJNGl2KEdDR0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxj
b25zdCBHQ0dMaW50PiB2YWx1ZXMpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGluZGV4KTsKICAgICBV
TlVTRURfUEFSQU0odmFsdWVzKTsKQEAgLTI2MzksNyArMjYxNyw3IEBAIHZvaWQgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYkk0dWkoR0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50
IHgsIEdDR0x1CiAgICAgVU5VU0VEX1BBUkFNKHcpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjp2ZXJ0ZXhBdHRyaWJJNHVpdihHQ0dMdWludCBpbmRleCwgY29uc3QgR0NHTHVp
bnQqIHZhbHVlcykKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYkk0
dWl2KEdDR0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdWludD4gdmFsdWVzKQogewog
ICAgIFVOVVNFRF9QQVJBTShpbmRleCk7CiAgICAgVU5VU0VEX1BBUkFNKHZhbHVlcyk7CkBAIC0y
NjY0LDM0ICsyNjQyLDMwIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmRyYXdSYW5n
ZUVsZW1lbnRzKEdDR0xlbnVtIG1vZGUsIEdDR0x1aW50IHN0YXJ0LCBHCiAgICAgVU5VU0VEX1BB
UkFNKG9mZnNldCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmRyYXdCdWZm
ZXJzKEdDR0xzaXplaSBuLCBjb25zdCBHQ0dMZW51bSogYnVmcykKK3ZvaWQgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OmRyYXdCdWZmZXJzKEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVtPiBidWZzKQog
ewotICAgIFVOVVNFRF9QQVJBTShuKTsKICAgICBVTlVTRURfUEFSQU0oYnVmcyk7CiB9CiAKLXZv
aWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNsZWFyQnVmZmVyaXYoR0NHTGVudW0gYnVmZmVy
LCBHQ0dMaW50IGRyYXdidWZmZXIsIGNvbnN0IEdDR0xpbnQqIHZhbHVlcywgR0NHTHVpbnQgc3Jj
T2Zmc2V0KQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y2xlYXJCdWZmZXJpdihHQ0dM
ZW51bSBidWZmZXIsIEdDR0xpbnQgZHJhd2J1ZmZlciwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4g
dmFsdWVzKQogewogICAgIFVOVVNFRF9QQVJBTShidWZmZXIpOwogICAgIFVOVVNFRF9QQVJBTShk
cmF3YnVmZmVyKTsKICAgICBVTlVTRURfUEFSQU0odmFsdWVzKTsKLSAgICBVTlVTRURfUEFSQU0o
c3JjT2Zmc2V0KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y2xlYXJCdWZm
ZXJ1aXYoR0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50IGRyYXdidWZmZXIsIGNvbnN0IEdDR0x1aW50
KiB2YWx1ZXMsIEdDR0x1aW50IHNyY09mZnNldCkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OmNsZWFyQnVmZmVydWl2KEdDR0xlbnVtIGJ1ZmZlciwgR0NHTGludCBkcmF3YnVmZmVyLCBH
Q0dMU3Bhbjxjb25zdCBHQ0dMdWludD4gdmFsdWVzKQogewogICAgIFVOVVNFRF9QQVJBTShidWZm
ZXIpOwogICAgIFVOVVNFRF9QQVJBTShkcmF3YnVmZmVyKTsKICAgICBVTlVTRURfUEFSQU0odmFs
dWVzKTsKLSAgICBVTlVTRURfUEFSQU0oc3JjT2Zmc2V0KTsKIH0KIAotdm9pZCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6Y2xlYXJCdWZmZXJmdihHQ0dMZW51bSBidWZmZXIsIEdDR0xpbnQgZHJh
d2J1ZmZlciwgY29uc3QgR0NHTGZsb2F0KiB2YWx1ZXMsIEdDR0x1aW50IHNyY09mZnNldCkKK3Zv
aWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNsZWFyQnVmZmVyZnYoR0NHTGVudW0gYnVmZmVy
LCBHQ0dMaW50IGRyYXdidWZmZXIsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gdmFsdWVzKQog
ewogICAgIFVOVVNFRF9QQVJBTShidWZmZXIpOwogICAgIFVOVVNFRF9QQVJBTShkcmF3YnVmZmVy
KTsKICAgICBVTlVTRURfUEFSQU0odmFsdWVzKTsKLSAgICBVTlVTRURfUEFSQU0oc3JjT2Zmc2V0
KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y2xlYXJCdWZmZXJmaShHQ0dM
ZW51bSBidWZmZXIsIEdDR0xpbnQgZHJhd2J1ZmZlciwgR0NHTGZsb2F0IGRlcHRoLCBHQ0dMaW50
IHN0ZW5jaWwpCkBAIC0zMDIxLDk2ICsyOTk1LDYgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6Y29tcHJlc3NlZFRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGwK
ICAgICBVTlVTRURfUEFSQU0oc3JjTGVuZ3RoT3ZlcnJpZGUpOwogfQogCi12b2lkIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMWZ2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0xm
bG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCi17Ci0g
ICAgVU5VU0VEX1BBUkFNKGxvY2F0aW9uKTsKLSAgICBVTlVTRURfUEFSQU0oZGF0YSk7Ci0gICAg
VU5VU0VEX1BBUkFNKHNyY09mZnNldCk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY0xlbmd0aCk7Ci19
Ci0KLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0yZnYoR0NHTGludCBsb2Nh
dGlvbiwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50
IHNyY0xlbmd0aCkKLXsKLSAgICBVTlVTRURfUEFSQU0obG9jYXRpb24pOwotICAgIFVOVVNFRF9Q
QVJBTShkYXRhKTsKLSAgICBVTlVTRURfUEFSQU0oc3JjT2Zmc2V0KTsKLSAgICBVTlVTRURfUEFS
QU0oc3JjTGVuZ3RoKTsKLX0KLQotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9y
bTNmdihHQ0dMaW50IGxvY2F0aW9uLCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNy
Y09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQotewotICAgIFVOVVNFRF9QQVJBTShsb2NhdGlv
bik7Ci0gICAgVU5VU0VEX1BBUkFNKGRhdGEpOwotICAgIFVOVVNFRF9QQVJBTShzcmNPZmZzZXQp
OwotICAgIFVOVVNFRF9QQVJBTShzcmNMZW5ndGgpOwotfQotCi12b2lkIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjp1bmlmb3JtNGZ2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0xmbG9hdCog
ZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCi17Ci0gICAgVU5V
U0VEX1BBUkFNKGxvY2F0aW9uKTsKLSAgICBVTlVTRURfUEFSQU0oZGF0YSk7Ci0gICAgVU5VU0VE
X1BBUkFNKHNyY09mZnNldCk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY0xlbmd0aCk7Ci19Ci0KLXZv
aWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0xaXYoR0NHTGludCBsb2NhdGlvbiwg
Y29uc3QgR0NHTGludCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5n
dGgpCi17Ci0gICAgVU5VU0VEX1BBUkFNKGxvY2F0aW9uKTsKLSAgICBVTlVTRURfUEFSQU0oZGF0
YSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY09mZnNldCk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY0xl
bmd0aCk7Ci19Ci0KLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0yaXYoR0NH
TGludCBsb2NhdGlvbiwgY29uc3QgR0NHTGludCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBH
Q0dMdWludCBzcmNMZW5ndGgpCi17Ci0gICAgVU5VU0VEX1BBUkFNKGxvY2F0aW9uKTsKLSAgICBV
TlVTRURfUEFSQU0oZGF0YSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY09mZnNldCk7Ci0gICAgVU5V
U0VEX1BBUkFNKHNyY0xlbmd0aCk7Ci19Ci0KLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OnVuaWZvcm0zaXYoR0NHTGludCBsb2NhdGlvbiwgY29uc3QgR0NHTGludCogZGF0YSwgR0NHTHVp
bnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCi17Ci0gICAgVU5VU0VEX1BBUkFNKGxv
Y2F0aW9uKTsKLSAgICBVTlVTRURfUEFSQU0oZGF0YSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY09m
ZnNldCk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY0xlbmd0aCk7Ci19Ci0KLXZvaWQgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OnVuaWZvcm00aXYoR0NHTGludCBsb2NhdGlvbiwgY29uc3QgR0NHTGlu
dCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCi17Ci0gICAg
VU5VU0VEX1BBUkFNKGxvY2F0aW9uKTsKLSAgICBVTlVTRURfUEFSQU0oZGF0YSk7Ci0gICAgVU5V
U0VEX1BBUkFNKHNyY09mZnNldCk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY0xlbmd0aCk7Ci19Ci0K
LXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXgyZnYoR0NHTGludCBs
b2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdD
R0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQotewotICAgIFVOVVNFRF9QQVJB
TShsb2NhdGlvbik7Ci0gICAgVU5VU0VEX1BBUkFNKHRyYW5zcG9zZSk7Ci0gICAgVU5VU0VEX1BB
UkFNKGRhdGEpOwotICAgIFVOVVNFRF9QQVJBTShzcmNPZmZzZXQpOwotICAgIFVOVVNFRF9QQVJB
TShzcmNMZW5ndGgpOwotfQotCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3Jt
TWF0cml4M2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3Qg
R0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkK
LXsKLSAgICBVTlVTRURfUEFSQU0obG9jYXRpb24pOwotICAgIFVOVVNFRF9QQVJBTSh0cmFuc3Bv
c2UpOwotICAgIFVOVVNFRF9QQVJBTShkYXRhKTsKLSAgICBVTlVTRURfUEFSQU0oc3JjT2Zmc2V0
KTsKLSAgICBVTlVTRURfUEFSQU0oc3JjTGVuZ3RoKTsKLX0KLQotdm9pZCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6dW5pZm9ybU1hdHJpeDRmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVh
biB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBH
Q0dMdWludCBzcmNMZW5ndGgpCi17Ci0gICAgVU5VU0VEX1BBUkFNKGxvY2F0aW9uKTsKLSAgICBV
TlVTRURfUEFSQU0odHJhbnNwb3NlKTsKLSAgICBVTlVTRURfUEFSQU0oZGF0YSk7Ci0gICAgVU5V
U0VEX1BBUkFNKHNyY09mZnNldCk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY0xlbmd0aCk7Ci19CiAK
IHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRQaXhlbHMoR0NHTGludCB4LCBHQ0dM
aW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0
LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCkKIHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>414832</attachid>
            <date>2020-11-24 05:27:27 -0800</date>
            <delta_ts>2020-11-24 06:22:46 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219256-20201124152725.patch</filename>
            <type>text/plain</type>
            <size>177555</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwMTY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzIzYWI2YjRlNmM0NDFj
MDYzZWM1Mzg0YzZmOTA5NDdiZDFhNDY5ZC4uYmZhNDFlODE2MTVkMDI2NzBlNmY1YzIyMjY5NjRl
ZDMwNGYyODUyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyNiBAQAorMjAyMC0xMS0yMyAgS2lt
bW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIEdyYXBoaWNzQ29u
dGV4dEdMIHNob3VsZCBoYXZlIHJvYnVzdCBtdWx0aXZhbHVlIHNldHRlcnMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxOTI1NgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlcGxhY2UgYnVmU2l6ZSwgcG9p
bnRlciBwYWlycyBhbmQgcGxhaW4gcG9pbnRlcnMgaW4gR3JhcGhpY3NDb250ZXh0R0wKKyAgICAg
ICAgd2l0aCBHQ0dMU3Bhbi4gVGhpcyBtYWtlcyBpdCBlYXNpZXIgdG8gdW5kZXJzdGFuZCBob3cg
bWFueSB2YWx1ZXMgdGhlcmUKKyAgICAgICAgYXJlIHBvaW50ZWQgYnkgdGhlIHBvaW50ZXIuIFRo
aXMgaXMgbmVlZGVkIGZvciBzaW1wbGVyIGltcGxlbWVudGF0aW9uIG9mIEdQVQorICAgICAgICBw
cm9jZXNzIElQQywgd2hlcmUgdGhlIElQQyBsYXllciBkb2VzIG5vdCBuZWVkIHRvIGludGVycHJl
dCB0aGUgT3BlbkdMCisgICAgICAgIHByb3BlcnRpZXMuCisgICAgICAgIAorICAgICAgICBJbiBX
ZWJHTCBpbXBsZW1lbnRhdGlvbiwgY2hhbmdlcyB0aGUgdmFsaWRhdGlvbiBmdW5jdGlvbnMgdG8g
cmV0dXJuCisgICAgICAgIHRoZSBtZW1vcnkgcmVmZXJlbmNlIHRoYXQgd2lsbCBiZSB0b3VjaGVk
IGJ5IHRoZSB2YWxpZCBmdW5jdGlvbiBjYWxsLgorICAgICAgICBPbiB2YWxpZGF0aW9uIGZhaWx1
cmUsIG51bGxvcHQgd2lsbCBiZSByZXR1cm5lZC4KKyAgICAgICAgCisgICAgICAgIE5vIG5ldyB0
ZXN0cywgYSByZWZhY3Rvci4KKworICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmlu
Z0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6
aW52YWxpZGF0ZUZyYW1lYnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmlu
Z0NvbnRleHQ6OmludmFsaWRhdGVTdWJGcmFtZWJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtMXVpdik6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtMnVpdik6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtM3Vpdik6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtNHVpdik6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtTWF0cml4MngzZnYpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybU1hdHJpeDN4MmZ2KToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm1NYXRyaXgyeDRmdik6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtTWF0cml4
NHgyZnYpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9y
bU1hdHJpeDN4NGZ2KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6
OnVuaWZvcm1NYXRyaXg0eDNmdik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdD
b250ZXh0Ojp2ZXJ0ZXhBdHRyaWJJNGl2KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRl
cmluZ0NvbnRleHQ6OnZlcnRleEF0dHJpYkk0dWl2KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdM
MlJlbmRlcmluZ0NvbnRleHQ6OmRyYXdCdWZmZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdM
MlJlbmRlcmluZ0NvbnRleHQ6OmNsZWFyQnVmZmVyaXYpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
R0wyUmVuZGVyaW5nQ29udGV4dDo6Y2xlYXJCdWZmZXJ1aXYpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Y2xlYXJCdWZmZXJmdik6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp2YWxpZGF0ZUNsZWFyQnVmZmVyKToKKyAgICAgICAg
KFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm0xZnYpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTJmdik6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtM2Z2KToKKyAgICAgICAgKFdl
YkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm00ZnYpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTFpdik6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtMml2KToKKyAgICAgICAgKFdlYkNv
cmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm0zaXYpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTRpdik6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtTWF0cml4MmZ2KToKKyAgICAgICAgKFdl
YkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm1NYXRyaXgzZnYpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybU1hdHJpeDRmdik6Cisg
ICAgICAgICogaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5oOgorICAgICAgICAq
IGh0bWwvY2FudmFzL1dlYkdMRHJhd0J1ZmZlcnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
R0xEcmF3QnVmZmVyczo6ZHJhd0J1ZmZlcnNXRUJHTCk6CisgICAgICAgICogaHRtbC9jYW52YXMv
V2ViR0xGcmFtZWJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTEZyYW1lYnVmZmVy
OjpkcmF3QnVmZmVyc0lmTmVjZXNzYXJ5KToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2U6OmJ1ZmZlckRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6YnVmZmVyU3ViRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtMWZ2KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm0yZnYpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybTNmdik6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtNGZ2KToKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm0xaXYpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybTJpdik6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtM2l2KToKKyAgICAgICAgKFdl
YkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm00aXYpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybU1hdHJpeDJmdik6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtTWF0cml4
M2Z2KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZv
cm1NYXRyaXg0ZnYpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZTo6dmFsaWRhdGVVbmlmb3JtTWF0cml4UGFyYW1ldGVycyk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2ZXJ0ZXhBdHRyaWJmdkltcGwpOgorICAgICAgICAq
IGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaDoKKyAgICAgICAgKFdlYkNv
cmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0V4dGVuc2lvbnNHTC5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlc0dMLmg6CisgICAgICAgIChHQ0dMU3Bhbjo6R0NHTFNw
YW4pOgorICAgICAgICAoc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgpOgorICAgICAg
ICAobWFrZUdDR0xTcGFuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRl
bnNpb25zR0xBTkdMRS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6
ZHJhd0J1ZmZlcnNFWFQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVu
c2lvbnNHTEFOR0xFLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhp
Y3NDb250ZXh0R0xBTkdMRS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6YnVmZmVyRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6YnVmZmVyU3ViRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6dW5pZm9ybTFmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6dW5pZm9ybTJmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6dW5pZm9ybTNmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6dW5pZm9ybTRmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6dW5pZm9ybTFpdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6dW5pZm9ybTJpdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6dW5pZm9ybTNpdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6dW5pZm9ybTRpdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6dW5pZm9ybU1hdHJpeDJmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybU1hdHJpeDNmdik6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybU1hdHJpeDRmdik6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliMWZ2KToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2ZXJ0ZXhBdHRyaWIyZnYpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYjNmdik6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmli
NGZ2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjppbnZhbGlk
YXRlRnJhbWVidWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OmludmFsaWRhdGVTdWJGcmFtZWJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTF1aXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0ydWl2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtM3Vpdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTR1aXYpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXgyeDNmdik6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybU1hdHJpeDN4MmZ2KToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4Mng0ZnYp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRy
aXg0eDJmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5p
Zm9ybU1hdHJpeDN4NGZ2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjp1bmlmb3JtTWF0cml4NHgzZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYkk0aXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYkk0dWl2KToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpkcmF3QnVmZmVycyk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y2xlYXJCdWZmZXJpdik6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y2xlYXJCdWZmZXJ1aXYpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNsZWFyQnVmZmVyZnYpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2N2L0dyYXBoaWNzQ29udGV4dEdMQ1ZBTkdMRS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTENWQU5HTEU6OmluaXRpYWxpemVVVkNv
bnRleHRPYmplY3RzKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQ1ZBTkdM
RTo6Y29weVBpeGVsQnVmZmVyVG9UZXh0dXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaDoKKwogMjAyMC0xMS0yMiAgQW50dGkg
S29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CiAKICAgICAgICAgW0xGQ11bSW50ZWdyYXRpb25d
IENvbnZlcnQgc29tZSByZW1haW5pbmcgSW5saW5lQm94IGFjY2VzcyB0byB1c2UgaW5saW5lIGl0
ZXJhdG9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5k
ZXJpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRl
cmluZ0NvbnRleHQuY3BwCmluZGV4IDU1YmMxZjhkYjI0OWQzMzgyMmU3ODg5Y2E3ODNmNWJlYzAy
NWEyOTkuLmQzNjliOWZhYTNjNDgwZTNjNDg0NDA5ZWYwNDVhZmQ4NmI1Zjg1ZDUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQu
Y3BwCkBAIC04OTUsNyArODk1LDcgQEAgdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjppbnZh
bGlkYXRlRnJhbWVidWZmZXIoR0NHTGVudW0gdGFyZ2V0LCBjb25zdCBWZWN0b3IKICAgICBWZWN0
b3I8R0NHTGVudW0+IHRyYW5zbGF0ZWRBdHRhY2htZW50cyA9IGF0dGFjaG1lbnRzOwogICAgIGlm
ICghY2hlY2tBbmRUcmFuc2xhdGVBdHRhY2htZW50cygiaW52YWxpZGF0ZUZyYW1lYnVmZmVyIiwg
dGFyZ2V0LCB0cmFuc2xhdGVkQXR0YWNobWVudHMpKQogICAgICAgICByZXR1cm47Ci0gICAgbV9j
b250ZXh0LT5pbnZhbGlkYXRlRnJhbWVidWZmZXIodGFyZ2V0LCB0cmFuc2xhdGVkQXR0YWNobWVu
dHMuc2l6ZSgpLCB0cmFuc2xhdGVkQXR0YWNobWVudHMuZGF0YSgpKTsKKyAgICBtX2NvbnRleHQt
PmludmFsaWRhdGVGcmFtZWJ1ZmZlcih0YXJnZXQsIHRyYW5zbGF0ZWRBdHRhY2htZW50cyk7CiB9
CiAKIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6aW52YWxpZGF0ZVN1YkZyYW1lYnVmZmVy
KEdDR0xlbnVtIHRhcmdldCwgY29uc3QgVmVjdG9yPEdDR0xlbnVtPiYgYXR0YWNobWVudHMsIEdD
R0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpCkBA
IC05MDYsNyArOTA2LDcgQEAgdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjppbnZhbGlkYXRl
U3ViRnJhbWVidWZmZXIoR0NHTGVudW0gdGFyZ2V0LCBjb25zdCBWZWMKICAgICBWZWN0b3I8R0NH
TGVudW0+IHRyYW5zbGF0ZWRBdHRhY2htZW50cyA9IGF0dGFjaG1lbnRzOwogICAgIGlmICghY2hl
Y2tBbmRUcmFuc2xhdGVBdHRhY2htZW50cygiaW52YWxpZGF0ZVN1YkZyYW1lYnVmZmVyIiwgdGFy
Z2V0LCB0cmFuc2xhdGVkQXR0YWNobWVudHMpKQogICAgICAgICByZXR1cm47Ci0gICAgbV9jb250
ZXh0LT5pbnZhbGlkYXRlU3ViRnJhbWVidWZmZXIodGFyZ2V0LCB0cmFuc2xhdGVkQXR0YWNobWVu
dHMuc2l6ZSgpLCB0cmFuc2xhdGVkQXR0YWNobWVudHMuZGF0YSgpLCB4LCB5LCB3aWR0aCwgaGVp
Z2h0KTsKKyAgICBtX2NvbnRleHQtPmludmFsaWRhdGVTdWJGcmFtZWJ1ZmZlcih0YXJnZXQsIHRy
YW5zbGF0ZWRBdHRhY2htZW50cywgeCwgeSwgd2lkdGgsIGhlaWdodCk7CiB9CiAKIHZvaWQgV2Vi
R0wyUmVuZGVyaW5nQ29udGV4dDo6cmVhZEJ1ZmZlcihHQ0dMZW51bSBzcmMpCkBAIC0xMTI5LDcg
KzExMjksNyBAQCB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnRleEltYWdlMkQoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50CiAgICAgaWYgKCF2YWxpZGF0ZVRleEZ1
bmMoInRleEltYWdlMkQiLCBUZXhJbWFnZUZ1bmN0aW9uVHlwZTo6VGV4SW1hZ2UsIFNvdXJjZVVu
cGFja0J1ZmZlciwgdGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQs
IDEsIGJvcmRlciwgZm9ybWF0LCB0eXBlLCAwLCAwLCAwKSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkudGV4SW1hZ2UyRFJvYnVzdEFOR0xFKHRhcmdl
dCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIsIGZvcm1hdCwg
dHlwZSwgMCwgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ob2Zmc2V0KSk7CisgICAgbV9jb250ZXh0
LT50ZXhJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0
LCBib3JkZXIsIGZvcm1hdCwgdHlwZSwgb2Zmc2V0KTsKIH0KIAogRXhjZXB0aW9uT3I8dm9pZD4g
V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xp
bnQgbGV2ZWwsIEdDR0xpbnQgaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNp
emVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlw
ZSwgVGV4SW1hZ2VTb3VyY2UmJiBzb3VyY2UpCkBAIC0xMTczLDcgKzExNzMsNyBAQCB2b2lkIFdl
YkdMMlJlbmRlcmluZ0NvbnRleHQ6OnRleEltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50
IGxldmVsLCBHQ0dMaW50CiAgICAgaWYgKCF2YWxpZGF0ZVRleEZ1bmMoInRleEltYWdlM0QiLCBU
ZXhJbWFnZUZ1bmN0aW9uVHlwZTo6VGV4SW1hZ2UsIFNvdXJjZVVucGFja0J1ZmZlciwgdGFyZ2V0
LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBib3JkZXIsIGZv
cm1hdCwgdHlwZSwgMCwgMCwgMCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fY29udGV4dC0+
Z2V0RXh0ZW5zaW9ucygpLnRleEltYWdlM0RSb2J1c3RBTkdMRSh0YXJnZXQsIGxldmVsLCBpbnRl
cm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGJvcmRlciwgZm9ybWF0LCB0eXBlLCAw
LCByZWludGVycHJldF9jYXN0PHZvaWQqPihvZmZzZXQpKTsKKyAgICBtX2NvbnRleHQtPmdldEV4
dGVuc2lvbnMoKS50ZXhJbWFnZTNEUm9idXN0QU5HTEUodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxm
b3JtYXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBib3JkZXIsIGZvcm1hdCwgdHlwZSwgIHN0YXRp
Y19jYXN0PGludHB0cl90PihvZmZzZXQpKTsKIH0KIAogRXhjZXB0aW9uT3I8dm9pZD4gV2ViR0wy
UmVuZGVyaW5nQ29udGV4dDo6dGV4SW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2
ZWwsIEdDR0xpbnQgaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhl
aWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMaW50IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0LCBH
Q0dMZW51bSB0eXBlLCBUZXhJbWFnZVNvdXJjZSYmIHNvdXJjZSkKQEAgLTEyNTksNyArMTI1OSw3
IEBAIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0
YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpCiAgICAgaWYgKCF2YWxpZGF0ZVRleEZ1bmMoInRl
eFN1YkltYWdlMkQiLCBUZXhJbWFnZUZ1bmN0aW9uVHlwZTo6VGV4U3ViSW1hZ2UsIFNvdXJjZVVu
cGFja0J1ZmZlciwgdGFyZ2V0LCBsZXZlbCwgMCwgd2lkdGgsIGhlaWdodCwgMSwgMCwgZm9ybWF0
LCB0eXBlLCB4b2Zmc2V0LCB5b2Zmc2V0LCAwKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9j
b250ZXh0LT5nZXRFeHRlbnNpb25zKCkudGV4U3ViSW1hZ2UyRFJvYnVzdEFOR0xFKHRhcmdldCwg
bGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgMCwg
cmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ob2Zmc2V0KSk7CisgICAgbV9jb250ZXh0LT5nZXRFeHRl
bnNpb25zKCkudGV4U3ViSW1hZ2UyRFJvYnVzdEFOR0xFKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQs
IHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgb2Zmc2V0KTsKIH0KIAogRXhj
ZXB0aW9uT3I8dm9pZD4gV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dGV4U3ViSW1hZ2UyRChHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zm
c2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwg
R0NHTGVudW0gdHlwZSwgVGV4SW1hZ2VTb3VyY2UmJiBzb3VyY2UpCkBAIC0xMzAzLDcgKzEzMDMs
NyBAQCB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnRleFN1YkltYWdlM0QoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaQogICAgIGlmICghdmFsaWRhdGVUZXhGdW5jKCJ0
ZXhTdWJJbWFnZTNEIiwgVGV4SW1hZ2VGdW5jdGlvblR5cGU6OlRleFN1YkltYWdlLCBTb3VyY2VV
bnBhY2tCdWZmZXIsIHRhcmdldCwgbGV2ZWwsIDAsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCAwLCBm
b3JtYXQsIHR5cGUsIHhvZmZzZXQsIHlvZmZzZXQsIHpvZmZzZXQpKQogICAgICAgICByZXR1cm47
CiAKLSAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS50ZXhTdWJJbWFnZTNEUm9idXN0QU5H
TEUodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgem9mZnNldCwgd2lkdGgsIGhlaWdo
dCwgZGVwdGgsIGZvcm1hdCwgdHlwZSwgMCwgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ob2Zmc2V0
KSk7CisgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkudGV4U3ViSW1hZ2UzRFJvYnVzdEFO
R0xFKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHpvZmZzZXQsIHdpZHRoLCBoZWln
aHQsIGRlcHRoLCBmb3JtYXQsIHR5cGUsIHN0YXRpY19jYXN0PGludHB0cl90PihvZmZzZXQpKTsK
IH0KIAogdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp0ZXhTdWJJbWFnZTNEKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQs
IEdDR0xpbnQgem9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dM
c2l6ZWkgZGVwdGgsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgUmVmUHRyPEFycmF5
QnVmZmVyVmlldz4mJiBzcmNEYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQpCkBAIC0xMzcyLDcgKzEz
NzIsNyBAQCB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmNvbXByZXNzZWRUZXhJbWFnZTJE
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbAogICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5z
aW9ucygpLmNvbXByZXNzZWRUZXhJbWFnZTJEUm9idXN0QU5HTEUoCiAgICAgICAgIHRhcmdldCwg
bGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwKICAgICAgICAgaGVpZ2h0LCBib3JkZXIsIGlt
YWdlU2l6ZSwKLSAgICAgICAgMCwgcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4ob2Zmc2V0KSk7
CisgICAgICAgIHN0YXRpY19jYXN0PGludHB0cl90PihvZmZzZXQpKTsKIH0KIAogdm9pZCBXZWJH
TDJSZW5kZXJpbmdDb250ZXh0Ojpjb21wcmVzc2VkVGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQs
IEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgs
IEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBBcnJheUJ1ZmZlclZpZXcmIHNyY0Rh
dGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoT3ZlcnJpZGUpCkBAIC0x
MzkzLDcgKzEzOTMsNyBAQCB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmNvbXByZXNzZWRU
ZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbAogICAgIG1fY29udGV4dC0+
Z2V0RXh0ZW5zaW9ucygpLmNvbXByZXNzZWRUZXhJbWFnZTJEUm9idXN0QU5HTEUoCiAgICAgICAg
IHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LAogICAgICAgICBi
b3JkZXIsIHNsaWNlLT5ieXRlTGVuZ3RoKCksCi0gICAgICAgIHNsaWNlLT5ieXRlTGVuZ3RoKCks
IHNsaWNlLT5iYXNlQWRkcmVzcygpKTsKKyAgICAgICAgbWFrZUdDR0xTcGFuKHNsaWNlLT5iYXNl
QWRkcmVzcygpLCBzbGljZS0+Ynl0ZUxlbmd0aCgpKSk7CiB9CiAKIHZvaWQgV2ViR0wyUmVuZGVy
aW5nQ29udGV4dDo6Y29tcHJlc3NlZFRleEltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50
IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6
ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMc2l6ZWkgaW1h
Z2VTaXplLCBHQ0dMaW50NjQgb2Zmc2V0KQpAQCAtMTQxMSw3ICsxNDExLDcgQEAgdm9pZCBXZWJH
TDJSZW5kZXJpbmdDb250ZXh0Ojpjb21wcmVzc2VkVGV4SW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQs
IEdDR0xpbnQgbGV2ZWwKICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5jb21wcmVzc2Vk
VGV4SW1hZ2UzRFJvYnVzdEFOR0xFKAogICAgICAgICB0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZv
cm1hdCwgd2lkdGgsCiAgICAgICAgIGhlaWdodCwgZGVwdGgsIGJvcmRlciwgaW1hZ2VTaXplLAot
ICAgICAgICAwLCByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihvZmZzZXQpKTsKKyAgICAgICAg
c3RhdGljX2Nhc3Q8aW50cHRyX3Q+KG9mZnNldCkpOwogfQogCiB2b2lkIFdlYkdMMlJlbmRlcmlu
Z0NvbnRleHQ6OmNvbXByZXNzZWRUZXhJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBs
ZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVp
IGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMaW50IGJvcmRlciwgQXJyYXlCdWZmZXJWaWV3
JiBzcmNEYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aE92ZXJyaWRl
KQpAQCAtMTQzMiw3ICsxNDMyLDcgQEAgdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojpjb21w
cmVzc2VkVGV4SW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwKICAgICBtX2Nv
bnRleHQtPmdldEV4dGVuc2lvbnMoKS5jb21wcmVzc2VkVGV4SW1hZ2UzRFJvYnVzdEFOR0xFKAog
ICAgICAgICB0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwKICAg
ICAgICAgZGVwdGgsIGJvcmRlciwgc2xpY2UtPmJ5dGVMZW5ndGgoKSwKLSAgICAgICAgc2xpY2Ut
PmJ5dGVMZW5ndGgoKSwgc2xpY2UtPmJhc2VBZGRyZXNzKCkpOworICAgICAgICBtYWtlR0NHTFNw
YW4oc2xpY2UtPmJhc2VBZGRyZXNzKCksIHNsaWNlLT5ieXRlTGVuZ3RoKCkpKTsKIH0KIAogdm9p
ZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojpjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChHQ0dMZW51
bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0
LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgQXJy
YXlCdWZmZXJWaWV3JiBzcmNEYXRhKQpAQCAtMTQ2Myw3ICsxNDYzLDcgQEAgdm9pZCBXZWJHTDJS
ZW5kZXJpbmdDb250ZXh0Ojpjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQs
IEdDR0xpbnQgbGUKICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5jb21wcmVzc2VkVGV4
U3ViSW1hZ2UyRFJvYnVzdEFOR0xFKAogICAgICAgICB0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5
b2Zmc2V0LAogICAgICAgICB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIGltYWdlU2l6ZSwKLSAgICAg
ICAgMCwgcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4ob2Zmc2V0KSk7CisgICAgICAgIG9mZnNl
dCk7CiB9CiAKIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Y29tcHJlc3NlZFRleFN1Yklt
YWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdD
R0xpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51
bSBmb3JtYXQsIEFycmF5QnVmZmVyVmlldyYgc3JjRGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBH
Q0dMdWludCBzcmNMZW5ndGhPdmVycmlkZSkKQEAgLTE0ODQsNyArMTQ4NCw3IEBAIHZvaWQgV2Vi
R0wyUmVuZGVyaW5nQ29udGV4dDo6Y29tcHJlc3NlZFRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMaW50IGxlCiAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuY29tcHJlc3Nl
ZFRleFN1YkltYWdlMkRSb2J1c3RBTkdMRSgKICAgICAgICAgdGFyZ2V0LCBsZXZlbCwgeG9mZnNl
dCwgeW9mZnNldCwKICAgICAgICAgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCBzbGljZS0+Ynl0ZUxl
bmd0aCgpLAotICAgICAgICBzbGljZS0+Ynl0ZUxlbmd0aCgpLCBzbGljZS0+YmFzZUFkZHJlc3Mo
KSk7CisgICAgICAgIG1ha2VHQ0dMU3BhbihzbGljZS0+YmFzZUFkZHJlc3MoKSwgc2xpY2UtPmJ5
dGVMZW5ndGgoKSkpOwogfQogCiB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmNvbXByZXNz
ZWRUZXhTdWJJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4
b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xpbnQgem9mZnNldCwgR0NHTHNpemVpIHdpZHRo
LCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xlbnVtIGZvcm1hdCwgR0NH
THNpemVpIGltYWdlU2l6ZSwgR0NHTGludDY0IG9mZnNldCkKQEAgLTE1MDIsNyArMTUwMiw3IEBA
IHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Y29tcHJlc3NlZFRleFN1YkltYWdlM0QoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxlCiAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCku
Y29tcHJlc3NlZFRleFN1YkltYWdlM0RSb2J1c3RBTkdMRSgKICAgICAgICAgdGFyZ2V0LCBsZXZl
bCwgeG9mZnNldCwgeW9mZnNldCwgem9mZnNldCwKICAgICAgICAgd2lkdGgsIGhlaWdodCwgZGVw
dGgsIGZvcm1hdCwgaW1hZ2VTaXplLAotICAgICAgICAwLCByZWludGVycHJldF9jYXN0PHVpbnQ4
X3QqPihvZmZzZXQpKTsKKyAgICAgICAgc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KG9mZnNldCkpOwog
fQogCiB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmNvbXByZXNzZWRUZXhTdWJJbWFnZTNE
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50
IHlvZmZzZXQsIEdDR0xpbnQgem9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVp
Z2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xlbnVtIGZvcm1hdCwgQXJyYXlCdWZmZXJWaWV3JiBz
cmNEYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aE92ZXJyaWRlKQpA
QCAtMTUyMyw3ICsxNTIzLDcgQEAgdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojpjb21wcmVz
c2VkVGV4U3ViSW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGUKICAgICBtX2NvbnRl
eHQtPmdldEV4dGVuc2lvbnMoKS5jb21wcmVzc2VkVGV4U3ViSW1hZ2UzRFJvYnVzdEFOR0xFKAog
ICAgICAgICB0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB6b2Zmc2V0LAogICAgICAg
ICB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgZm9ybWF0LCBzbGljZS0+Ynl0ZUxlbmd0aCgpLAotICAg
ICAgICBzbGljZS0+Ynl0ZUxlbmd0aCgpLCBzbGljZS0+YmFzZUFkZHJlc3MoKSk7CisgICAgICAg
IG1ha2VHQ0dMU3BhbihzbGljZS0+YmFzZUFkZHJlc3MoKSwgc2xpY2UtPmJ5dGVMZW5ndGgoKSkp
OwogfQogCiBHQ0dMaW50IFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldEZyYWdEYXRhTG9jYXRp
b24oV2ViR0xQcm9ncmFtJiBwcm9ncmFtLCBjb25zdCBTdHJpbmcmIG5hbWUpCkBAIC0xNTYzLDcy
ICsxNTYzLDEwMiBAQCB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm00dWkoV2Vi
R0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBHQ0dMdWludAogCiB2b2lkIFdlYkdMMlJlbmRl
cmluZ0NvbnRleHQ6OnVuaWZvcm0xdWl2KFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwg
VWludDMyTGlzdCYmIHZhbHVlLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0
aCkKIHsKLSAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVVuaWZv
cm1QYXJhbWV0ZXJzKCJ1bmlmb3JtMXVpdiIsIGxvY2F0aW9uLCB2YWx1ZSwgMSwgc3JjT2Zmc2V0
LCBzcmNMZW5ndGgpKQorICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCisgICAgICAg
IHJldHVybjsKKyAgICBhdXRvIGRhdGEgPSB2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKCJ1bmlm
b3JtMXVpdiIsIGxvY2F0aW9uLCB2YWx1ZSwgMSwgc3JjT2Zmc2V0LCBzcmNMZW5ndGgpOworICAg
IGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuOwotICAgIG1fY29udGV4dC0+dW5pZm9ybTF1aXYo
bG9jYXRpb24tPmxvY2F0aW9uKCksIHZhbHVlLmRhdGEoKSwgc3JjT2Zmc2V0LCBzcmNMZW5ndGgg
PyBzcmNMZW5ndGggOiAodmFsdWUubGVuZ3RoKCkgLSBzcmNPZmZzZXQpKTsKKyAgICBtX2NvbnRl
eHQtPnVuaWZvcm0xdWl2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCBkYXRhLnZhbHVlKCkpOwogfQog
CiB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm0ydWl2KFdlYkdMVW5pZm9ybUxv
Y2F0aW9uKiBsb2NhdGlvbiwgVWludDMyTGlzdCYmIHZhbHVlLCBHQ0dMdWludCBzcmNPZmZzZXQs
IEdDR0x1aW50IHNyY0xlbmd0aCkKIHsKLSAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygp
IHx8ICF2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKCJ1bmlmb3JtMnVpdiIsIGxvY2F0aW9uLCB2
YWx1ZSwgMiwgc3JjT2Zmc2V0LCBzcmNMZW5ndGgpKQorICAgIGlmIChpc0NvbnRleHRMb3N0T3JQ
ZW5kaW5nKCkpCisgICAgICAgIHJldHVybjsKKyAgICBhdXRvIGRhdGEgPSB2YWxpZGF0ZVVuaWZv
cm1QYXJhbWV0ZXJzKCJ1bmlmb3JtMnVpdiIsIGxvY2F0aW9uLCB2YWx1ZSwgMiwgc3JjT2Zmc2V0
LCBzcmNMZW5ndGgpOworICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuOwotICAgIG1fY29u
dGV4dC0+dW5pZm9ybTJ1aXYobG9jYXRpb24tPmxvY2F0aW9uKCksIHZhbHVlLmRhdGEoKSwgc3Jj
T2Zmc2V0LCAoc3JjTGVuZ3RoID8gc3JjTGVuZ3RoIDogdmFsdWUubGVuZ3RoKCkgLSBzcmNPZmZz
ZXQpIC8gMik7CisgICAgbV9jb250ZXh0LT51bmlmb3JtMnVpdihsb2NhdGlvbi0+bG9jYXRpb24o
KSwgZGF0YS52YWx1ZSgpKTsKIH0KIAogdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlm
b3JtM3VpdihXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIFVpbnQzMkxpc3QmJiB2YWx1
ZSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCiB7Ci0gICAgaWYgKGlz
Q29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycygidW5p
Zm9ybTN1aXYiLCBsb2NhdGlvbiwgdmFsdWUsIDMsIHNyY09mZnNldCwgc3JjTGVuZ3RoKSkKKyAg
ICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpKQorICAgICAgICByZXR1cm47CisgICAgYXV0
byBkYXRhID0gdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycygidW5pZm9ybTN1aXYiLCBsb2NhdGlv
biwgdmFsdWUsIDMsIHNyY09mZnNldCwgc3JjTGVuZ3RoKTsKKyAgICBpZiAoIWRhdGEpCiAgICAg
ICAgIHJldHVybjsKLSAgICBtX2NvbnRleHQtPnVuaWZvcm0zdWl2KGxvY2F0aW9uLT5sb2NhdGlv
bigpLCB2YWx1ZS5kYXRhKCksIHNyY09mZnNldCwgKHNyY0xlbmd0aCA/IHNyY0xlbmd0aCA6IHZh
bHVlLmxlbmd0aCgpIC0gc3JjT2Zmc2V0KSAvIDMpOworICAgIG1fY29udGV4dC0+dW5pZm9ybTN1
aXYobG9jYXRpb24tPmxvY2F0aW9uKCksIGRhdGEudmFsdWUoKSk7CiB9CiAKIHZvaWQgV2ViR0wy
UmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTR1aXYoV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0
aW9uLCBVaW50MzJMaXN0JiYgdmFsdWUsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3Jj
TGVuZ3RoKQogewotICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRl
VW5pZm9ybVBhcmFtZXRlcnMoInVuaWZvcm00dWl2IiwgbG9jYXRpb24sIHZhbHVlLCA0LCBzcmNP
ZmZzZXQsIHNyY0xlbmd0aCkpCisgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSkKKyAg
ICAgICAgcmV0dXJuOworICAgIGF1dG8gZGF0YSA9IHZhbGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMo
InVuaWZvcm00dWl2IiwgbG9jYXRpb24sIHZhbHVlLCA0LCBzcmNPZmZzZXQsIHNyY0xlbmd0aCk7
CisgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm47Ci0gICAgbV9jb250ZXh0LT51bmlmb3Jt
NHVpdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgdmFsdWUuZGF0YSgpLCBzcmNPZmZzZXQsIChzcmNM
ZW5ndGggPyBzcmNMZW5ndGggOiB2YWx1ZS5sZW5ndGgoKSAtIHNyY09mZnNldCkgLyA0KTsKKyAg
ICBtX2NvbnRleHQtPnVuaWZvcm00dWl2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCBkYXRhLnZhbHVl
KCkpOwogfQogCiB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm1NYXRyaXgyeDNm
dihXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwg
RmxvYXQzMkxpc3QmJiB2LCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkK
IHsKLSAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVVuaWZvcm1N
YXRyaXhQYXJhbWV0ZXJzKCJ1bmlmb3JtTWF0cml4MngzZnYiLCBsb2NhdGlvbiwgdHJhbnNwb3Nl
LCB2LCA2LCBzcmNPZmZzZXQsIHNyY0xlbmd0aCkpCisgICAgaWYgKGlzQ29udGV4dExvc3RPclBl
bmRpbmcoKSkKKyAgICAgICAgcmV0dXJuOworICAgIGF1dG8gZGF0YSA9IHZhbGlkYXRlVW5pZm9y
bU1hdHJpeFBhcmFtZXRlcnMoInVuaWZvcm1NYXRyaXgyeDNmdiIsIGxvY2F0aW9uLCB0cmFuc3Bv
c2UsIHYsIDYsIHNyY09mZnNldCwgc3JjTGVuZ3RoKTsKKyAgICBpZiAoIWRhdGEpCiAgICAgICAg
IHJldHVybjsKLSAgICBtX2NvbnRleHQtPnVuaWZvcm1NYXRyaXgyeDNmdihsb2NhdGlvbi0+bG9j
YXRpb24oKSwgdHJhbnNwb3NlLCB2LmRhdGEoKSwgc3JjT2Zmc2V0LCAoc3JjTGVuZ3RoID8gc3Jj
TGVuZ3RoIDogdi5sZW5ndGgoKSAtIHNyY09mZnNldCkgLyA2KTsKKyAgICBtX2NvbnRleHQtPnVu
aWZvcm1NYXRyaXgyeDNmdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgdHJhbnNwb3NlLCBkYXRhLnZh
bHVlKCkpOwogfQogCiB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm1NYXRyaXgz
eDJmdihXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9z
ZSwgRmxvYXQzMkxpc3QmJiB2LCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0
aCkKIHsKLSAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVVuaWZv
cm1NYXRyaXhQYXJhbWV0ZXJzKCJ1bmlmb3JtTWF0cml4M3gyZnYiLCBsb2NhdGlvbiwgdHJhbnNw
b3NlLCB2LCA2LCBzcmNPZmZzZXQsIHNyY0xlbmd0aCkpCisgICAgaWYgKGlzQ29udGV4dExvc3RP
clBlbmRpbmcoKSkKKyAgICAgICAgcmV0dXJuOworICAgIGF1dG8gZGF0YSA9IHZhbGlkYXRlVW5p
Zm9ybU1hdHJpeFBhcmFtZXRlcnMoInVuaWZvcm1NYXRyaXgzeDJmdiIsIGxvY2F0aW9uLCB0cmFu
c3Bvc2UsIHYsIDYsIHNyY09mZnNldCwgc3JjTGVuZ3RoKTsKKyAgICBpZiAoIWRhdGEpCiAgICAg
ICAgIHJldHVybjsKLSAgICBtX2NvbnRleHQtPnVuaWZvcm1NYXRyaXgzeDJmdihsb2NhdGlvbi0+
bG9jYXRpb24oKSwgdHJhbnNwb3NlLCB2LmRhdGEoKSwgc3JjT2Zmc2V0LCAoc3JjTGVuZ3RoID8g
c3JjTGVuZ3RoIDogdi5sZW5ndGgoKSAtIHNyY09mZnNldCkgLyA2KTsKKyAgICBtX2NvbnRleHQt
PnVuaWZvcm1NYXRyaXgzeDJmdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgdHJhbnNwb3NlLCBkYXRh
LnZhbHVlKCkpOwogfQogCiB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm1NYXRy
aXgyeDRmdihXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5z
cG9zZSwgRmxvYXQzMkxpc3QmJiB2LCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xl
bmd0aCkKIHsKLSAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVVu
aWZvcm1NYXRyaXhQYXJhbWV0ZXJzKCJ1bmlmb3JtTWF0cml4Mng0ZnYiLCBsb2NhdGlvbiwgdHJh
bnNwb3NlLCB2LCA4LCBzcmNPZmZzZXQsIHNyY0xlbmd0aCkpCisgICAgaWYgKGlzQ29udGV4dExv
c3RPclBlbmRpbmcoKSkKKyAgICAgICAgcmV0dXJuOworICAgIGF1dG8gZGF0YSA9IHZhbGlkYXRl
VW5pZm9ybU1hdHJpeFBhcmFtZXRlcnMoInVuaWZvcm1NYXRyaXgyeDRmdiIsIGxvY2F0aW9uLCB0
cmFuc3Bvc2UsIHYsIDgsIHNyY09mZnNldCwgc3JjTGVuZ3RoKTsKKyAgICBpZiAoIWRhdGEpCiAg
ICAgICAgIHJldHVybjsKLSAgICBtX2NvbnRleHQtPnVuaWZvcm1NYXRyaXgyeDRmdihsb2NhdGlv
bi0+bG9jYXRpb24oKSwgdHJhbnNwb3NlLCB2LmRhdGEoKSwgc3JjT2Zmc2V0LCAoc3JjTGVuZ3Ro
ID8gc3JjTGVuZ3RoIDogdi5sZW5ndGgoKSAtIHNyY09mZnNldCkgLyA4KTsKKyAgICBtX2NvbnRl
eHQtPnVuaWZvcm1NYXRyaXgyeDRmdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgdHJhbnNwb3NlLCBk
YXRhLnZhbHVlKCkpOwogfQogCiB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm1N
YXRyaXg0eDJmdihXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEdDR0xib29sZWFuIHRy
YW5zcG9zZSwgRmxvYXQzMkxpc3QmJiB2LCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNy
Y0xlbmd0aCkKIHsKLSAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0
ZVVuaWZvcm1NYXRyaXhQYXJhbWV0ZXJzKCJ1bmlmb3JtTWF0cml4NHgyZnYiLCBsb2NhdGlvbiwg
dHJhbnNwb3NlLCB2LCA4LCBzcmNPZmZzZXQsIHNyY0xlbmd0aCkpCisgICAgaWYgKGlzQ29udGV4
dExvc3RPclBlbmRpbmcoKSkKICAgICAgICAgcmV0dXJuOwotICAgIG1fY29udGV4dC0+dW5pZm9y
bU1hdHJpeDR4MmZ2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCB0cmFuc3Bvc2UsIHYuZGF0YSgpLCBz
cmNPZmZzZXQsIChzcmNMZW5ndGggPyBzcmNMZW5ndGggOiB2Lmxlbmd0aCgpIC0gc3JjT2Zmc2V0
KSAvIDgpOworICAgIGF1dG8gZGF0YSA9IHZhbGlkYXRlVW5pZm9ybU1hdHJpeFBhcmFtZXRlcnMo
InVuaWZvcm1NYXRyaXg0eDJmdiIsIGxvY2F0aW9uLCB0cmFuc3Bvc2UsIHYsIDgsIHNyY09mZnNl
dCwgc3JjTGVuZ3RoKTsKKyAgICBpZiAoIWRhdGEpCisgICAgICAgIHJldHVybjsKKyAgICBtX2Nv
bnRleHQtPnVuaWZvcm1NYXRyaXg0eDJmdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgdHJhbnNwb3Nl
LCBkYXRhLnZhbHVlKCkpOwogfQogCiB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZv
cm1NYXRyaXgzeDRmdihXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEdDR0xib29sZWFu
IHRyYW5zcG9zZSwgRmxvYXQzMkxpc3QmJiB2LCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50
IHNyY0xlbmd0aCkKIHsKLSAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxp
ZGF0ZVVuaWZvcm1NYXRyaXhQYXJhbWV0ZXJzKCJ1bmlmb3JtTWF0cml4M3g0ZnYiLCBsb2NhdGlv
biwgdHJhbnNwb3NlLCB2LCAxMiwgc3JjT2Zmc2V0LCBzcmNMZW5ndGgpKQorICAgIGlmIChpc0Nv
bnRleHRMb3N0T3JQZW5kaW5nKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBtX2NvbnRleHQtPnVu
aWZvcm1NYXRyaXgzeDRmdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgdHJhbnNwb3NlLCB2LmRhdGEo
KSwgc3JjT2Zmc2V0LCAoc3JjTGVuZ3RoID8gc3JjTGVuZ3RoIDogdi5sZW5ndGgoKSAtIHNyY09m
ZnNldCkgLyAxMik7CisgICAgYXV0byBkYXRhID0gdmFsaWRhdGVVbmlmb3JtTWF0cml4UGFyYW1l
dGVycygidW5pZm9ybU1hdHJpeDN4NGZ2IiwgbG9jYXRpb24sIHRyYW5zcG9zZSwgdiwgMTIsIHNy
Y09mZnNldCwgc3JjTGVuZ3RoKTsKKyAgICBpZiAoIWRhdGEpCisgICAgICAgIHJldHVybjsKKyAg
ICBtX2NvbnRleHQtPnVuaWZvcm1NYXRyaXgzeDRmdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgdHJh
bnNwb3NlLCBkYXRhLnZhbHVlKCkpOwogfQogCiB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6
OnVuaWZvcm1NYXRyaXg0eDNmdihXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEdDR0xi
b29sZWFuIHRyYW5zcG9zZSwgRmxvYXQzMkxpc3QmJiB2LCBHQ0dMdWludCBzcmNPZmZzZXQsIEdD
R0x1aW50IHNyY0xlbmd0aCkKIHsKLSAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8
ICF2YWxpZGF0ZVVuaWZvcm1NYXRyaXhQYXJhbWV0ZXJzKCJ1bmlmb3JtTWF0cml4NHgzZnYiLCBs
b2NhdGlvbiwgdHJhbnNwb3NlLCB2LCAxMiwgc3JjT2Zmc2V0LCBzcmNMZW5ndGgpKQorICAgIGlm
IChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBtX2NvbnRl
eHQtPnVuaWZvcm1NYXRyaXg0eDNmdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgdHJhbnNwb3NlLCB2
LmRhdGEoKSwgc3JjT2Zmc2V0LCAoc3JjTGVuZ3RoID8gc3JjTGVuZ3RoIDogdi5sZW5ndGgoKSAt
IHNyY09mZnNldCkgLyAxMik7CisgICAgYXV0byBkYXRhID0gdmFsaWRhdGVVbmlmb3JtTWF0cml4
UGFyYW1ldGVycygidW5pZm9ybU1hdHJpeDR4M2Z2IiwgbG9jYXRpb24sIHRyYW5zcG9zZSwgdiwg
MTIsIHNyY09mZnNldCwgc3JjTGVuZ3RoKTsKKyAgICBpZiAoIWRhdGEpCisgICAgICAgIHJldHVy
bjsKKyAgICBtX2NvbnRleHQtPnVuaWZvcm1NYXRyaXg0eDNmdihsb2NhdGlvbi0+bG9jYXRpb24o
KSwgdHJhbnNwb3NlLCBkYXRhLnZhbHVlKCkpOwogfQogCiB2b2lkIFdlYkdMMlJlbmRlcmluZ0Nv
bnRleHQ6OnZlcnRleEF0dHJpYkk0aShHQ0dMdWludCBpbmRleCwgR0NHTGludCB4LCBHQ0dMaW50
IHksIEdDR0xpbnQgeiwgR0NHTGludCB3KQpAQCAtMTY2NCw3ICsxNjk0LDcgQEAgdm9pZCBXZWJH
TDJSZW5kZXJpbmdDb250ZXh0Ojp2ZXJ0ZXhBdHRyaWJJNGl2KEdDR0x1aW50IGluZGV4LCBJbnQz
Mkxpc3QmJiBsaXN0KQogICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRH
TDo6SU5WQUxJRF9WQUxVRSwgInZlcnRleEF0dHJpYkk0aXYiLCAiaW5kZXggb3V0IG9mIHJhbmdl
Iik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgbV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWJJ
NGl2KGluZGV4LCBkYXRhKTsKKyAgICBtX2NvbnRleHQtPnZlcnRleEF0dHJpYkk0aXYoaW5kZXgs
IG1ha2VHQ0dMU3Bhbjw0PihkYXRhKSk7CiAgICAgbV92ZXJ0ZXhBdHRyaWJWYWx1ZVtpbmRleF0u
dHlwZSA9IEdyYXBoaWNzQ29udGV4dEdMOjpJTlQ7CiAgICAgbWVtY3B5KG1fdmVydGV4QXR0cmli
VmFsdWVbaW5kZXhdLmlWYWx1ZSwgZGF0YSwgc2l6ZW9mKG1fdmVydGV4QXR0cmliVmFsdWVbaW5k
ZXhdLmlWYWx1ZSkpOwogfQpAQCAtMTcwMiw3ICsxNzMyLDcgQEAgdm9pZCBXZWJHTDJSZW5kZXJp
bmdDb250ZXh0Ojp2ZXJ0ZXhBdHRyaWJJNHVpdihHQ0dMdWludCBpbmRleCwgVWludDMyTGlzdCYm
IGxpc3QKICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFM
SURfVkFMVUUsICJ2ZXJ0ZXhBdHRyaWJJNHVpdiIsICJpbmRleCBvdXQgb2YgcmFuZ2UiKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBtX2NvbnRleHQtPnZlcnRleEF0dHJpYkk0dWl2KGlu
ZGV4LCBkYXRhKTsKKyAgICBtX2NvbnRleHQtPnZlcnRleEF0dHJpYkk0dWl2KGluZGV4LCBtYWtl
R0NHTFNwYW48ND4oZGF0YSkpOwogICAgIG1fdmVydGV4QXR0cmliVmFsdWVbaW5kZXhdLnR5cGUg
PSBHcmFwaGljc0NvbnRleHRHTDo6VU5TSUdORURfSU5UOwogICAgIG1lbWNweShtX3ZlcnRleEF0
dHJpYlZhbHVlW2luZGV4XS51aVZhbHVlLCBkYXRhLCBzaXplb2YobV92ZXJ0ZXhBdHRyaWJWYWx1
ZVtpbmRleF0udWlWYWx1ZSkpOwogfQpAQCAtMTc2Myw4ICsxNzkzLDggQEAgdm9pZCBXZWJHTDJS
ZW5kZXJpbmdDb250ZXh0OjpkcmF3QnVmZmVycyhjb25zdCBWZWN0b3I8R0NHTGVudW0+JiBidWZm
ZXJzKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIC8vIEJlY2F1c2Ug
dGhlIGJhY2tidWZmZXIgaXMgc2ltdWxhdGVkIG9uIGFsbCBjdXJyZW50IFdlYktpdCBwb3J0cywg
d2UgbmVlZCB0byBjaGFuZ2UgQkFDSyB0byBDT0xPUl9BVFRBQ0hNRU5UMC4KLSAgICAgICAgR0NH
TGVudW0gdmFsdWUgPSAoYnVmc1swXSA9PSBHcmFwaGljc0NvbnRleHRHTDo6QkFDSykgPyBHcmFw
aGljc0NvbnRleHRHTDo6Q09MT1JfQVRUQUNITUVOVDAgOiBHcmFwaGljc0NvbnRleHRHTDo6Tk9O
RTsKLSAgICAgICAgbV9jb250ZXh0LT5kcmF3QnVmZmVycygxLCAmdmFsdWUpOworICAgICAgICBH
Q0dMZW51bSB2YWx1ZVsxXSB7IChidWZzWzBdID09IEdyYXBoaWNzQ29udGV4dEdMOjpCQUNLKSA/
IEdyYXBoaWNzQ29udGV4dEdMOjpDT0xPUl9BVFRBQ0hNRU5UMCA6IEdyYXBoaWNzQ29udGV4dEdM
OjpOT05FIH07CisgICAgICAgIG1fY29udGV4dC0+ZHJhd0J1ZmZlcnModmFsdWUpOwogICAgICAg
ICBzZXRCYWNrRHJhd0J1ZmZlcihidWZzWzBdKTsKICAgICB9IGVsc2UgewogICAgICAgICBpZiAo
biA+IGdldE1heERyYXdCdWZmZXJzKCkpIHsKQEAgLTE3ODMsMjggKzE4MTMsMzYgQEAgdm9pZCBX
ZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpkcmF3QnVmZmVycyhjb25zdCBWZWN0b3I8R0NHTGVudW0+
JiBidWZmZXJzKQogCiB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmNsZWFyQnVmZmVyaXYo
R0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50IGRyYXdidWZmZXIsIEludDMyTGlzdCYmIHZhbHVlcywg
R0NHTHVpbnQgc3JjT2Zmc2V0KQogewotICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkg
fHwgIXZhbGlkYXRlQ2xlYXJCdWZmZXIoImNsZWFyQnVmZmVyaXYiLCBidWZmZXIsIHZhbHVlcy5s
ZW5ndGgoKSwgc3JjT2Zmc2V0KSkKKyAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpKQor
ICAgICAgICByZXR1cm47CisgICAgYXV0byBkYXRhID0gdmFsaWRhdGVDbGVhckJ1ZmZlcigiY2xl
YXJCdWZmZXJpdiIsIGJ1ZmZlciwgdmFsdWVzLCBzcmNPZmZzZXQpOworICAgIGlmICghZGF0YSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9jb250ZXh0LT5jbGVhckJ1ZmZlcml2KGJ1ZmZlciwg
ZHJhd2J1ZmZlciwgdmFsdWVzLmRhdGEoKSwgc3JjT2Zmc2V0KTsKKyAgICBtX2NvbnRleHQtPmNs
ZWFyQnVmZmVyaXYoYnVmZmVyLCBkcmF3YnVmZmVyLCBkYXRhLnZhbHVlKCkpOwogICAgIHVwZGF0
ZUJ1ZmZlcnNUb0F1dG9DbGVhcihDbGVhckJ1ZmZlckNhbGxlcjo6Q2xlYXJCdWZmZXJpdiwgYnVm
ZmVyLCBkcmF3YnVmZmVyKTsKIH0KIAogdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpjbGVh
ckJ1ZmZlcnVpdihHQ0dMZW51bSBidWZmZXIsIEdDR0xpbnQgZHJhd2J1ZmZlciwgVWludDMyTGlz
dCYmIHZhbHVlcywgR0NHTHVpbnQgc3JjT2Zmc2V0KQogewotICAgIGlmIChpc0NvbnRleHRMb3N0
T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlQ2xlYXJCdWZmZXIoImNsZWFyQnVmZmVydWl2IiwgYnVm
ZmVyLCB2YWx1ZXMubGVuZ3RoKCksIHNyY09mZnNldCkpCisgICAgaWYgKGlzQ29udGV4dExvc3RP
clBlbmRpbmcoKSkKICAgICAgICAgcmV0dXJuOwotCi0gICAgbV9jb250ZXh0LT5jbGVhckJ1ZmZl
cnVpdihidWZmZXIsIGRyYXdidWZmZXIsIHZhbHVlcy5kYXRhKCksIHNyY09mZnNldCk7CisgICAg
YXV0byBkYXRhID0gdmFsaWRhdGVDbGVhckJ1ZmZlcigiY2xlYXJCdWZmZXJ1aXYiLCBidWZmZXIs
IHZhbHVlcywgc3JjT2Zmc2V0KTsKKyAgICBpZiAoIWRhdGEpCisgICAgICAgIHJldHVybjsKKyAg
ICBtX2NvbnRleHQtPmNsZWFyQnVmZmVydWl2KGJ1ZmZlciwgZHJhd2J1ZmZlciwgZGF0YS52YWx1
ZSgpKTsKICAgICB1cGRhdGVCdWZmZXJzVG9BdXRvQ2xlYXIoQ2xlYXJCdWZmZXJDYWxsZXI6OkNs
ZWFyQnVmZmVydWl2LCBidWZmZXIsIGRyYXdidWZmZXIpOwogfQogCiB2b2lkIFdlYkdMMlJlbmRl
cmluZ0NvbnRleHQ6OmNsZWFyQnVmZmVyZnYoR0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50IGRyYXdi
dWZmZXIsIEZsb2F0MzJMaXN0JiYgdmFsdWVzLCBHQ0dMdWludCBzcmNPZmZzZXQpCiB7Ci0gICAg
aWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVDbGVhckJ1ZmZlcigiY2xl
YXJCdWZmZXJmdiIsIGJ1ZmZlciwgdmFsdWVzLmxlbmd0aCgpLCBzcmNPZmZzZXQpKQorICAgIGlm
IChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCisgICAgICAgIHJldHVybjsKKyAgICBhdXRvIGRh
dGEgPSB2YWxpZGF0ZUNsZWFyQnVmZmVyKCJjbGVhckJ1ZmZlcmZ2IiwgYnVmZmVyLCB2YWx1ZXMs
IHNyY09mZnNldCk7CisgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2Nv
bnRleHQtPmNsZWFyQnVmZmVyZnYoYnVmZmVyLCBkcmF3YnVmZmVyLCB2YWx1ZXMuZGF0YSgpLCBz
cmNPZmZzZXQpOworICAgIG1fY29udGV4dC0+Y2xlYXJCdWZmZXJmdihidWZmZXIsIGRyYXdidWZm
ZXIsIGRhdGEudmFsdWUoKSk7CiAgICAgLy8gY2xlYXJCdWZmZXJpdiBhbmQgY2xlYXJCdWZmZXJ1
aXYgd2lsbCBjdXJyZW50bHkgZ2VuZXJhdGUgYW4gZXJyb3IKICAgICAvLyBpZiB0aGV5J3JlIGNh
bGxlZCBhZ2FpbnN0IHRoZSBkZWZhdWx0IGJhY2sgYnVmZmVyLiBJZiBzdXBwb3J0IGZvcgogICAg
IC8vIGV4dGVuZGVkIGNhbnZhcyBjb2xvciBzcGFjZXMgaXMgYWRkZWQsIHRoaXMgY2FsbCBtaWdo
dCBuZWVkIHRvIGJlCkBAIC0zMzcyLDExMCArMzQxMCwxNDQgQEAgYm9vbCBXZWJHTDJSZW5kZXJp
bmdDb250ZXh0Ojp2YWxpZGF0ZUNhcGFiaWxpdHkoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBH
Q0dMZW4KICAgICB9CiB9CiAKLWJvb2wgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dmFsaWRhdGVD
bGVhckJ1ZmZlcihjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIEdDR0xlbnVtIGJ1ZmZlciwgc2l6
ZV90IHNpemUsIEdDR0x1aW50IHNyY09mZnNldCkKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVu
YW1lIFR5cGVkQXJyYXlUeXBlPgorT3B0aW9uYWw8R0NHTFNwYW48Y29uc3QgVD4+IFdlYkdMMlJl
bmRlcmluZ0NvbnRleHQ6OnZhbGlkYXRlQ2xlYXJCdWZmZXIoY29uc3QgY2hhciogZnVuY3Rpb25O
YW1lLCBHQ0dMZW51bSBidWZmZXIsIFR5cGVkTGlzdDxUeXBlZEFycmF5VHlwZSwgVD4mIHZhbHVl
cywgR0NHTHVpbnQgc3JjT2Zmc2V0KQogewotICAgIENoZWNrZWQ8R0NHTHNpemVpLCBSZWNvcmRP
dmVyZmxvdz4gY2hlY2tlZFNpemUoc2l6ZSk7CisgICAgQ2hlY2tlZDxHQ0dMc2l6ZWksIFJlY29y
ZE92ZXJmbG93PiBjaGVja2VkU2l6ZSh2YWx1ZXMubGVuZ3RoKCkpOwogICAgIGNoZWNrZWRTaXpl
IC09IHNyY09mZnNldDsKICAgICBpZiAoY2hlY2tlZFNpemUuaGFzT3ZlcmZsb3dlZCgpKSB7CiAg
ICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX1ZBTFVF
LCBmdW5jdGlvbk5hbWUsICJpbnZhbGlkIGFycmF5IHNpemUgLyBzcmNPZmZzZXQiKTsKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4geyB9OwogICAgIH0KICAgICBzd2l0Y2gg
KGJ1ZmZlcikgewogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTE9SOgogICAgICAgICBp
ZiAoY2hlY2tlZFNpemUudW5zYWZlR2V0KCkgPCA0KSB7CiAgICAgICAgICAgICBzeW50aGVzaXpl
R0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9WQUxVRSwgZnVuY3Rpb25OYW1lLCAi
aW52YWxpZCBhcnJheSBzaXplIC8gc3JjT2Zmc2V0Iik7Ci0gICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgICAgICByZXR1cm4geyB9OwogICAgICAgICB9Ci0gICAgICAgIGJyZWFrOwor
ICAgICAgICByZXR1cm4gbWFrZUdDR0xTcGFuKHZhbHVlcy5kYXRhKCkgKyBzcmNPZmZzZXQsIDQp
OwogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkRFUFRIOgogICAgIGNhc2UgR3JhcGhpY3ND
b250ZXh0R0w6OlNURU5DSUw6CiAgICAgICAgIGlmIChjaGVja2VkU2l6ZS51bnNhZmVHZXQoKSA8
IDEpIHsKICAgICAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJ
TlZBTElEX1ZBTFVFLCBmdW5jdGlvbk5hbWUsICJpbnZhbGlkIGFycmF5IHNpemUgLyBzcmNPZmZz
ZXQiKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIHJldHVybiB7IH07
CiAgICAgICAgIH0KLSAgICAgICAgYnJlYWs7CisgICAgICAgIHJldHVybiBtYWtlR0NHTFNwYW4o
dmFsdWVzLmRhdGEoKSArIHNyY09mZnNldCwgMSk7CisKICAgICBkZWZhdWx0OgogICAgICAgICBz
eW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9FTlVNLCBmdW5jdGlv
bk5hbWUsICJpbnZhbGlkIGJ1ZmZlciIpOwotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
IHJldHVybiB7IH07CiAgICAgfQotICAgIHJldHVybiB0cnVlOwogfQogCiB2b2lkIFdlYkdMMlJl
bmRlcmluZ0NvbnRleHQ6OnVuaWZvcm0xZnYoV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9u
LCBGbG9hdDMyTGlzdCBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0
aCkKIHsKLSAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVVuaWZv
cm1QYXJhbWV0ZXJzKCJ1bmlmb3JtMWZ2IiwgbG9jYXRpb24sIGRhdGEsIDEsIHNyY09mZnNldCwg
c3JjTGVuZ3RoKSkKKyAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpKQogICAgICAgICBy
ZXR1cm47Ci0gICAgbV9jb250ZXh0LT51bmlmb3JtMWZ2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCBk
YXRhLmRhdGEoKSwgc3JjT2Zmc2V0LCBzcmNMZW5ndGggPyBzcmNMZW5ndGggOiAoZGF0YS5sZW5n
dGgoKSAtIHNyY09mZnNldCkpOworICAgIGF1dG8gcmVzdWx0ID0gdmFsaWRhdGVVbmlmb3JtUGFy
YW1ldGVycygidW5pZm9ybTFmdiIsIGxvY2F0aW9uLCBkYXRhLCAxLCBzcmNPZmZzZXQsIHNyY0xl
bmd0aCk7CisgICAgaWYgKCFyZXN1bHQpCisgICAgICAgIHJldHVybjsKKyAgICBtX2NvbnRleHQt
PnVuaWZvcm0xZnYobG9jYXRpb24tPmxvY2F0aW9uKCksIHJlc3VsdC52YWx1ZSgpKTsKIH0KIAog
dm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtMmZ2KFdlYkdMVW5pZm9ybUxvY2F0
aW9uKiBsb2NhdGlvbiwgRmxvYXQzMkxpc3QgZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dM
dWludCBzcmNMZW5ndGgpCiB7Ci0gICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAh
dmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycygidW5pZm9ybTJmdiIsIGxvY2F0aW9uLCBkYXRhLCAy
LCBzcmNPZmZzZXQsIHNyY0xlbmd0aCkpCisgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmco
KSkKICAgICAgICAgcmV0dXJuOwotICAgIG1fY29udGV4dC0+dW5pZm9ybTJmdihsb2NhdGlvbi0+
bG9jYXRpb24oKSwgZGF0YS5kYXRhKCksIHNyY09mZnNldCwgKHNyY0xlbmd0aCA/IHNyY0xlbmd0
aCA6IGRhdGEubGVuZ3RoKCkgLSBzcmNPZmZzZXQpIC8gMik7CisgICAgYXV0byByZXN1bHQgPSB2
YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKCJ1bmlmb3JtMmZ2IiwgbG9jYXRpb24sIGRhdGEsIDIs
IHNyY09mZnNldCwgc3JjTGVuZ3RoKTsKKyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgcmV0dXJu
OworICAgIG1fY29udGV4dC0+dW5pZm9ybTJmdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgcmVzdWx0
LnZhbHVlKCkpOwogfQogCiB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm0zZnYo
V2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBGbG9hdDMyTGlzdCBkYXRhLCBHQ0dMdWlu
dCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKIHsKLSAgICBpZiAoaXNDb250ZXh0TG9z
dE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKCJ1bmlmb3JtM2Z2Iiwg
bG9jYXRpb24sIGRhdGEsIDMsIHNyY09mZnNldCwgc3JjTGVuZ3RoKSkKKyAgICBpZiAoaXNDb250
ZXh0TG9zdE9yUGVuZGluZygpKQogICAgICAgICByZXR1cm47Ci0gICAgbV9jb250ZXh0LT51bmlm
b3JtM2Z2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCBkYXRhLmRhdGEoKSwgc3JjT2Zmc2V0LCAoc3Jj
TGVuZ3RoID8gc3JjTGVuZ3RoIDogZGF0YS5sZW5ndGgoKSAtIHNyY09mZnNldCkgLyAzKTsKKyAg
ICBhdXRvIHJlc3VsdCA9IHZhbGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMoInVuaWZvcm0zZnYiLCBs
b2NhdGlvbiwgZGF0YSwgMywgc3JjT2Zmc2V0LCBzcmNMZW5ndGgpOworICAgIGlmICghcmVzdWx0
KQorICAgICAgICByZXR1cm47CisgICAgbV9jb250ZXh0LT51bmlmb3JtM2Z2KGxvY2F0aW9uLT5s
b2NhdGlvbigpLCByZXN1bHQudmFsdWUoKSk7CiB9CiAKIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29u
dGV4dDo6dW5pZm9ybTRmdihXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEZsb2F0MzJM
aXN0IGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQogewotICAg
IGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlVW5pZm9ybVBhcmFtZXRl
cnMoInVuaWZvcm00ZnYiLCBsb2NhdGlvbiwgZGF0YSwgNCwgc3JjT2Zmc2V0LCBzcmNMZW5ndGgp
KQorICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCisgICAgICAgIHJldHVybjsKKyAg
ICBhdXRvIHJlc3VsdCA9IHZhbGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMoInVuaWZvcm00ZnYiLCBs
b2NhdGlvbiwgZGF0YSwgNCwgc3JjT2Zmc2V0LCBzcmNMZW5ndGgpOworICAgIGlmICghcmVzdWx0
KQogICAgICAgICByZXR1cm47Ci0gICAgbV9jb250ZXh0LT51bmlmb3JtNGZ2KGxvY2F0aW9uLT5s
b2NhdGlvbigpLCBkYXRhLmRhdGEoKSwgc3JjT2Zmc2V0LCAoc3JjTGVuZ3RoID8gc3JjTGVuZ3Ro
IDogZGF0YS5sZW5ndGgoKSAtIHNyY09mZnNldCkgLyA0KTsKKyAgICBtX2NvbnRleHQtPnVuaWZv
cm00ZnYobG9jYXRpb24tPmxvY2F0aW9uKCksIHJlc3VsdC52YWx1ZSgpKTsKIH0KIAogdm9pZCBX
ZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtMWl2KFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBs
b2NhdGlvbiwgSW50MzJMaXN0IGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3Jj
TGVuZ3RoKQogewotICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRl
VW5pZm9ybVBhcmFtZXRlcnMoInVuaWZvcm0xaXYiLCBsb2NhdGlvbiwgZGF0YSwgMSwgc3JjT2Zm
c2V0LCBzcmNMZW5ndGgpKQorICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCisgICAg
ICAgIHJldHVybjsKKyAgICBhdXRvIHJlc3VsdCA9IHZhbGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMo
InVuaWZvcm0xaXYiLCBsb2NhdGlvbiwgZGF0YSwgMSwgc3JjT2Zmc2V0LCBzcmNMZW5ndGgpOwor
ICAgIGlmICghcmVzdWx0KQogICAgICAgICByZXR1cm47Ci0gICAgbV9jb250ZXh0LT51bmlmb3Jt
MWl2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCBkYXRhLmRhdGEoKSwgc3JjT2Zmc2V0LCBzcmNMZW5n
dGggPyBzcmNMZW5ndGggOiAoZGF0YS5sZW5ndGgoKSAtIHNyY09mZnNldCkpOworICAgIG1fY29u
dGV4dC0+dW5pZm9ybTFpdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgcmVzdWx0LnZhbHVlKCkpOwog
fQogCiB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm0yaXYoV2ViR0xVbmlmb3Jt
TG9jYXRpb24qIGxvY2F0aW9uLCBJbnQzMkxpc3QgZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBH
Q0dMdWludCBzcmNMZW5ndGgpCiB7Ci0gICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8
fCAhdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycygidW5pZm9ybTJpdiIsIGxvY2F0aW9uLCBkYXRh
LCAyLCBzcmNPZmZzZXQsIHNyY0xlbmd0aCkpCisgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRp
bmcoKSkKKyAgICAgICAgcmV0dXJuOworICAgIGF1dG8gcmVzdWx0ID0gdmFsaWRhdGVVbmlmb3Jt
UGFyYW1ldGVycygidW5pZm9ybTJpdiIsIGxvY2F0aW9uLCBkYXRhLCAyLCBzcmNPZmZzZXQsIHNy
Y0xlbmd0aCk7CisgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgIHJldHVybjsKLSAgICBtX2NvbnRl
eHQtPnVuaWZvcm0yaXYobG9jYXRpb24tPmxvY2F0aW9uKCksIGRhdGEuZGF0YSgpLCBzcmNPZmZz
ZXQsIChzcmNMZW5ndGggPyBzcmNMZW5ndGggOiBkYXRhLmxlbmd0aCgpIC0gc3JjT2Zmc2V0KSAv
IDIpOworICAgIG1fY29udGV4dC0+dW5pZm9ybTJpdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgcmVz
dWx0LnZhbHVlKCkpOwogfQogCiB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm0z
aXYoV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBJbnQzMkxpc3QgZGF0YSwgR0NHTHVp
bnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCiB7Ci0gICAgaWYgKGlzQ29udGV4dExv
c3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycygidW5pZm9ybTNpdiIs
IGxvY2F0aW9uLCBkYXRhLCAzLCBzcmNPZmZzZXQsIHNyY0xlbmd0aCkpCisgICAgaWYgKGlzQ29u
dGV4dExvc3RPclBlbmRpbmcoKSkKKyAgICAgICAgcmV0dXJuOworICAgIGF1dG8gcmVzdWx0ID0g
dmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycygidW5pZm9ybTNpdiIsIGxvY2F0aW9uLCBkYXRhLCAz
LCBzcmNPZmZzZXQsIHNyY0xlbmd0aCk7CisgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgIHJldHVy
bjsKLSAgICBtX2NvbnRleHQtPnVuaWZvcm0zaXYobG9jYXRpb24tPmxvY2F0aW9uKCksIGRhdGEu
ZGF0YSgpLCBzcmNPZmZzZXQsIChzcmNMZW5ndGggPyBzcmNMZW5ndGggOiBkYXRhLmxlbmd0aCgp
IC0gc3JjT2Zmc2V0KSAvIDMpOworICAgIG1fY29udGV4dC0+dW5pZm9ybTNpdihsb2NhdGlvbi0+
bG9jYXRpb24oKSwgcmVzdWx0LnZhbHVlKCkpOwogfQogCiB2b2lkIFdlYkdMMlJlbmRlcmluZ0Nv
bnRleHQ6OnVuaWZvcm00aXYoV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBJbnQzMkxp
c3QgZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCiB7Ci0gICAg
aWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVy
cygidW5pZm9ybTRpdiIsIGxvY2F0aW9uLCBkYXRhLCA0LCBzcmNPZmZzZXQsIHNyY0xlbmd0aCkp
CisgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSkKICAgICAgICAgcmV0dXJuOwotICAg
IG1fY29udGV4dC0+dW5pZm9ybTRpdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgZGF0YS5kYXRhKCks
IHNyY09mZnNldCwgKHNyY0xlbmd0aCA/IHNyY0xlbmd0aCA6IGRhdGEubGVuZ3RoKCkgLSBzcmNP
ZmZzZXQpIC8gNCk7CisgICAgYXV0byByZXN1bHQgPSB2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJz
KCJ1bmlmb3JtNGl2IiwgbG9jYXRpb24sIGRhdGEsIDQsIHNyY09mZnNldCwgc3JjTGVuZ3RoKTsK
KyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgcmV0dXJuOworICAgIG1fY29udGV4dC0+dW5pZm9y
bTRpdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgcmVzdWx0LnZhbHVlKCkpOwogfQogCiB2b2lkIFdl
YkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm1NYXRyaXgyZnYoV2ViR0xVbmlmb3JtTG9jYXRp
b24qIGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEZsb2F0MzJMaXN0IGRhdGEsIEdD
R0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQogewotICAgIGlmIChpc0NvbnRl
eHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlVW5pZm9ybU1hdHJpeFBhcmFtZXRlcnMoInVu
aWZvcm1NYXRyaXgyZnYiLCBsb2NhdGlvbiwgdHJhbnNwb3NlLCBkYXRhLCAyKjIsIHNyY09mZnNl
dCwgc3JjTGVuZ3RoKSkKKyAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpKQogICAgICAg
ICByZXR1cm47Ci0gICAgbV9jb250ZXh0LT51bmlmb3JtTWF0cml4MmZ2KGxvY2F0aW9uLT5sb2Nh
dGlvbigpLCB0cmFuc3Bvc2UsIGRhdGEuZGF0YSgpLCBzcmNPZmZzZXQsIChzcmNMZW5ndGggPyBz
cmNMZW5ndGggOiBkYXRhLmxlbmd0aCgpIC0gc3JjT2Zmc2V0KSAvICgyKjIpKTsKKyAgICBhdXRv
IHJlc3VsdCA9IHZhbGlkYXRlVW5pZm9ybU1hdHJpeFBhcmFtZXRlcnMoInVuaWZvcm1NYXRyaXgy
ZnYiLCBsb2NhdGlvbiwgdHJhbnNwb3NlLCBkYXRhLCAyKjIsIHNyY09mZnNldCwgc3JjTGVuZ3Ro
KTsKKyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgcmV0dXJuOworICAgIG1fY29udGV4dC0+dW5p
Zm9ybU1hdHJpeDJmdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgdHJhbnNwb3NlLCByZXN1bHQudmFs
dWUoKSk7CiB9CiAKIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybU1hdHJpeDNm
dihXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwg
RmxvYXQzMkxpc3QgZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgp
CiB7Ci0gICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVVbmlmb3Jt
TWF0cml4UGFyYW1ldGVycygidW5pZm9ybU1hdHJpeDNmdiIsIGxvY2F0aW9uLCB0cmFuc3Bvc2Us
IGRhdGEsIDMqMywgc3JjT2Zmc2V0LCBzcmNMZW5ndGgpKQorICAgIGlmIChpc0NvbnRleHRMb3N0
T3JQZW5kaW5nKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBtX2NvbnRleHQtPnVuaWZvcm1NYXRy
aXgzZnYobG9jYXRpb24tPmxvY2F0aW9uKCksIHRyYW5zcG9zZSwgZGF0YS5kYXRhKCksIHNyY09m
ZnNldCwgKHNyY0xlbmd0aCA/IHNyY0xlbmd0aCA6IGRhdGEubGVuZ3RoKCkgLSBzcmNPZmZzZXQp
IC8gKDMqMykpOworICAgIGF1dG8gcmVzdWx0ID0gdmFsaWRhdGVVbmlmb3JtTWF0cml4UGFyYW1l
dGVycygidW5pZm9ybU1hdHJpeDNmdiIsIGxvY2F0aW9uLCB0cmFuc3Bvc2UsIGRhdGEsIDMqMywg
c3JjT2Zmc2V0LCBzcmNMZW5ndGgpOworICAgIGlmICghcmVzdWx0KQorICAgICAgICByZXR1cm47
CisgICAgbV9jb250ZXh0LT51bmlmb3JtTWF0cml4M2Z2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCB0
cmFuc3Bvc2UsIHJlc3VsdC52YWx1ZSgpKTsKIH0KIAogdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250
ZXh0Ojp1bmlmb3JtTWF0cml4NGZ2KFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgR0NH
TGJvb2xlYW4gdHJhbnNwb3NlLCBGbG9hdDMyTGlzdCBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQs
IEdDR0x1aW50IHNyY0xlbmd0aCkKIHsKLSAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygp
IHx8ICF2YWxpZGF0ZVVuaWZvcm1NYXRyaXhQYXJhbWV0ZXJzKCJ1bmlmb3JtTWF0cml4NGZ2Iiwg
bG9jYXRpb24sIHRyYW5zcG9zZSwgZGF0YSwgNCo0LCBzcmNPZmZzZXQsIHNyY0xlbmd0aCkpCisg
ICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSkKKyAgICAgICAgcmV0dXJuOworICAgIGF1
dG8gcmVzdWx0ID0gdmFsaWRhdGVVbmlmb3JtTWF0cml4UGFyYW1ldGVycygidW5pZm9ybU1hdHJp
eDRmdiIsIGxvY2F0aW9uLCB0cmFuc3Bvc2UsIGRhdGEsIDQqNCwgc3JjT2Zmc2V0LCBzcmNMZW5n
dGgpOworICAgIGlmICghcmVzdWx0KQogICAgICAgICByZXR1cm47Ci0gICAgbV9jb250ZXh0LT51
bmlmb3JtTWF0cml4NGZ2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCB0cmFuc3Bvc2UsIGRhdGEuZGF0
YSgpLCBzcmNPZmZzZXQsIChzcmNMZW5ndGggPyBzcmNMZW5ndGggOiBkYXRhLmxlbmd0aCgpIC0g
c3JjT2Zmc2V0KSAvICg0KjQpKTsKKyAgICBtX2NvbnRleHQtPnVuaWZvcm1NYXRyaXg0ZnYobG9j
YXRpb24tPmxvY2F0aW9uKCksIHRyYW5zcG9zZSwgcmVzdWx0LnZhbHVlKCkpOwogfQogCiB2b2lk
IFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnJlYWRQaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHks
IEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dM
ZW51bSB0eXBlLCBBcnJheUJ1ZmZlclZpZXcmIHBpeGVscykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuaAppbmRleCBiOGIwMzZlNDQ3
NmE0ZjE1ZDRlNTA2NzU4YzU3NTkzNWUwYTA2MjRmLi41ZjQ3ZTYxZjBhNDQ0NGEyODhjMWI0NjBm
YjRlMGY3MzY2NzQ2Njc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTDJSZW5kZXJpbmdDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0wyUmVuZGVyaW5nQ29udGV4dC5oCkBAIC0yOTIsNyArMjkyLDggQEAgcHJpdmF0ZToKICAg
ICBib29sIHZhbGlkYXRlSW5kZXhBcnJheUNvbnNlcnZhdGl2ZShHQ0dMZW51bSB0eXBlLCB1bnNp
Z25lZCYgbnVtRWxlbWVudHNSZXF1aXJlZCkgZmluYWw7CiAgICAgYm9vbCB2YWxpZGF0ZUJsZW5k
RXF1YXRpb24oY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBHQ0dMZW51bSBtb2RlKSBmaW5hbDsK
ICAgICBib29sIHZhbGlkYXRlQ2FwYWJpbGl0eShjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIEdD
R0xlbnVtIGNhcCkgZmluYWw7Ci0gICAgYm9vbCB2YWxpZGF0ZUNsZWFyQnVmZmVyKGNvbnN0IGNo
YXIqIGZ1bmN0aW9uTmFtZSwgR0NHTGVudW0gYnVmZmVyLCBzaXplX3QsIEdDR0x1aW50IHNyY09m
ZnNldCk7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVHlwZWRBcnJheVR5cGU+
CisgICAgT3B0aW9uYWw8R0NHTFNwYW48Y29uc3QgVD4+IHZhbGlkYXRlQ2xlYXJCdWZmZXIoY29u
c3QgY2hhciogZnVuY3Rpb25OYW1lLCBHQ0dMZW51bSBidWZmZXIsIFR5cGVkTGlzdDxUeXBlZEFy
cmF5VHlwZSwgVD4mIHZhbHVlcywgR0NHTHVpbnQgc3JjT2Zmc2V0KTsKICAgICBib29sIHZhbGlk
YXRlRnJhbWVidWZmZXJUYXJnZXQoR0NHTGVudW0gdGFyZ2V0KSBmaW5hbDsKICAgICBXZWJHTEZy
YW1lYnVmZmVyKiBnZXRGcmFtZWJ1ZmZlckJpbmRpbmcoR0NHTGVudW0gdGFyZ2V0KSBmaW5hbDsK
ICAgICBXZWJHTEZyYW1lYnVmZmVyKiBnZXRSZWFkRnJhbWVidWZmZXJCaW5kaW5nKCkgZmluYWw7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTERyYXdCdWZmZXJz
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRHJhd0J1ZmZlcnMuY3BwCmlu
ZGV4IDQ5NDE1NmUxZTY1YjYwMjkxOTBkYjdjMWMwMjZhZGY4MDNkZGE4ZDIuLmU1Y2ViNGJkZGNj
NGMwNTFkYjhiOWFhOWNlMDIwODFiZjIyMzA1MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMRHJhd0J1ZmZlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMRHJhd0J1ZmZlcnMuY3BwCkBAIC03NCw4ICs3NCw4IEBAIHZvaWQgV2Vi
R0xEcmF3QnVmZmVyczo6ZHJhd0J1ZmZlcnNXRUJHTChjb25zdCBWZWN0b3I8R0NHTGVudW0+JiBi
dWZmZXJzKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIC8vIEJlY2F1
c2UgdGhlIGJhY2tidWZmZXIgaXMgc2ltdWxhdGVkIG9uIGFsbCBjdXJyZW50IFdlYktpdCBwb3J0
cywgd2UgbmVlZCB0byBjaGFuZ2UgQkFDSyB0byBDT0xPUl9BVFRBQ0hNRU5UMC4KLSAgICAgICAg
R0NHTGVudW0gdmFsdWUgPSAoYnVmc1swXSA9PSBHcmFwaGljc0NvbnRleHRHTDo6QkFDSykgPyBH
cmFwaGljc0NvbnRleHRHTDo6Q09MT1JfQVRUQUNITUVOVDAgOiBHcmFwaGljc0NvbnRleHRHTDo6
Tk9ORTsKLSAgICAgICAgbV9jb250ZXh0LT5ncmFwaGljc0NvbnRleHRHTCgpLT5nZXRFeHRlbnNp
b25zKCkuZHJhd0J1ZmZlcnNFWFQoMSwgJnZhbHVlKTsKKyAgICAgICAgR0NHTGVudW0gdmFsdWVb
MV0geyAoYnVmc1swXSA9PSBHcmFwaGljc0NvbnRleHRHTDo6QkFDSykgPyBHcmFwaGljc0NvbnRl
eHRHTDo6Q09MT1JfQVRUQUNITUVOVDAgOiBHcmFwaGljc0NvbnRleHRHTDo6Tk9ORSB9OworICAg
ICAgICBtX2NvbnRleHQtPmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5kcmF3
QnVmZmVyc0VYVCh2YWx1ZSk7CiAgICAgICAgIG1fY29udGV4dC0+c2V0QmFja0RyYXdCdWZmZXIo
YnVmc1swXSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgaWYgKG4gPiBtX2NvbnRleHQtPmdldE1h
eERyYXdCdWZmZXJzKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMRnJhbWVidWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xG
cmFtZWJ1ZmZlci5jcHAKaW5kZXggMzY1OGVlOGVhYWY3ZjBkYmI4ODYzY2VkNTAyNDI1ZjRmYjRl
MjNhNS4uYjE5OGIzNjZiMTFmMTViMWI4MDNiZDA2M2M3NmM0ZjJjZDhkMTE3OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5jcHAKQEAgLTcwMiwx
MyArNzAyLDEwIEBAIHZvaWQgV2ViR0xGcmFtZWJ1ZmZlcjo6ZHJhd0J1ZmZlcnNJZk5lY2Vzc2Fy
eShib29sIGZvcmNlKQogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGlmIChyZXNl
dCkgewotICAgICAgICAgICAgaWYgKGNvbnRleHQoKS0+aXNXZWJHTDIoKSkgewotICAgICAgICAg
ICAgICAgIGNvbnRleHQoKS0+Z3JhcGhpY3NDb250ZXh0R0woKS0+ZHJhd0J1ZmZlcnMoCi0gICAg
ICAgICAgICAgICAgICAgIG1fZmlsdGVyZWREcmF3QnVmZmVycy5zaXplKCksIG1fZmlsdGVyZWRE
cmF3QnVmZmVycy5kYXRhKCkpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAg
ICBjb250ZXh0KCktPmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5kcmF3QnVm
ZmVyc0VYVCgKLSAgICAgICAgICAgICAgICAgICAgbV9maWx0ZXJlZERyYXdCdWZmZXJzLnNpemUo
KSwgbV9maWx0ZXJlZERyYXdCdWZmZXJzLmRhdGEoKSk7Ci0gICAgICAgICAgICB9CisgICAgICAg
ICAgICBpZiAoY29udGV4dCgpLT5pc1dlYkdMMigpKQorICAgICAgICAgICAgICAgIGNvbnRleHQo
KS0+Z3JhcGhpY3NDb250ZXh0R0woKS0+ZHJhd0J1ZmZlcnMobV9maWx0ZXJlZERyYXdCdWZmZXJz
KTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBjb250ZXh0KCktPmdyYXBoaWNz
Q29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5kcmF3QnVmZmVyc0VYVChtX2ZpbHRlcmVkRHJh
d0J1ZmZlcnMpOwogICAgICAgICB9CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAppbmRleCAxODVl
OGM2MmU2ZmJlMzFmMzEzODhjMGM5ZjgwZDgxY2VlMjRhM2IxLi4yNTRjYzk3YjQxNTU1MzQwMzZm
NWJkMmVhZjg3ZjA2OTYxNDc0NWQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcApAQCAtMTYwMyw3ICsxNjAz
LDcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpidWZmZXJEYXRhKEdDR0xlbnVt
IHRhcmdldCwgT3B0aW9uYWw8QnVmZmVyRGF0YVMKICAgICAgICAgfQogCiAgICAgICAgIG1fY29u
dGV4dC0+bW92ZUVycm9yc1RvU3ludGhldGljRXJyb3JMaXN0KCk7Ci0gICAgICAgIG1fY29udGV4
dC0+YnVmZmVyRGF0YSh0YXJnZXQsIGRhdGEtPmJ5dGVMZW5ndGgoKSwgZGF0YS0+ZGF0YSgpLCB1
c2FnZSk7CisgICAgICAgIG1fY29udGV4dC0+YnVmZmVyRGF0YSh0YXJnZXQsIEdDR0xTcGFuPGNv
bnN0IEdDR0x2b2lkPihkYXRhLT5kYXRhKCksIGRhdGEtPmJ5dGVMZW5ndGgoKSksIHVzYWdlKTsK
ICAgICAgICAgaWYgKG1fY29udGV4dC0+bW92ZUVycm9yc1RvU3ludGhldGljRXJyb3JMaXN0KCkp
IHsKICAgICAgICAgICAgIC8vIFRoZSBidWZmZXJEYXRhIGZ1bmN0aW9uIGZhaWxlZC4gVGVsbCB0
aGUgYnVmZmVyIGl0IGRvZXNuJ3QgaGF2ZSB0aGUgZGF0YSBpdCB0aGlua3MgaXQgZG9lcy4KICAg
ICAgICAgICAgIGJ1ZmZlci0+ZGlzYXNzb2NpYXRlQnVmZmVyRGF0YSgpOwpAQCAtMTYzMCw3ICsx
NjMwLDcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpidWZmZXJTdWJEYXRhKEdD
R0xlbnVtIHRhcmdldCwgbG9uZyBsb25nIG9mZnNldCwKICAgICAgICAgfQogCiAgICAgICAgIG1f
Y29udGV4dC0+bW92ZUVycm9yc1RvU3ludGhldGljRXJyb3JMaXN0KCk7Ci0gICAgICAgIG1fY29u
dGV4dC0+YnVmZmVyU3ViRGF0YSh0YXJnZXQsIHN0YXRpY19jYXN0PEdDR0xpbnRwdHI+KG9mZnNl
dCksIGRhdGEtPmJ5dGVMZW5ndGgoKSwgZGF0YS0+ZGF0YSgpKTsKKyAgICAgICAgbV9jb250ZXh0
LT5idWZmZXJTdWJEYXRhKHRhcmdldCwgc3RhdGljX2Nhc3Q8R0NHTGludHB0cj4ob2Zmc2V0KSwg
R0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+KGRhdGEtPmRhdGEoKSwgZGF0YS0+Ynl0ZUxlbmd0aCgp
KSk7CiAgICAgICAgIGlmIChtX2NvbnRleHQtPm1vdmVFcnJvcnNUb1N5bnRoZXRpY0Vycm9yTGlz
dCgpKSB7CiAgICAgICAgICAgICAvLyBUaGUgYnVmZmVyU3ViRGF0YSBmdW5jdGlvbiBmYWlsZWQu
IFRlbGwgdGhlIGJ1ZmZlciBpdCBkb2Vzbid0IGhhdmUgdGhlIGRhdGEgaXQgdGhpbmtzIGl0IGRv
ZXMuCiAgICAgICAgICAgICBidWZmZXItPmRpc2Fzc29jaWF0ZUJ1ZmZlckRhdGEoKTsKQEAgLTE3
NTcsNyArMTc1Nyw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Y29tcHJlc3Nl
ZFRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxlCiAgICAgaWYgKCF2YWxpZGF0
ZVRleHR1cmUyREJpbmRpbmcoImNvbXByZXNzZWRUZXhJbWFnZTJEIiwgdGFyZ2V0KSkKICAgICAg
ICAgcmV0dXJuOwogICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmNvbXByZXNzZWRUZXhJ
bWFnZTJEUm9idXN0QU5HTEUodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBo
ZWlnaHQsCi0gICAgICAgIGJvcmRlciwgZGF0YS5ieXRlTGVuZ3RoKCksIGRhdGEuYnl0ZUxlbmd0
aCgpLCBkYXRhLmJhc2VBZGRyZXNzKCkpOworICAgICAgICBib3JkZXIsIGRhdGEuYnl0ZUxlbmd0
aCgpLCBtYWtlR0NHTFNwYW4oZGF0YS5iYXNlQWRkcmVzcygpLCBkYXRhLmJ5dGVMZW5ndGgoKSkp
OwogI2Vsc2UKICAgICBpZiAoIXZhbGlkYXRlVGV4RnVuY0xldmVsKCJjb21wcmVzc2VkVGV4SW1h
Z2UyRCIsIHRhcmdldCwgbGV2ZWwpKQogICAgICAgICByZXR1cm47CkBAIC0xODAxLDcgKzE4MDEs
NyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmNvbXByZXNzZWRUZXhTdWJJbWFn
ZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludAogI2lmIFVTRShBTkdMRSkKICAgICBpZiAoIXZh
bGlkYXRlVGV4dHVyZTJEQmluZGluZygiY29tcHJlc3NlZFRleFN1YkltYWdlMkQiLCB0YXJnZXQp
KQogICAgICAgICByZXR1cm47Ci0gICAgZ3JhcGhpY3NDb250ZXh0R0woKS0+Z2V0RXh0ZW5zaW9u
cygpLmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEUm9idXN0QU5HTEUodGFyZ2V0LCBsZXZlbCwgeG9m
ZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCBkYXRhLmJ5dGVMZW5ndGgoKSwg
ZGF0YS5ieXRlTGVuZ3RoKCksIGRhdGEuYmFzZUFkZHJlc3MoKSk7CisgICAgZ3JhcGhpY3NDb250
ZXh0R0woKS0+Z2V0RXh0ZW5zaW9ucygpLmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEUm9idXN0QU5H
TEUodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0
LCBkYXRhLmJ5dGVMZW5ndGgoKSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+KGRhdGEuYmFzZUFk
ZHJlc3MoKSwgZGF0YS5ieXRlTGVuZ3RoKCkpKTsKICNlbHNlCiAgICAgaWYgKCF2YWxpZGF0ZVRl
eEZ1bmNMZXZlbCgiY29tcHJlc3NlZFRleFN1YkltYWdlMkQiLCB0YXJnZXQsIGxldmVsKSkKICAg
ICAgICAgcmV0dXJuOwpAQCAtNDcwOSwxMiArNDcwOSwxMiBAQCBFeGNlcHRpb25Pcjx2b2lkPiBX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp0ZXhJbWFnZVNvdXJjZUhlbHBlcihUZXhJbWFnZUZ1
bmN0aQogICAgICAgICAgICAgaWYgKGZ1bmN0aW9uSUQgPT0gVGV4SW1hZ2VGdW5jdGlvbklEOjpU
ZXhJbWFnZTNEKSB7CiAgICAgICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCku
dGV4SW1hZ2UzRFJvYnVzdEFOR0xFKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LAogICAg
ICAgICAgICAgICAgICAgICBhZGp1c3RlZFNvdXJjZUltYWdlUmVjdC53aWR0aCgpLCBhZGp1c3Rl
ZFNvdXJjZUltYWdlUmVjdC5oZWlnaHQoKSwgZGVwdGgsIDAsCi0gICAgICAgICAgICAgICAgICAg
IGZvcm1hdCwgdHlwZSwgYnl0ZUxlbmd0aCwgbmVlZENvbnZlcnNpb24gPyBkYXRhLmRhdGEoKSA6
IHBpeGVscy0+ZGF0YSgpLT5kYXRhKCkpOworICAgICAgICAgICAgICAgICAgICBmb3JtYXQsIHR5
cGUsIG1ha2VHQ0dMU3BhbihuZWVkQ29udmVyc2lvbiA/IGRhdGEuZGF0YSgpIDogcGl4ZWxzLT5k
YXRhKCktPmRhdGEoKSwgYnl0ZUxlbmd0aCkpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAg
ICAgICAgICAgICBBU1NFUlQoZnVuY3Rpb25JRCA9PSBUZXhJbWFnZUZ1bmN0aW9uSUQ6OlRleFN1
YkltYWdlM0QpOwogICAgICAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnRl
eFN1YkltYWdlM0RSb2J1c3RBTkdMRSh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB6
b2Zmc2V0LAogICAgICAgICAgICAgICAgICAgICBhZGp1c3RlZFNvdXJjZUltYWdlUmVjdC53aWR0
aCgpLCBhZGp1c3RlZFNvdXJjZUltYWdlUmVjdC5oZWlnaHQoKSwgZGVwdGgsCi0gICAgICAgICAg
ICAgICAgICAgIGZvcm1hdCwgdHlwZSwgYnl0ZUxlbmd0aCwgbmVlZENvbnZlcnNpb24gPyBkYXRh
LmRhdGEoKSA6IHBpeGVscy0+ZGF0YSgpLT5kYXRhKCkpOworICAgICAgICAgICAgICAgICAgICBm
b3JtYXQsIHR5cGUsIG1ha2VHQ0dMU3BhbihuZWVkQ29udmVyc2lvbiA/IGRhdGEuZGF0YSgpIDog
cGl4ZWxzLT5kYXRhKCktPmRhdGEoKSwgYnl0ZUxlbmd0aCkpOwogICAgICAgICAgICAgfQogI2Vs
c2UKICAgICAgICAgICAgIC8vIFdlYkdMIDIuMCBpcyBvbmx5IHN1cHBvcnRlZCB3aXRoIHRoZSBB
TkdMRSBiYWNrZW5kLgpAQCAtNDg5NCwxMSArNDg5NCwxMSBAQCB2b2lkIFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2U6OnRleEltYWdlQXJyYXlCdWZmZXJWaWV3SGVscGVyKFRleEltYWdlRnVuY3Rp
b25JRAogICAgIH0KICNpZiBVU0UoQU5HTEUpCiAgICAgaWYgKGZ1bmN0aW9uSUQgPT0gVGV4SW1h
Z2VGdW5jdGlvbklEOjpUZXhJbWFnZTNEKSB7Ci0gICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5z
aW9ucygpLnRleEltYWdlM0RSb2J1c3RBTkdMRSh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1h
dCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGJvcmRlciwgZm9ybWF0LCB0eXBlLCBieXRlTGVuZ3Ro
LCBkYXRhKTsKKyAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkudGV4SW1hZ2UzRFJv
YnVzdEFOR0xFKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBk
ZXB0aCwgYm9yZGVyLCBmb3JtYXQsIHR5cGUsIG1ha2VHQ0dMU3BhbihkYXRhLCBieXRlTGVuZ3Ro
KSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgaWYgKGZ1bmN0aW9uSUQgPT0gVGV4SW1h
Z2VGdW5jdGlvbklEOjpUZXhTdWJJbWFnZTNEKSB7Ci0gICAgICAgIG1fY29udGV4dC0+Z2V0RXh0
ZW5zaW9ucygpLnRleFN1YkltYWdlM0RSb2J1c3RBTkdMRSh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0
LCB5b2Zmc2V0LCB6b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgZm9ybWF0LCB0eXBlLCBi
eXRlTGVuZ3RoLCBkYXRhKTsKKyAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkudGV4
U3ViSW1hZ2UzRFJvYnVzdEFOR0xFKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHpv
ZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBmb3JtYXQsIHR5cGUsIG1ha2VHQ0dMU3Bhbihk
YXRhLCBieXRlTGVuZ3RoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAjZW5kaWYgLy8gVVNF
KEFOR0xFKQpAQCAtNDk3NSwxMiArNDk3NSwxMiBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2U6OnRleEltYWdlSW1wbChUZXhJbWFnZUZ1bmN0aW9uSUQgZnVuY3Rpb25JRCwgR0NHTAog
ICAgICAgICBpZiAoZnVuY3Rpb25JRCA9PSBUZXhJbWFnZUZ1bmN0aW9uSUQ6OlRleEltYWdlM0Qp
IHsKICAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnRleEltYWdlM0RSb2J1
c3RBTkdMRSh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwKICAgICAgICAgICAgICAgICBh
ZGp1c3RlZFNvdXJjZUltYWdlUmVjdC53aWR0aCgpLCBhZGp1c3RlZFNvdXJjZUltYWdlUmVjdC5o
ZWlnaHQoKSwgZGVwdGgsIDAsCi0gICAgICAgICAgICAgICAgZm9ybWF0LCB0eXBlLCBieXRlTGVu
Z3RoLCBuZWVkQ29udmVyc2lvbiA/IGRhdGEuZGF0YSgpIDogaW1hZ2VQaXhlbERhdGEpOworICAg
ICAgICAgICAgICAgIGZvcm1hdCwgdHlwZSwgbWFrZUdDR0xTcGFuKG5lZWRDb252ZXJzaW9uID8g
ZGF0YS5kYXRhKCkgOiBpbWFnZVBpeGVsRGF0YSwgYnl0ZUxlbmd0aCkpOwogICAgICAgICB9IGVs
c2UgewogICAgICAgICAgICAgQVNTRVJUKGZ1bmN0aW9uSUQgPT0gVGV4SW1hZ2VGdW5jdGlvbklE
OjpUZXhTdWJJbWFnZTNEKTsKICAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygp
LnRleFN1YkltYWdlM0RSb2J1c3RBTkdMRSh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0
LCB6b2Zmc2V0LAogICAgICAgICAgICAgICAgIGFkanVzdGVkU291cmNlSW1hZ2VSZWN0LndpZHRo
KCksIGFkanVzdGVkU291cmNlSW1hZ2VSZWN0LmhlaWdodCgpLCBkZXB0aCwKLSAgICAgICAgICAg
ICAgICBmb3JtYXQsIHR5cGUsIGJ5dGVMZW5ndGgsIG5lZWRDb252ZXJzaW9uID8gZGF0YS5kYXRh
KCkgOiBpbWFnZVBpeGVsRGF0YSk7CisgICAgICAgICAgICAgICAgZm9ybWF0LCB0eXBlLCBtYWtl
R0NHTFNwYW4obmVlZENvbnZlcnNpb24gPyBkYXRhLmRhdGEoKSA6IGltYWdlUGl4ZWxEYXRhLCBi
eXRlTGVuZ3RoKSk7CiAgICAgICAgIH0KICNlbHNlCiAgICAgICAgIFVOVVNFRF9QQVJBTSh6b2Zm
c2V0KTsKQEAgLTQ5OTMsNyArNDk5Myw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZTo6dGV4SW1hZ2VJbXBsKFRleEltYWdlRnVuY3Rpb25JRCBmdW5jdGlvbklELCBHQ0dMCiB2b2lk
IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnRleEltYWdlMkRCYXNlKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEdDR0xzaXplaSB3aWR0
aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NH
TGVudW0gdHlwZSwgR0NHTHNpemVpIGJ5dGVMZW5ndGgsIGNvbnN0IHZvaWQqIHBpeGVscykKIHsK
ICNpZiBVU0UoQU5HTEUpCi0gICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkudGV4SW1hZ2Uy
RFJvYnVzdEFOR0xFKHRhcmdldCwgbGV2ZWwsIGludGVybmFsRm9ybWF0LCB3aWR0aCwgaGVpZ2h0
LCBib3JkZXIsIGZvcm1hdCwgdHlwZSwgYnl0ZUxlbmd0aCwgcGl4ZWxzKTsKKyAgICBtX2NvbnRl
eHQtPmdldEV4dGVuc2lvbnMoKS50ZXhJbWFnZTJEUm9idXN0QU5HTEUodGFyZ2V0LCBsZXZlbCwg
aW50ZXJuYWxGb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGJvcmRlciwgZm9ybWF0LCB0eXBlLCBtYWtl
R0NHTFNwYW4ocGl4ZWxzLCBieXRlTGVuZ3RoKSk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShi
eXRlTGVuZ3RoKTsKICAgICAvLyBGSVhNRTogRm9yIG5vdyB3ZSBpZ25vcmUgYW55IGVycm9ycyBy
ZXR1cm5lZC4KQEAgLTUwMjMsNyArNTAyMyw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZTo6dGV4U3ViSW1hZ2UyREJhc2UoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsCiAg
ICAgQVNTRVJUKCFpc0NvbnRleHRMb3N0KCkpOwogI2lmIFVTRShBTkdMRSkKICAgICBVTlVTRURf
UEFSQU0oaW50ZXJuYWxGb3JtYXQpOwotICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnRl
eFN1YkltYWdlMkRSb2J1c3RBTkdMRSh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB3
aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIGJ5dGVMZW5ndGgsIHBpeGVscyk7CisgICAgbV9j
b250ZXh0LT5nZXRFeHRlbnNpb25zKCkudGV4U3ViSW1hZ2UyRFJvYnVzdEFOR0xFKHRhcmdldCwg
bGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgbWFr
ZUdDR0xTcGFuKHBpeGVscywgYnl0ZUxlbmd0aCkpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0o
Ynl0ZUxlbmd0aCk7CiAgICAgQVNTRVJUKHZhbGlkYXRlVGV4RnVuY1BhcmFtZXRlcnMoInRleFN1
YkltYWdlMkQiLCBUZXhJbWFnZUZ1bmN0aW9uVHlwZTo6VGV4U3ViSW1hZ2UsIFNvdXJjZUFycmF5
QnVmZmVyVmlldywgdGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxGb3JtYXQsIHdpZHRoLCBoZWlnaHQs
IDEsIDAsIGZvcm1hdCwgdHlwZSkpOwpAQCAtNTgyNiwxMDAgKzU4MjYsMTI1IEBAIHZvaWQgV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybTRpKGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0
aW9uKiBsb2NhdGlvbiwKIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3Jt
MWZ2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgRmxvYXQzMkxpc3QmJiB2
KQogewotICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlVW5pZm9y
bVBhcmFtZXRlcnMoInVuaWZvcm0xZnYiLCBsb2NhdGlvbiwgdiwgMSwgMCwgdi5sZW5ndGgoKSkp
CisgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSkKICAgICAgICAgcmV0dXJuOwotCi0g
ICAgbV9jb250ZXh0LT51bmlmb3JtMWZ2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCB2Lmxlbmd0aCgp
LCB2LmRhdGEoKSk7CisgICAgYXV0byBkYXRhID0gdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycygi
dW5pZm9ybTFmdiIsIGxvY2F0aW9uLCB2LCAxKTsKKyAgICBpZiAoIWRhdGEpCisgICAgICAgIHJl
dHVybjsKKyAgICBtX2NvbnRleHQtPnVuaWZvcm0xZnYobG9jYXRpb24tPmxvY2F0aW9uKCksIGRh
dGEudmFsdWUoKSk7CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9y
bTJmdihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEZsb2F0MzJMaXN0JiYg
dikKIHsKLSAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVVuaWZv
cm1QYXJhbWV0ZXJzKCJ1bmlmb3JtMmZ2IiwgbG9jYXRpb24sIHYsIDIsIDAsIHYubGVuZ3RoKCkp
KQorICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCiAgICAgICAgIHJldHVybjsKLQot
ICAgIG1fY29udGV4dC0+dW5pZm9ybTJmdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgdi5sZW5ndGgo
KSAvIDIsIHYuZGF0YSgpKTsKKyAgICBhdXRvIGRhdGEgPSB2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0
ZXJzKCJ1bmlmb3JtMmZ2IiwgbG9jYXRpb24sIHYsIDIpOworICAgIGlmICghZGF0YSkKKyAgICAg
ICAgcmV0dXJuOworICAgIG1fY29udGV4dC0+dW5pZm9ybTJmdihsb2NhdGlvbi0+bG9jYXRpb24o
KSwgZGF0YS52YWx1ZSgpKTsKIH0KIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1
bmlmb3JtM2Z2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgRmxvYXQzMkxp
c3QmJiB2KQogewotICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRl
VW5pZm9ybVBhcmFtZXRlcnMoInVuaWZvcm0zZnYiLCBsb2NhdGlvbiwgdiwgMywgMCwgdi5sZW5n
dGgoKSkpCisgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSkKICAgICAgICAgcmV0dXJu
OwotCi0gICAgbV9jb250ZXh0LT51bmlmb3JtM2Z2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCB2Lmxl
bmd0aCgpIC8gMywgdi5kYXRhKCkpOworICAgIGF1dG8gZGF0YSA9IHZhbGlkYXRlVW5pZm9ybVBh
cmFtZXRlcnMoInVuaWZvcm0zZnYiLCBsb2NhdGlvbiwgdiwgMyk7CisgICAgaWYgKCFkYXRhKQor
ICAgICAgICByZXR1cm47CisgICAgbV9jb250ZXh0LT51bmlmb3JtM2Z2KGxvY2F0aW9uLT5sb2Nh
dGlvbigpLCBkYXRhLnZhbHVlKCkpOwogfQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U6OnVuaWZvcm00ZnYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBGbG9h
dDMyTGlzdCYmIHYpCiB7Ci0gICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhdmFs
aWRhdGVVbmlmb3JtUGFyYW1ldGVycygidW5pZm9ybTRmdiIsIGxvY2F0aW9uLCB2LCA0LCAwLCB2
Lmxlbmd0aCgpKSkKKyAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpKQogICAgICAgICBy
ZXR1cm47Ci0KLSAgICBtX2NvbnRleHQtPnVuaWZvcm00ZnYobG9jYXRpb24tPmxvY2F0aW9uKCks
IHYubGVuZ3RoKCkgLyA0LCB2LmRhdGEoKSk7CisgICAgYXV0byBkYXRhID0gdmFsaWRhdGVVbmlm
b3JtUGFyYW1ldGVycygidW5pZm9ybTRmdiIsIGxvY2F0aW9uLCB2LCA0KTsKKyAgICBpZiAoIWRh
dGEpCisgICAgICAgIHJldHVybjsKKyAgICBtX2NvbnRleHQtPnVuaWZvcm00ZnYobG9jYXRpb24t
PmxvY2F0aW9uKCksIGRhdGEudmFsdWUoKSk7CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZTo6dW5pZm9ybTFpdihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24s
IEludDMyTGlzdCYmIHYpCiB7Ci0gICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAh
dmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycygidW5pZm9ybTFpdiIsIGxvY2F0aW9uLCB2LCAxLCAw
LCB2Lmxlbmd0aCgpKSkKKyAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpKQorICAgICAg
ICByZXR1cm47CisgICAgYXV0byByZXN1bHQgPSB2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKCJ1
bmlmb3JtMWl2IiwgbG9jYXRpb24sIHYsIDEpOworICAgIGlmICghcmVzdWx0KQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBhdXRvIGRhdGEgPSB2LmRhdGEoKTsKLSAgICBhdXRvIGxlbmd0aCA9IHYu
bGVuZ3RoKCk7CisgICAgYXV0byBkYXRhID0gcmVzdWx0LnZhbHVlKCk7CiAKICAgICBpZiAobG9j
YXRpb24tPnR5cGUoKSA9PSBHcmFwaGljc0NvbnRleHRHTDo6U0FNUExFUl8yRCB8fCBsb2NhdGlv
bi0+dHlwZSgpID09IEdyYXBoaWNzQ29udGV4dEdMOjpTQU1QTEVSX0NVQkUpIHsKLSAgICAgICAg
Zm9yIChhdXRvIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKKyAgICAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBkYXRhLmJ1ZlNpemU7ICsraSkgewogICAgICAgICAgICAgaWYgKGRhdGFbaV0g
Pj0gc3RhdGljX2Nhc3Q8aW50PihtX3RleHR1cmVVbml0cy5zaXplKCkpKSB7Ci0gICAgICAgICAg
ICAgICAgTE9HKFdlYkdMLCAiVGV4dHVyZSB1bml0IHNpemU9JXp1LCB2WyVkXT0lZC4gTG9jYXRp
b24gdHlwZSA9ICUwNFguIiwgbV90ZXh0dXJlVW5pdHMuc2l6ZSgpLCBpLCBkYXRhW2ldLCBsb2Nh
dGlvbi0+dHlwZSgpKTsKKyAgICAgICAgICAgICAgICBMT0coV2ViR0wsICJUZXh0dXJlIHVuaXQg
c2l6ZT0lenUsIHZbJXp1XT0lZC4gTG9jYXRpb24gdHlwZSA9ICUwNFguIiwgbV90ZXh0dXJlVW5p
dHMuc2l6ZSgpLCBpLCBkYXRhW2ldLCBsb2NhdGlvbi0+dHlwZSgpKTsKICAgICAgICAgICAgICAg
ICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9WQUxVRSwgInVu
aWZvcm0xaXYiLCAiaW52YWxpZCB0ZXh0dXJlIHVuaXQiKTsKICAgICAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBtX2NvbnRleHQtPnVu
aWZvcm0xaXYobG9jYXRpb24tPmxvY2F0aW9uKCksIGxlbmd0aCwgZGF0YSk7CisgICAgbV9jb250
ZXh0LT51bmlmb3JtMWl2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCBkYXRhKTsKIH0KIAogdm9pZCBX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtMml2KGNvbnN0IFdlYkdMVW5pZm9ybUxv
Y2F0aW9uKiBsb2NhdGlvbiwgSW50MzJMaXN0JiYgdikKIHsKLSAgICBpZiAoaXNDb250ZXh0TG9z
dE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKCJ1bmlmb3JtMml2Iiwg
bG9jYXRpb24sIHYsIDIsIDAsIHYubGVuZ3RoKCkpKQorICAgIGlmIChpc0NvbnRleHRMb3N0T3JQ
ZW5kaW5nKCkpCiAgICAgICAgIHJldHVybjsKLQotICAgIG1fY29udGV4dC0+dW5pZm9ybTJpdihs
b2NhdGlvbi0+bG9jYXRpb24oKSwgdi5sZW5ndGgoKSAvIDIsIHYuZGF0YSgpKTsKKyAgICBhdXRv
IGRhdGEgPSB2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKCJ1bmlmb3JtMml2IiwgbG9jYXRpb24s
IHYsIDIpOworICAgIGlmICghZGF0YSkKKyAgICAgICAgcmV0dXJuOworICAgIG1fY29udGV4dC0+
dW5pZm9ybTJpdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgZGF0YS52YWx1ZSgpKTsKIH0KIAogdm9p
ZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtM2l2KGNvbnN0IFdlYkdMVW5pZm9y
bUxvY2F0aW9uKiBsb2NhdGlvbiwgSW50MzJMaXN0JiYgdikKIHsKLSAgICBpZiAoaXNDb250ZXh0
TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKCJ1bmlmb3JtM2l2
IiwgbG9jYXRpb24sIHYsIDMsIDAsIHYubGVuZ3RoKCkpKQorICAgIGlmIChpc0NvbnRleHRMb3N0
T3JQZW5kaW5nKCkpCiAgICAgICAgIHJldHVybjsKLQotICAgIG1fY29udGV4dC0+dW5pZm9ybTNp
dihsb2NhdGlvbi0+bG9jYXRpb24oKSwgdi5sZW5ndGgoKSAvIDMsIHYuZGF0YSgpKTsKKyAgICBh
dXRvIGRhdGEgPSB2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKCJ1bmlmb3JtM2l2IiwgbG9jYXRp
b24sIHYsIDMpOworICAgIGlmICghZGF0YSkKKyAgICAgICAgcmV0dXJuOworICAgIG1fY29udGV4
dC0+dW5pZm9ybTNpdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgZGF0YS52YWx1ZSgpKTsKIH0KIAog
dm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtNGl2KGNvbnN0IFdlYkdMVW5p
Zm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgSW50MzJMaXN0JiYgdikKIHsKLSAgICBpZiAoaXNDb250
ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKCJ1bmlmb3Jt
NGl2IiwgbG9jYXRpb24sIHYsIDQsIDAsIHYubGVuZ3RoKCkpKQorICAgIGlmIChpc0NvbnRleHRM
b3N0T3JQZW5kaW5nKCkpCiAgICAgICAgIHJldHVybjsKLQotICAgIG1fY29udGV4dC0+dW5pZm9y
bTRpdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgdi5sZW5ndGgoKSAvIDQsIHYuZGF0YSgpKTsKKyAg
ICBhdXRvIGRhdGEgPSB2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKCJ1bmlmb3JtNGl2IiwgbG9j
YXRpb24sIHYsIDQpOworICAgIGlmICghZGF0YSkKKyAgICAgICAgcmV0dXJuOworICAgIG1fY29u
dGV4dC0+dW5pZm9ybTRpdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgZGF0YS52YWx1ZSgpKTsKIH0K
IAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtTWF0cml4MmZ2KGNvbnN0
IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBG
bG9hdDMyTGlzdCYmIHYpCiB7Ci0gICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAh
dmFsaWRhdGVVbmlmb3JtTWF0cml4UGFyYW1ldGVycygidW5pZm9ybU1hdHJpeDJmdiIsIGxvY2F0
aW9uLCB0cmFuc3Bvc2UsIHYsIDQsIDAsIHYubGVuZ3RoKCkpKQorICAgIGlmIChpc0NvbnRleHRM
b3N0T3JQZW5kaW5nKCkpCisgICAgICAgIHJldHVybjsKKyAgICBhdXRvIGRhdGEgPSB2YWxpZGF0
ZVVuaWZvcm1NYXRyaXhQYXJhbWV0ZXJzKCJ1bmlmb3JtTWF0cml4MmZ2IiwgbG9jYXRpb24sIHRy
YW5zcG9zZSwgdiwgNCk7CisgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm47Ci0gICAgbV9j
b250ZXh0LT51bmlmb3JtTWF0cml4MmZ2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCB2Lmxlbmd0aCgp
IC8gNCwgdHJhbnNwb3NlLCB2LmRhdGEoKSk7CisgICAgbV9jb250ZXh0LT51bmlmb3JtTWF0cml4
MmZ2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCB0cmFuc3Bvc2UsIGRhdGEudmFsdWUoKSk7CiB9CiAK
IHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybU1hdHJpeDNmdihjb25zdCBX
ZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgRmxv
YXQzMkxpc3QmJiB2KQogewotICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZh
bGlkYXRlVW5pZm9ybU1hdHJpeFBhcmFtZXRlcnMoInVuaWZvcm1NYXRyaXgzZnYiLCBsb2NhdGlv
biwgdHJhbnNwb3NlLCB2LCA5LCAwLCB2Lmxlbmd0aCgpKSkKKyAgICBpZiAoaXNDb250ZXh0TG9z
dE9yUGVuZGluZygpKQorICAgICAgICByZXR1cm47CisgICAgYXV0byBkYXRhID0gdmFsaWRhdGVV
bmlmb3JtTWF0cml4UGFyYW1ldGVycygidW5pZm9ybU1hdHJpeDNmdiIsIGxvY2F0aW9uLCB0cmFu
c3Bvc2UsIHYsIDkpOworICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuOwotICAgIG1fY29u
dGV4dC0+dW5pZm9ybU1hdHJpeDNmdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgdi5sZW5ndGgoKSAv
IDksIHRyYW5zcG9zZSwgdi5kYXRhKCkpOworICAgIG1fY29udGV4dC0+dW5pZm9ybU1hdHJpeDNm
dihsb2NhdGlvbi0+bG9jYXRpb24oKSwgdHJhbnNwb3NlLCBkYXRhLnZhbHVlKCkpOwogfQogCiB2
b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm1NYXRyaXg0ZnYoY29uc3QgV2Vi
R0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEZsb2F0
MzJMaXN0JiYgdikKIHsKLSAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxp
ZGF0ZVVuaWZvcm1NYXRyaXhQYXJhbWV0ZXJzKCJ1bmlmb3JtTWF0cml4NGZ2IiwgbG9jYXRpb24s
IHRyYW5zcG9zZSwgdiwgMTYsIDAsIHYubGVuZ3RoKCkpKQorICAgIGlmIChpc0NvbnRleHRMb3N0
T3JQZW5kaW5nKCkpCisgICAgICAgIHJldHVybjsKKyAgICBhdXRvIGRhdGEgPSB2YWxpZGF0ZVVu
aWZvcm1NYXRyaXhQYXJhbWV0ZXJzKCJ1bmlmb3JtTWF0cml4NGZ2IiwgbG9jYXRpb24sIHRyYW5z
cG9zZSwgdiwgMTYpOworICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuOwotICAgIG1fY29u
dGV4dC0+dW5pZm9ybU1hdHJpeDRmdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgdi5sZW5ndGgoKSAv
IDE2LCB0cmFuc3Bvc2UsIHYuZGF0YSgpKTsKKyAgICBtX2NvbnRleHQtPnVuaWZvcm1NYXRyaXg0
ZnYobG9jYXRpb24tPmxvY2F0aW9uKCksIHRyYW5zcG9zZSwgZGF0YS52YWx1ZSgpKTsKIH0KIAog
dm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1c2VQcm9ncmFtKFdlYkdMUHJvZ3JhbSog
cHJvZ3JhbSkKQEAgLTcwNDcsNjIgKzcwNzIsNDggQEAgYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlOjp2YWxpZGF0ZUNhcGFiaWxpdHkoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBHQ0cK
ICAgICB9CiB9CiAKLWJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmFsaWRhdGVVbmlm
b3JtUGFyYW1ldGVycyhjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIGNvbnN0IFdlYkdMVW5pZm9y
bUxvY2F0aW9uKiBsb2NhdGlvbiwgY29uc3QgRmxvYXQzMkxpc3QmIHYsIEdDR0xzaXplaSByZXF1
aXJlZE1pblNpemUsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQotewot
ICAgIHJldHVybiB2YWxpZGF0ZVVuaWZvcm1NYXRyaXhQYXJhbWV0ZXJzKGZ1bmN0aW9uTmFtZSwg
bG9jYXRpb24sIGZhbHNlLCB2LmRhdGEoKSwgdi5sZW5ndGgoKSwgcmVxdWlyZWRNaW5TaXplLCBz
cmNPZmZzZXQsIHNyY0xlbmd0aCk7Ci19Ci0KLWJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZTo6dmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycyhjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIGNv
bnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgY29uc3QgSW50MzJMaXN0JiB2LCBH
Q0dMc2l6ZWkgcmVxdWlyZWRNaW5TaXplLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNy
Y0xlbmd0aCkKLXsKLSAgICByZXR1cm4gdmFsaWRhdGVVbmlmb3JtTWF0cml4UGFyYW1ldGVycyhm
dW5jdGlvbk5hbWUsIGxvY2F0aW9uLCBmYWxzZSwgdi5kYXRhKCksIHYubGVuZ3RoKCksIHJlcXVp
cmVkTWluU2l6ZSwgc3JjT2Zmc2V0LCBzcmNMZW5ndGgpOwotfQogCi1ib29sIFdlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMoY29uc3QgY2hhciogZnVu
Y3Rpb25OYW1lLCBjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIGNvbnN0IFVp
bnQzMkxpc3QmIHYsIEdDR0xzaXplaSByZXF1aXJlZE1pblNpemUsIEdDR0x1aW50IHNyY09mZnNl
dCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQotewotICAgIHJldHVybiB2YWxpZGF0ZVVuaWZvcm1NYXRy
aXhQYXJhbWV0ZXJzKGZ1bmN0aW9uTmFtZSwgbG9jYXRpb24sIGZhbHNlLCB2LmRhdGEoKSwgdi5s
ZW5ndGgoKSwgcmVxdWlyZWRNaW5TaXplLCBzcmNPZmZzZXQsIHNyY0xlbmd0aCk7Ci19Ci0KLWJv
b2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycyhj
b25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2Nh
dGlvbiwgdm9pZCogdiwgR0NHTHNpemVpIHNpemUsIEdDR0xzaXplaSByZXF1aXJlZE1pblNpemUs
IEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQotewotICAgIHJldHVybiB2
YWxpZGF0ZVVuaWZvcm1NYXRyaXhQYXJhbWV0ZXJzKGZ1bmN0aW9uTmFtZSwgbG9jYXRpb24sIGZh
bHNlLCB2LCBzaXplLCByZXF1aXJlZE1pblNpemUsIHNyY09mZnNldCwgc3JjTGVuZ3RoKTsKLX0K
LQotYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZVVuaWZvcm1NYXRyaXhQ
YXJhbWV0ZXJzKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgY29uc3QgV2ViR0xVbmlmb3JtTG9j
YXRpb24qIGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEZsb2F0MzJMaXN0
JiB2LCBHQ0dMc2l6ZWkgcmVxdWlyZWRNaW5TaXplLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1
aW50IHNyY0xlbmd0aCkKLXsKLSAgICByZXR1cm4gdmFsaWRhdGVVbmlmb3JtTWF0cml4UGFyYW1l
dGVycyhmdW5jdGlvbk5hbWUsIGxvY2F0aW9uLCB0cmFuc3Bvc2UsIHYuZGF0YSgpLCB2Lmxlbmd0
aCgpLCByZXF1aXJlZE1pblNpemUsIHNyY09mZnNldCwgc3JjTGVuZ3RoKTsKLX0KLQotYm9vbCBX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZVVuaWZvcm1NYXRyaXhQYXJhbWV0ZXJz
KGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxv
Y2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IHZvaWQqIHYsIEdDR0xzaXplaSBz
aXplLCBHQ0dMc2l6ZWkgcmVxdWlyZWRNaW5TaXplLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1
aW50IHNyY0xlbmd0aCkKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFR5cGVkTGlzdFR5
cGU+CitPcHRpb25hbDxHQ0dMU3Bhbjxjb25zdCBUPj4gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZTo6dmFsaWRhdGVVbmlmb3JtTWF0cml4UGFyYW1ldGVycyhjb25zdCBjaGFyKiBmdW5jdGlvbk5h
bWUsIGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJh
bnNwb3NlLCBjb25zdCBUeXBlZExpc3Q8VHlwZWRMaXN0VHlwZSwgVD4mIHZhbHVlcywgR0NHTHNp
emVpIHJlcXVpcmVkTWluU2l6ZSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5n
dGgpCiB7CiAgICAgaWYgKCF2YWxpZGF0ZVVuaWZvcm1Mb2NhdGlvbihmdW5jdGlvbk5hbWUsIGxv
Y2F0aW9uKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICghdikgeworICAgICAgICBy
ZXR1cm4geyB9OworICAgIGlmICghdmFsdWVzLmRhdGEoKSkgewogICAgICAgICBzeW50aGVzaXpl
R0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9WQUxVRSwgZnVuY3Rpb25OYW1lLCAi
bm8gYXJyYXkiKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4geyB9Owog
ICAgIH0KICAgICBpZiAodHJhbnNwb3NlICYmICFpc1dlYkdMMigpKSB7CiAgICAgICAgIHN5bnRo
ZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX1ZBTFVFLCBmdW5jdGlvbk5h
bWUsICJ0cmFuc3Bvc2Ugbm90IEZBTFNFIik7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgcmV0dXJuIHsgfTsKICAgICB9Ci0gICAgaWYgKHNyY09mZnNldCA+PSBzdGF0aWNfY2FzdDxH
Q0dMdWludD4oc2l6ZSkpIHsKKyAgICBpZiAoc3JjT2Zmc2V0ID49IHN0YXRpY19jYXN0PEdDR0x1
aW50Pih2YWx1ZXMubGVuZ3RoKCkpKSB7CiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBo
aWNzQ29udGV4dEdMOjpJTlZBTElEX1ZBTFVFLCBmdW5jdGlvbk5hbWUsICJpbnZhbGlkIHNyY09m
ZnNldCIpOwotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiB7IH07CiAgICAg
fQotICAgIEdDR0xzaXplaSBhY3R1YWxTaXplID0gc2l6ZSAtIHNyY09mZnNldDsKKyAgICBHQ0dM
c2l6ZWkgYWN0dWFsU2l6ZSA9IHZhbHVlcy5sZW5ndGgoKSAtIHNyY09mZnNldDsKICAgICBpZiAo
c3JjTGVuZ3RoID4gMCkgewogICAgICAgICBpZiAoc3JjTGVuZ3RoID4gc3RhdGljX2Nhc3Q8R0NH
THVpbnQ+KGFjdHVhbFNpemUpKSB7CiAgICAgICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFw
aGljc0NvbnRleHRHTDo6SU5WQUxJRF9WQUxVRSwgZnVuY3Rpb25OYW1lLCAiaW52YWxpZCBzcmNP
ZmZzZXQgKyBzcmNMZW5ndGgiKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
ICAgIHJldHVybiB7IH07CiAgICAgICAgIH0KICAgICAgICAgYWN0dWFsU2l6ZSA9IHNyY0xlbmd0
aDsKICAgICB9CiAgICAgaWYgKGFjdHVhbFNpemUgPCByZXF1aXJlZE1pblNpemUgfHwgKGFjdHVh
bFNpemUgJSByZXF1aXJlZE1pblNpemUpKSB7CiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdy
YXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX1ZBTFVFLCBmdW5jdGlvbk5hbWUsICJpbnZhbGlkIHNp
emUiKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4geyB9OwogICAgIH0K
LSAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gbWFrZUdDR0xTcGFuKHZhbHVlcy5kYXRhKCkg
KyBzcmNPZmZzZXQsIGFjdHVhbFNpemUpOwogfQogCit0ZW1wbGF0ZQorT3B0aW9uYWw8R0NHTFNw
YW48Y29uc3QgR0NHTHVpbnQ+PiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZVVu
aWZvcm1NYXRyaXhQYXJhbWV0ZXJzPEdDR0x1aW50LCBVaW50MzJBcnJheT4oY29uc3QgY2hhciog
ZnVuY3Rpb25OYW1lLCBjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiosIEdDR0xib29sZWFuIHRy
YW5zcG9zZSwgY29uc3QgVHlwZWRMaXN0PFVpbnQzMkFycmF5LCB1aW50MzJfdD4mIHZhbHVlcywg
R0NHTHNpemVpIHJlcXVpcmVkTWluU2l6ZSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBz
cmNMZW5ndGgpOworCit0ZW1wbGF0ZQorT3B0aW9uYWw8R0NHTFNwYW48Y29uc3QgR0NHTGludD4+
IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlVW5pZm9ybU1hdHJpeFBhcmFtZXRl
cnM8R0NHTGludCwgSW50MzJBcnJheT4oY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBjb25zdCBX
ZWJHTFVuaWZvcm1Mb2NhdGlvbiosIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgVHlwZWRM
aXN0PEludDMyQXJyYXksIGludDMyX3Q+JiB2YWx1ZXMsIEdDR0xzaXplaSByZXF1aXJlZE1pblNp
emUsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKTsKKwordGVtcGxhdGUK
K09wdGlvbmFsPEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4+IFdlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2U6OnZhbGlkYXRlVW5pZm9ybU1hdHJpeFBhcmFtZXRlcnM8R0NHTGZsb2F0LCBGbG9hdDMy
QXJyYXk+KGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRp
b24qLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IFR5cGVkTGlzdDxGbG9hdDMyQXJyYXks
IGZsb2F0PiYgdmFsdWVzLCBHQ0dMc2l6ZWkgcmVxdWlyZWRNaW5TaXplLCBHQ0dMdWludCBzcmNP
ZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCk7CisKIFdlYkdMQnVmZmVyKiBXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlOjp2YWxpZGF0ZUJ1ZmZlckRhdGFQYXJhbWV0ZXJzKGNvbnN0IGNoYXIqIGZ1
bmN0aW9uTmFtZSwgR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSB1c2FnZSkKIHsKICAgICBXZWJH
TEJ1ZmZlciogYnVmZmVyID0gdmFsaWRhdGVCdWZmZXJEYXRhVGFyZ2V0KGZ1bmN0aW9uTmFtZSwg
dGFyZ2V0KTsKQEAgLTcyNDYsMTYgKzcyNTcsMTYgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlOjp2ZXJ0ZXhBdHRyaWJmdkltcGwoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBHQ0cK
ICAgICB7CiAgICAgICAgIHN3aXRjaCAoZXhwZWN0ZWRTaXplKSB7CiAgICAgICAgIGNhc2UgMToK
LSAgICAgICAgICAgIG1fY29udGV4dC0+dmVydGV4QXR0cmliMWZ2KGluZGV4LCBkYXRhKTsKKyAg
ICAgICAgICAgIG1fY29udGV4dC0+dmVydGV4QXR0cmliMWZ2KGluZGV4LCBtYWtlR0NHTFNwYW48
MT4oZGF0YSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgMjoKLSAgICAgICAg
ICAgIG1fY29udGV4dC0+dmVydGV4QXR0cmliMmZ2KGluZGV4LCBkYXRhKTsKKyAgICAgICAgICAg
IG1fY29udGV4dC0+dmVydGV4QXR0cmliMmZ2KGluZGV4LCBtYWtlR0NHTFNwYW48Mj4oZGF0YSkp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgMzoKLSAgICAgICAgICAgIG1fY29u
dGV4dC0+dmVydGV4QXR0cmliM2Z2KGluZGV4LCBkYXRhKTsKKyAgICAgICAgICAgIG1fY29udGV4
dC0+dmVydGV4QXR0cmliM2Z2KGluZGV4LCBtYWtlR0NHTFNwYW48Mz4oZGF0YSkpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgNDoKLSAgICAgICAgICAgIG1fY29udGV4dC0+dmVy
dGV4QXR0cmliNGZ2KGluZGV4LCBkYXRhKTsKKyAgICAgICAgICAgIG1fY29udGV4dC0+dmVydGV4
QXR0cmliNGZ2KGluZGV4LCBtYWtlR0NHTFNwYW48ND4oZGF0YSkpOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KICAgICB9CkBAIC03MzMwLDcgKzczNDEsNyBAQCBPcHRpb25hbDxib29s
PiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpzaW11bGF0ZVZlcnRleEF0dHJpYjAoR0NHTHVp
bnQgbnVtVmVydAogCiAgICAgaWYgKGJ1ZmZlckRhdGFTaXplID4gbV92ZXJ0ZXhBdHRyaWIwQnVm
ZmVyU2l6ZSkgewogICAgICAgICBtX2NvbnRleHQtPm1vdmVFcnJvcnNUb1N5bnRoZXRpY0Vycm9y
TGlzdCgpOwotICAgICAgICBtX2NvbnRleHQtPmJ1ZmZlckRhdGEoR3JhcGhpY3NDb250ZXh0R0w6
OkFSUkFZX0JVRkZFUiwgYnVmZmVyRGF0YVNpemUsIDAsIEdyYXBoaWNzQ29udGV4dEdMOjpEWU5B
TUlDX0RSQVcpOworICAgICAgICBtX2NvbnRleHQtPmJ1ZmZlckRhdGEoR3JhcGhpY3NDb250ZXh0
R0w6OkFSUkFZX0JVRkZFUiwgYnVmZmVyRGF0YVNpemUsIEdyYXBoaWNzQ29udGV4dEdMOjpEWU5B
TUlDX0RSQVcpOwogICAgICAgICBpZiAobV9jb250ZXh0LT5nZXRFcnJvcigpICE9IEdyYXBoaWNz
Q29udGV4dEdMOjpOT19FUlJPUikgewogICAgICAgICAgICAgLy8gV2Ugd2VyZSB1bmFibGUgdG8g
Y3JlYXRlIGEgYnVmZmVyLgogICAgICAgICAgICAgbV92ZXJ0ZXhBdHRyaWIwVXNlZEJlZm9yZSA9
IGZhbHNlOwpAQCAtNzM2NSw3ICs3Mzc2LDcgQEAgT3B0aW9uYWw8Ym9vbD4gV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6c2ltdWxhdGVWZXJ0ZXhBdHRyaWIwKEdDR0x1aW50IG51bVZlcnQKICAg
ICAgICAgbV92ZXJ0ZXhBdHRyaWIwQnVmZmVyVmFsdWVbMl0gPSBhdHRyaWJWYWx1ZS5mVmFsdWVb
Ml07CiAgICAgICAgIG1fdmVydGV4QXR0cmliMEJ1ZmZlclZhbHVlWzNdID0gYXR0cmliVmFsdWUu
ZlZhbHVlWzNdOwogICAgICAgICBtX2ZvcmNlQXR0cmliMEJ1ZmZlclJlZmlsbCA9IGZhbHNlOwot
ICAgICAgICBtX2NvbnRleHQtPmJ1ZmZlclN1YkRhdGEoR3JhcGhpY3NDb250ZXh0R0w6OkFSUkFZ
X0JVRkZFUiwgMCwgYnVmZmVyRGF0YVNpemUsIGJ1ZmZlckRhdGEuZ2V0KCkpOworICAgICAgICBt
X2NvbnRleHQtPmJ1ZmZlclN1YkRhdGEoR3JhcGhpY3NDb250ZXh0R0w6OkFSUkFZX0JVRkZFUiwg
MCwgbWFrZUdDR0xTcGFuKGJ1ZmZlckRhdGEuZ2V0KCksIGJ1ZmZlckRhdGFTaXplKSk7CiAgICAg
fQogICAgIG1fY29udGV4dC0+dmVydGV4QXR0cmliUG9pbnRlcigwLCA0LCBHcmFwaGljc0NvbnRl
eHRHTDo6RkxPQVQsIDAsIDAsIDApOwogICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oCmluZGV4
IGE3MWQwMzZhYTBkZWE1MmI0NTc5MDlmYmZmZGMzYWRmODBmNTEwY2MuLjAwNzgyOGY3ZmQ1NzNl
YTUwMDU5NDBlZDU2ZTQzOTc1MTU3NDNlNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmgKQEAgLTEwMDUsMTIgKzEw
MDUsMTMgQEAgcHJvdGVjdGVkOgogCiAgICAgLy8gSGVscGVyIGZ1bmN0aW9uIHRvIHZhbGlkYXRl
IGlucHV0IHBhcmFtZXRlcnMgZm9yIHVuaWZvcm0gZnVuY3Rpb25zLgogICAgIGJvb2wgdmFsaWRh
dGVVbmlmb3JtTG9jYXRpb24oY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBjb25zdCBXZWJHTFVu
aWZvcm1Mb2NhdGlvbiopOwotICAgIGJvb2wgdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycyhjb25z
dCBjaGFyKiBmdW5jdGlvbk5hbWUsIGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiwgY29uc3Qg
RmxvYXQzMkxpc3QmLCBHQ0dMc2l6ZWkgcmVxdWlyZWRNaW5TaXplLCBHQ0dMdWludCBzcmNPZmZz
ZXQsIEdDR0x1aW50IHNyY0xlbmd0aCk7Ci0gICAgYm9vbCB2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0
ZXJzKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24q
LCBjb25zdCBJbnQzMkxpc3QmLCBHQ0dMc2l6ZWkgcmVxdWlyZWRNaW5TaXplLCBHQ0dMdWludCBz
cmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCk7Ci0gICAgYm9vbCB2YWxpZGF0ZVVuaWZvcm1Q
YXJhbWV0ZXJzKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgY29uc3QgV2ViR0xVbmlmb3JtTG9j
YXRpb24qLCBjb25zdCBVaW50MzJMaXN0JiwgR0NHTHNpemVpIHJlcXVpcmVkTWluU2l6ZSwgR0NH
THVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpOwotICAgIGJvb2wgdmFsaWRhdGVV
bmlmb3JtUGFyYW1ldGVycyhjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIGNvbnN0IFdlYkdMVW5p
Zm9ybUxvY2F0aW9uKiwgdm9pZCosIEdDR0xzaXplaSwgR0NHTHNpemVpIHJlcXVpcmVkTWluU2l6
ZSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpOwotICAgIGJvb2wgdmFs
aWRhdGVVbmlmb3JtTWF0cml4UGFyYW1ldGVycyhjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIGNv
bnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBG
bG9hdDMyTGlzdCYsIEdDR0xzaXplaSByZXF1aXJlZE1pblNpemUsIEdDR0x1aW50IHNyY09mZnNl
dCwgR0NHTHVpbnQgc3JjTGVuZ3RoKTsKLSAgICBib29sIHZhbGlkYXRlVW5pZm9ybU1hdHJpeFBh
cmFtZXRlcnMoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBjb25zdCBXZWJHTFVuaWZvcm1Mb2Nh
dGlvbiosIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3Qgdm9pZCosIEdDR0xzaXplaSwgR0NH
THNpemVpIHJlcXVpcmVkTWluU2l6ZSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNM
ZW5ndGgpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFR5cGVkTGlzdFR5cGU+
CisgICAgT3B0aW9uYWw8R0NHTFNwYW48Y29uc3QgVD4+IHZhbGlkYXRlVW5pZm9ybVBhcmFtZXRl
cnMoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiog
bG9jYXRpb24sIGNvbnN0IFR5cGVkTGlzdDxUeXBlZExpc3RUeXBlLCBUPiYgdmFsdWVzLCBHQ0dM
c2l6ZWkgcmVxdWlyZWRNaW5TaXplLCBHQ0dMdWludCBzcmNPZmZzZXQgPSAwLCBHQ0dMdWludCBz
cmNMZW5ndGggPSAwKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHZhbGlkYXRlVW5pZm9ybU1hdHJp
eFBhcmFtZXRlcnMoZnVuY3Rpb25OYW1lLCBsb2NhdGlvbiwgZmFsc2UsIHZhbHVlcywgcmVxdWly
ZWRNaW5TaXplLCBzcmNPZmZzZXQsIHNyY0xlbmd0aCk7CisgICAgfQorICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFQsIHR5cGVuYW1lIFR5cGVkTGlzdFR5cGU+CisgICAgT3B0aW9uYWw8R0NHTFNwYW48
Y29uc3QgVD4+IHZhbGlkYXRlVW5pZm9ybU1hdHJpeFBhcmFtZXRlcnMoY29uc3QgY2hhciogZnVu
Y3Rpb25OYW1lLCBjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiosIEdDR0xib29sZWFuIHRyYW5z
cG9zZSwgY29uc3QgVHlwZWRMaXN0PFR5cGVkTGlzdFR5cGUsIFQ+JiwgR0NHTHNpemVpIHJlcXVp
cmVkTWluU2l6ZSwgR0NHTHVpbnQgc3JjT2Zmc2V0ID0gMCwgR0NHTHVpbnQgc3JjTGVuZ3RoID0g
MCk7CiAKICAgICAvLyBIZWxwZXIgZnVuY3Rpb24gdG8gdmFsaWRhdGUgcGFyYW1ldGVycyBmb3Ig
YnVmZmVyRGF0YS4KICAgICAvLyBSZXR1cm4gdGhlIGN1cnJlbnQgYm91bmQgYnVmZmVyIHRvIHRh
cmdldCwgb3IgMCBpZiBwYXJhbWV0ZXJzIGFyZSBpbnZhbGlkLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRXh0ZW5zaW9uc0dMLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNpb25zR0wuaAppbmRleCBiYTg2NWIzMzA4ZTZjOTQ1
ODIyMTIyMzc3OTZkNmZkNTc3NDg0N2Y4Li44ZjY4NDA2MWZhNmRkYjc2M2E3NWI0OWYzODJlNTk1
NTZkOTkyZmRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9F
eHRlbnNpb25zR0wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRl
bnNpb25zR0wuaApAQCAtMjk4LDcgKzI5OCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQg
cG9wR3JvdXBNYXJrZXJFWFQodm9pZCkgPSAwOwogCiAgICAgLy8gR0xfQVJCX2RyYXdfYnVmZmVy
cyAvIEdMX0VYVF9kcmF3X2J1ZmZlcnMKLSAgICB2aXJ0dWFsIHZvaWQgZHJhd0J1ZmZlcnNFWFQo
R0NHTHNpemVpIG4sIGNvbnN0IEdDR0xlbnVtKiBidWZzKSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IGRyYXdCdWZmZXJzRVhUKEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVtPiBidWZzKSA9IDA7CiAKICAg
ICAvLyBHTF9BTkdMRV9pbnN0YW5jZWRfYXJyYXlzCiAgICAgdmlydHVhbCB2b2lkIGRyYXdBcnJh
eXNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHNpemVpIGNvdW50
LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSA9IDA7CkBAIC0zMDcsMTcgKzMwNywxNyBAQCBwdWJsaWM6
CiAKICAgICAvLyBHTF9BTkdMRV9yb2J1c3RfY2xpZW50X21lbW9yeQogICAgIHZpcnR1YWwgdm9p
ZCByZWFkUGl4ZWxzUm9idXN0QU5HTEUoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3
aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xzaXplaSogY29sdW1ucywg
R0NHTHNpemVpKiByb3dzLCBHQ0dMdm9pZCogcGl4ZWxzKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lk
IHRleEltYWdlMkRSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdD
R0xpbnQgaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwg
R0NHTGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIGNvbnN0IEdDR0x2b2lkKiBwaXhlbHMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
dGV4SW1hZ2UyRFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NH
TGludCBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBH
Q0dMaW50IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bhbjxj
b25zdCBHQ0dMdm9pZD4gcGl4ZWxzKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHRleFBhcmFtZXRl
cmZ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIGNvbnN0IEdDR0xmbG9hdCogcGFyYW1zKSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IHRleFBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFt
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQqIHBhcmFtcykgPSAwOwotICAgIHZp
cnR1YWwgdm9pZCB0ZXhTdWJJbWFnZTJEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
aW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdp
ZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdD
R0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMdm9pZCogcGl4ZWxzKSA9IDA7Ci0gICAgdmlydHVh
bCB2b2lkIGNvbXByZXNzZWRUZXhJbWFnZTJEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBH
Q0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NH
THNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0x2b2lkKiBkYXRhKSA9IDA7Ci0gICAgdmlydHVhbCB2
b2lkIGNvbXByZXNzZWRUZXhTdWJJbWFnZTJEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTHNpemVp
IHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFn
ZVNpemUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMdm9pZCogZGF0YSkgPSAwOwotICAg
IHZpcnR1YWwgdm9pZCBjb21wcmVzc2VkVGV4SW1hZ2UzRFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRh
cmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3
aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMaW50IGJvcmRlciwg
R0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0x2b2lkKiBk
YXRhKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGNvbXByZXNzZWRUZXhTdWJJbWFnZTNEUm9idXN0
QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdD
R0xpbnQgeW9mZnNldCwgR0NHTGludCB6b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXpl
aSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMc2l6ZWkgaW1h
Z2VTaXplLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTHZvaWQqIGRhdGEpID0gMDsKLQot
ICAgIHZpcnR1YWwgdm9pZCB0ZXhJbWFnZTNEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMaW50IGxldmVsLCBHQ0dMaW50IGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdD
R0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGludCBib3JkZXIsIEdDR0xlbnVt
IGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0x2b2lk
KiBwaXhlbHMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdGV4U3ViSW1hZ2UzRFJvYnVzdEFOR0xF
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50
IHlvZmZzZXQsIEdDR0xpbnQgem9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVp
Z2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NH
THNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0x2b2lkKiBwaXhlbHMpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgdGV4U3ViSW1hZ2UyRFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBs
ZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwg
R0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bh
bjxjb25zdCBHQ0dMdm9pZD4gcGl4ZWxzKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNvbXByZXNz
ZWRUZXhJbWFnZTJEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBH
Q0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0
LCBHQ0dMaW50IGJvcmRlciwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTFNwYW48Y29uc3QgR0NH
THZvaWQ+IGRhdGEpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY29tcHJlc3NlZFRleFN1YkltYWdl
MkRSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9m
ZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQs
IEdDR0xlbnVtIGZvcm1hdCwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTFNwYW48Y29uc3QgR0NH
THZvaWQ+IGRhdGEpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY29tcHJlc3NlZFRleEltYWdlM0RS
b2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVy
bmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBk
ZXB0aCwgR0NHTGludCBib3JkZXIsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xTcGFuPGNvbnN0
IEdDR0x2b2lkPiBkYXRhKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNvbXByZXNzZWRUZXhTdWJJ
bWFnZTNEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50
IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTGludCB6b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lk
dGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGVudW0gZm9ybWF0LCBH
Q0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gZGF0YSkgPSAwOwor
CisgICAgdmlydHVhbCB2b2lkIHRleEltYWdlM0RSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQs
IEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwg
R0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMaW50IGJvcmRlciwgR0NHTGVu
dW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gcGl4ZWxz
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHRleFN1YkltYWdlM0RSb2J1c3RBTkdMRShHQ0dMZW51
bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0
LCBHQ0dMaW50IHpvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NH
THNpemVpIGRlcHRoLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPGNv
bnN0IEdDR0x2b2lkPiBwaXhlbHMpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0UXVlcnlpdlJv
YnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZT
aXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIGdldFF1ZXJ5T2JqZWN0dWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVt
IHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1aW50KiBw
YXJhbXMpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0QnVmZmVyUG9pbnRlcnZSb2J1c3RBTkdM
RShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NH
THNpemVpKiBsZW5ndGgsIEdDR0x2b2lkKiogcGFyYW1zKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaAppbmRleCAwYTcx
NTQwY2U4MDIwZmQ5ZjU4MTY4NjAzZjY3NjliOTQ0NTIyNDE1Li44ZWIyY2VmYzczNzhkNDUwNzhk
MTkwYTVmMTEzZmI4MjNmMWRiOTZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmgKQEAgLTM3Myw3ICszNzMsNyBAQCBwdWJs
aWM6CiAgICAgICAgIFVOUEFDS19DT0xPUlNQQUNFX0NPTlZFUlNJT05fV0VCR0wgPSAweDkyNDMs
CiAgICAgICAgIEJST1dTRVJfREVGQVVMVF9XRUJHTCA9IDB4OTI0NCwKICAgICAgICAgVkVSVEVY
X0FUVFJJQl9BUlJBWV9ESVZJU09SX0FOR0xFID0gMHg4OEZFLAotICAgICAgICAKKwogICAgICAg
ICAvLyBXZWJHTDIgY29uc3RhbnRzCiAgICAgICAgIFJFQURfQlVGRkVSID0gMHgwQzAyLAogICAg
ICAgICBVTlBBQ0tfUk9XX0xFTkdUSCA9IDB4MENGMiwKQEAgLTEwNjMsNDkgKzEwNjMsNDkgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB0ZXhQYXJhbWV0ZXJpKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGVudW0gcG5hbWUsIEdDR0xpbnQgcGFyYW0pID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCB1
bmlmb3JtMWYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGZsb2F0IHgpID0gMDsKLSAgICB2aXJ0dWFs
IHZvaWQgdW5pZm9ybTFmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWksIGNvbnN0IEdDR0xm
bG9hdCogdikgPSAwOworICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtMWZ2KEdDR0xpbnQgbG9jYXRp
b24sIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gdikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB1
bmlmb3JtMWkoR0NHTGludCBsb2NhdGlvbiwgR0NHTGludCB4KSA9IDA7Ci0gICAgdmlydHVhbCB2
b2lkIHVuaWZvcm0xaXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpLCBjb25zdCBHQ0dMaW50
KiB2KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVuaWZvcm0xaXYoR0NHTGludCBsb2NhdGlvbiwg
R0NHTFNwYW48Y29uc3QgR0NHTGludD4gdikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB1bmlmb3Jt
MmYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGZsb2F0IHgsIEdDR0xmbG9hdCB5KSA9IDA7Ci0gICAg
dmlydHVhbCB2b2lkIHVuaWZvcm0yZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpLCBjb25z
dCBHQ0dMZmxvYXQqIHYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybTJmdihHQ0dMaW50
IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IHYpID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgdW5pZm9ybTJpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xpbnQgeCwgR0NHTGludCB5KSA9
IDA7Ci0gICAgdmlydHVhbCB2b2lkIHVuaWZvcm0yaXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTHNp
emVpLCBjb25zdCBHQ0dMaW50KiB2KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVuaWZvcm0yaXYo
R0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gdikgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCB1bmlmb3JtM2YoR0NHTGludCBsb2NhdGlvbiwgR0NHTGZsb2F0IHgsIEdDR0xm
bG9hdCB5LCBHQ0dMZmxvYXQgeikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtM2Z2KEdD
R0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSwgY29uc3QgR0NHTGZsb2F0KiB2KSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIHVuaWZvcm0zZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3Qg
R0NHTGZsb2F0PiB2KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHVuaWZvcm0zaShHQ0dMaW50IGxv
Y2F0aW9uLCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTGludCB6KSA9IDA7Ci0gICAgdmlydHVh
bCB2b2lkIHVuaWZvcm0zaXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpLCBjb25zdCBHQ0dM
aW50KiB2KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVuaWZvcm0zaXYoR0NHTGludCBsb2NhdGlv
biwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gdikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB1bmlm
b3JtNGYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGZsb2F0IHgsIEdDR0xmbG9hdCB5LCBHQ0dMZmxv
YXQgeiwgR0NHTGZsb2F0IHcpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybTRmdihHQ0dM
aW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWksIGNvbnN0IEdDR0xmbG9hdCogdikgPSAwOworICAgIHZp
cnR1YWwgdm9pZCB1bmlmb3JtNGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdD
R0xmbG9hdD4gdikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtNGkoR0NHTGludCBsb2Nh
dGlvbiwgR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xpbnQgeiwgR0NHTGludCB3KSA9IDA7Ci0g
ICAgdmlydHVhbCB2b2lkIHVuaWZvcm00aXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpLCBj
b25zdCBHQ0dMaW50KiB2KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHVuaWZvcm1NYXRyaXgyZnYo
R0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0
IEdDR0xmbG9hdCogdmFsdWUpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybU1hdHJpeDNm
dihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWksIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29u
c3QgR0NHTGZsb2F0KiB2YWx1ZSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtTWF0cml4
NGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBj
b25zdCBHQ0dMZmxvYXQqIHZhbHVlKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVuaWZvcm00aXYo
R0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gdikgPSAwOworICAgIHZp
cnR1YWwgdm9pZCB1bmlmb3JtTWF0cml4MmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFu
IHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiB2YWx1ZSkgPSAwOworICAgIHZp
cnR1YWwgdm9pZCB1bmlmb3JtTWF0cml4M2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFu
IHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiB2YWx1ZSkgPSAwOworICAgIHZp
cnR1YWwgdm9pZCB1bmlmb3JtTWF0cml4NGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFu
IHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiB2YWx1ZSkgPSAwOwogCiAgICAg
dmlydHVhbCB2b2lkIHVzZVByb2dyYW0oUGxhdGZvcm1HTE9iamVjdCkgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCB2YWxpZGF0ZVByb2dyYW0oUGxhdGZvcm1HTE9iamVjdCkgPSAwOwogCiAgICAgdmly
dHVhbCB2b2lkIHZlcnRleEF0dHJpYjFmKEdDR0x1aW50IGluZGV4LCBHQ0dMZmxvYXQgeCkgPSAw
OwotICAgIHZpcnR1YWwgdm9pZCB2ZXJ0ZXhBdHRyaWIxZnYoR0NHTHVpbnQgaW5kZXgsIGNvbnN0
IEdDR0xmbG9hdCogdmFsdWVzKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHZlcnRleEF0dHJpYjFm
dihHQ0dMdWludCBpbmRleCwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0LCAxPiB2YWx1ZXMpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgdmVydGV4QXR0cmliMmYoR0NHTHVpbnQgaW5kZXgsIEdDR0xm
bG9hdCB4LCBHQ0dMZmxvYXQgeSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB2ZXJ0ZXhBdHRyaWIy
ZnYoR0NHTHVpbnQgaW5kZXgsIGNvbnN0IEdDR0xmbG9hdCogdmFsdWVzKSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIHZlcnRleEF0dHJpYjJmdihHQ0dMdWludCBpbmRleCwgR0NHTFNwYW48Y29uc3Qg
R0NHTGZsb2F0LCAyPiB2YWx1ZXMpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdmVydGV4QXR0cmli
M2YoR0NHTHVpbnQgaW5kZXgsIEdDR0xmbG9hdCB4LCBHQ0dMZmxvYXQgeSwgR0NHTGZsb2F0IHop
ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdmVydGV4QXR0cmliM2Z2KEdDR0x1aW50IGluZGV4LCBj
b25zdCBHQ0dMZmxvYXQqIHZhbHVlcykgPSAwOworICAgIHZpcnR1YWwgdm9pZCB2ZXJ0ZXhBdHRy
aWIzZnYoR0NHTHVpbnQgaW5kZXgsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdCwgMz4gdmFsdWVz
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHZlcnRleEF0dHJpYjRmKEdDR0x1aW50IGluZGV4LCBH
Q0dMZmxvYXQgeCwgR0NHTGZsb2F0IHksIEdDR0xmbG9hdCB6LCBHQ0dMZmxvYXQgdykgPSAwOwot
ICAgIHZpcnR1YWwgdm9pZCB2ZXJ0ZXhBdHRyaWI0ZnYoR0NHTHVpbnQgaW5kZXgsIGNvbnN0IEdD
R0xmbG9hdCogdmFsdWVzKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHZlcnRleEF0dHJpYjRmdihH
Q0dMdWludCBpbmRleCwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0LCA0PiB2YWx1ZXMpID0gMDsK
IAogICAgIHZpcnR1YWwgdm9pZCB2ZXJ0ZXhBdHRyaWJQb2ludGVyKEdDR0x1aW50IGluZGV4LCBH
Q0dMaW50IHNpemUsIEdDR0xlbnVtIHR5cGUsIEdDR0xib29sZWFuIG5vcm1hbGl6ZWQsIEdDR0xz
aXplaSBzdHJpZGUsIEdDR0xpbnRwdHIgb2Zmc2V0KSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQg
dmlld3BvcnQoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVp
IGhlaWdodCkgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIGJ1ZmZlckRhdGEoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMc2l6ZWlwdHIsIEdDR0xlbnVtIHVzYWdlKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lk
IGJ1ZmZlckRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWlwdHIsIGNvbnN0IEdDR0x2b2lk
KiBkYXRhLCBHQ0dMZW51bSB1c2FnZSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBidWZmZXJTdWJE
YXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludHB0ciBvZmZzZXQsIEdDR0xzaXplaXB0ciwgY29u
c3QgR0NHTHZvaWQqIGRhdGEpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgYnVmZmVyRGF0YShHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRhLCBHQ0dMZW51bSB1c2Fn
ZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBidWZmZXJTdWJEYXRhKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGludHB0ciBvZmZzZXQsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRhKSA9IDA7CiAK
ICAgICB2aXJ0dWFsIHZvaWQgcmVhZFBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNp
emVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5
cGUsIEdDR0x2b2lkKiBkYXRhKSA9IDA7CiAKLSAgICB2aXJ0dWFsIGJvb2wgdGV4SW1hZ2UyRChH
Q0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBH
Q0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51
bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIGNvbnN0IEdDR0x2b2lkKiBwaXhlbHMpID0gMDsKLSAg
ICB2aXJ0dWFsIHZvaWQgdGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2
ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdD
R0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgY29uc3QgR0NH
THZvaWQqIHBpeGVscykgPSAwOworICAgIHZpcnR1YWwgYm9vbCB0ZXhJbWFnZTJEKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXpl
aSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1h
dCwgR0NHTGVudW0gdHlwZSwgIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBwaXhlbHMpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgdGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQg
bGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgs
IEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTFNw
YW48Y29uc3QgR0NHTHZvaWQ+IHBpeGVscykgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIGRyYXdB
cnJheXNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHNpemVpIGNv
dW50LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRyYXdFbGVt
ZW50c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5
cGUsIEdDR0xpbnRwdHIgb2Zmc2V0LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSA9IDA7CkBAIC0xMTI1
LDggKzExMjUsOCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgYmxpdEZyYW1lYnVmZmVy
KEdDR0xpbnQgc3JjWDAsIEdDR0xpbnQgc3JjWTAsIEdDR0xpbnQgc3JjWDEsIEdDR0xpbnQgc3Jj
WTEsIEdDR0xpbnQgZHN0WDAsIEdDR0xpbnQgZHN0WTAsIEdDR0xpbnQgZHN0WDEsIEdDR0xpbnQg
ZHN0WTEsIEdDR0xiaXRmaWVsZCBtYXNrLCBHQ0dMZW51bSBmaWx0ZXIpID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgZnJhbWVidWZmZXJUZXh0dXJlTGF5ZXIoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51
bSBhdHRhY2htZW50LCBQbGF0Zm9ybUdMT2JqZWN0IHRleHR1cmUsIEdDR0xpbnQgbGV2ZWwsIEdD
R0xpbnQgbGF5ZXIpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZUZyYW1lYnVmZmVy
KEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpIG51bUF0dGFjaG1lbnRzLCBjb25zdCBHQ0dMZW51
bSogYXR0YWNobWVudHMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZVN1YkZyYW1l
YnVmZmVyKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpIG51bUF0dGFjaG1lbnRzLCBjb25zdCBH
Q0dMZW51bSogYXR0YWNobWVudHMsIEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lk
dGgsIEdDR0xzaXplaSBoZWlnaHQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZUZy
YW1lYnVmZmVyKEdDR0xlbnVtIHRhcmdldCwgR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+IGF0dGFj
aG1lbnRzKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGVTdWJGcmFtZWJ1ZmZlcihH
Q0dMZW51bSB0YXJnZXQsIEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVtPiBhdHRhY2htZW50cywgR0NH
TGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCByZWFkQnVmZmVyKEdDR0xlbnVtIHNyYykgPSAwOwogCiAgICAg
Ly8gZ2V0SW50ZXJuYWxGb3JtYXRQYXJhbWV0ZXIKQEAgLTExNDgsMjggKzExNDgsMjggQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtMnVpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0x1
aW50IHYwLCBHQ0dMdWludCB2MSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtM3VpKEdD
R0xpbnQgbG9jYXRpb24sIEdDR0x1aW50IHYwLCBHQ0dMdWludCB2MSwgR0NHTHVpbnQgdjIpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybTR1aShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMdWlu
dCB2MCwgR0NHTHVpbnQgdjEsIEdDR0x1aW50IHYyLCBHQ0dMdWludCB2MykgPSAwOwotICAgIHZp
cnR1YWwgdm9pZCB1bmlmb3JtMXVpdihHQ0dMaW50IGxvY2F0aW9uLCBjb25zdCBHQ0dMdWludCog
ZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpID0gMDsKLSAgICB2
aXJ0dWFsIHZvaWQgdW5pZm9ybTJ1aXYoR0NHTGludCBsb2NhdGlvbiwgY29uc3QgR0NHTHVpbnQq
IGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKSA9IDA7Ci0gICAg
dmlydHVhbCB2b2lkIHVuaWZvcm0zdWl2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0x1aW50
KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkgPSAwOwotICAg
IHZpcnR1YWwgdm9pZCB1bmlmb3JtNHVpdihHQ0dMaW50IGxvY2F0aW9uLCBjb25zdCBHQ0dMdWlu
dCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpID0gMDsKLSAg
ICB2aXJ0dWFsIHZvaWQgdW5pZm9ybU1hdHJpeDJ4M2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xi
b29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZz
ZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtTWF0
cml4M3gyZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBH
Q0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKSA9
IDA7Ci0gICAgdmlydHVhbCB2b2lkIHVuaWZvcm1NYXRyaXgyeDRmdihHQ0dMaW50IGxvY2F0aW9u
LCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQg
c3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdW5p
Zm9ybU1hdHJpeDR4MmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwg
Y29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xl
bmd0aCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtTWF0cml4M3g0ZnYoR0NHTGludCBs
b2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdD
R0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKSA9IDA7Ci0gICAgdmlydHVhbCB2
b2lkIHVuaWZvcm1NYXRyaXg0eDNmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFu
c3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWlu
dCBzcmNMZW5ndGgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybTF1aXYoR0NHTGludCBs
b2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTHVpbnQ+IGRhdGEpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgdW5pZm9ybTJ1aXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTHVp
bnQ+IGRhdGEpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybTN1aXYoR0NHTGludCBsb2Nh
dGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTHVpbnQ+IGRhdGEpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgdW5pZm9ybTR1aXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTHVpbnQ+
IGRhdGEpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybU1hdHJpeDJ4M2Z2KEdDR0xpbnQg
bG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0
PiBkYXRhKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVuaWZvcm1NYXRyaXgzeDJmdihHQ0dMaW50
IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9h
dD4gZGF0YSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtTWF0cml4Mng0ZnYoR0NHTGlu
dCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxv
YXQ+IGRhdGEpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybU1hdHJpeDR4MmZ2KEdDR0xp
bnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZs
b2F0PiBkYXRhKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVuaWZvcm1NYXRyaXgzeDRmdihHQ0dM
aW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xm
bG9hdD4gZGF0YSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtTWF0cml4NHgzZnYoR0NH
TGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dM
ZmxvYXQ+IGRhdGEpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdmVydGV4QXR0cmliSTRpKEdDR0x1
aW50IGluZGV4LCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTGludCB6LCBHQ0dMaW50IHcpID0g
MDsKLSAgICB2aXJ0dWFsIHZvaWQgdmVydGV4QXR0cmliSTRpdihHQ0dMdWludCBpbmRleCwgY29u
c3QgR0NHTGludCogdmFsdWVzKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHZlcnRleEF0dHJpYkk0
aXYoR0NHTHVpbnQgaW5kZXgsIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQsIDQ+IHZhbHVlcykgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCB2ZXJ0ZXhBdHRyaWJJNHVpKEdDR0x1aW50IGluZGV4LCBHQ0dM
dWludCB4LCBHQ0dMdWludCB5LCBHQ0dMdWludCB6LCBHQ0dMdWludCB3KSA9IDA7Ci0gICAgdmly
dHVhbCB2b2lkIHZlcnRleEF0dHJpYkk0dWl2KEdDR0x1aW50IGluZGV4LCBjb25zdCBHQ0dMdWlu
dCogdmFsdWVzKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHZlcnRleEF0dHJpYkk0dWl2KEdDR0x1
aW50IGluZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdWludCwgND4gdmFsdWVzKSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIHZlcnRleEF0dHJpYklQb2ludGVyKEdDR0x1aW50IGluZGV4LCBHQ0dMaW50
IHNpemUsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBzdHJpZGUsIEdDR0xpbnRwdHIgb2Zmc2V0
KSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgZHJhd1JhbmdlRWxlbWVudHMoR0NHTGVudW0gbW9k
ZSwgR0NHTHVpbnQgc3RhcnQsIEdDR0x1aW50IGVuZCwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51
bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCkgPSAwOwogCi0gICAgdmlydHVhbCB2b2lkIGRyYXdC
dWZmZXJzKEdDR0xzaXplaSBuLCBjb25zdCBHQ0dMZW51bSogYnVmcykgPSAwOwotICAgIHZpcnR1
YWwgdm9pZCBjbGVhckJ1ZmZlcml2KEdDR0xlbnVtIGJ1ZmZlciwgR0NHTGludCBkcmF3YnVmZmVy
LCBjb25zdCBHQ0dMaW50KiB2YWx1ZXMsIEdDR0x1aW50IHNyY09mZnNldCkgPSAwOwotICAgIHZp
cnR1YWwgdm9pZCBjbGVhckJ1ZmZlcnVpdihHQ0dMZW51bSBidWZmZXIsIEdDR0xpbnQgZHJhd2J1
ZmZlciwgY29uc3QgR0NHTHVpbnQqIHZhbHVlcywgR0NHTHVpbnQgc3JjT2Zmc2V0KSA9IDA7Ci0g
ICAgdmlydHVhbCB2b2lkIGNsZWFyQnVmZmVyZnYoR0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50IGRy
YXdidWZmZXIsIGNvbnN0IEdDR0xmbG9hdCogdmFsdWVzLCBHQ0dMdWludCBzcmNPZmZzZXQpID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd0J1ZmZlcnMoR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+
IGJ1ZnMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY2xlYXJCdWZmZXJpdihHQ0dMZW51bSBidWZm
ZXIsIEdDR0xpbnQgZHJhd2J1ZmZlciwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gdmFsdWVzKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIGNsZWFyQnVmZmVydWl2KEdDR0xlbnVtIGJ1ZmZlciwgR0NH
TGludCBkcmF3YnVmZmVyLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdWludD4gdmFsdWVzKSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIGNsZWFyQnVmZmVyZnYoR0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50IGRy
YXdidWZmZXIsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gdmFsdWVzKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIGNsZWFyQnVmZmVyZmkoR0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50IGRyYXdidWZm
ZXIsIEdDR0xmbG9hdCBkZXB0aCwgR0NHTGludCBzdGVuY2lsKSA9IDA7CiAKICAgICB2aXJ0dWFs
IFBsYXRmb3JtR0xPYmplY3QgY3JlYXRlUXVlcnkoKSA9IDA7CkBAIC0xMjIxLDIwICsxMjIxLDYg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgU3RyaW5nIGdldEFjdGl2ZVVuaWZvcm1CbG9ja05hbWUo
UGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMdWludCB1bmlmb3JtQmxvY2tJbmRleCkgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtQmxvY2tCaW5kaW5nKFBsYXRmb3JtR0xPYmplY3Qg
cHJvZ3JhbSwgR0NHTHVpbnQgdW5pZm9ybUJsb2NrSW5kZXgsIEdDR0x1aW50IHVuaWZvcm1CbG9j
a0JpbmRpbmcpID0gMDsKIAotICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtMWZ2KEdDR0xpbnQgbG9j
YXRpb24sIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWlu
dCBzcmNMZW5ndGgpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybTJmdihHQ0dMaW50IGxv
Y2F0aW9uLCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVp
bnQgc3JjTGVuZ3RoKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHVuaWZvcm0zZnYoR0NHTGludCBs
b2NhdGlvbiwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1
aW50IHNyY0xlbmd0aCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtNGZ2KEdDR0xpbnQg
bG9jYXRpb24sIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dM
dWludCBzcmNMZW5ndGgpID0gMDsKLQotICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtMWl2KEdDR0xp
bnQgbG9jYXRpb24sIGNvbnN0IEdDR0xpbnQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NH
THVpbnQgc3JjTGVuZ3RoKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHVuaWZvcm0yaXYoR0NHTGlu
dCBsb2NhdGlvbiwgY29uc3QgR0NHTGludCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dM
dWludCBzcmNMZW5ndGgpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybTNpdihHQ0dMaW50
IGxvY2F0aW9uLCBjb25zdCBHQ0dMaW50KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1
aW50IHNyY0xlbmd0aCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtNGl2KEdDR0xpbnQg
bG9jYXRpb24sIGNvbnN0IEdDR0xpbnQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVp
bnQgc3JjTGVuZ3RoKSA9IDA7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybU1hdHJpeDJmdihH
Q0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCog
ZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpID0gMDsKLSAgICB2
aXJ0dWFsIHZvaWQgdW5pZm9ybU1hdHJpeDNmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVh
biB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBH
Q0dMdWludCBzcmNMZW5ndGgpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybU1hdHJpeDRm
dihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9h
dCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpID0gMDsKLQog
ICAgIHZpcnR1YWwgdm9pZCBnZXRBY3RpdmVVbmlmb3JtQmxvY2tpdihHQ0dMdWludCBwcm9ncmFt
LCBHQ0dMdWludCB1bmlmb3JtQmxvY2tJbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdD
R0xpbnQ+IHBhcmFtcykgPSAwOwogCiAgICAgLy8gT3RoZXIgZnVuY3Rpb25zLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlc0dMLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5cGVzR0wuaAppbmRleCBl
N2M2OWIyOGRjZTQ2NTgyNTc1NzczMzMyNWI4ZjQ0ZGYyNzIwN2I5Li4wNjJlNTU2N2EyYzE5ZGI3
YjI4MTkxYmFhODVkMzc3Y2MwMTZjNGUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5cGVzR0wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5cGVzR0wuaApAQCAtNjgsNiArNjgsMTAgQEAgc3RydWN0
IEdDR0xTcGFuIHsKICAgICBHQ0dMU3BhbihUICgmYXJyYXkpW0V4dGVudF0pCiAgICAgICAgIDog
ZGF0YShhcnJheSkKICAgICB7IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPgorICAgIEdDR0xT
cGFuKGNvbnN0IEdDR0xTcGFuPFUsIEV4dGVudD4mIG90aGVyLCBzdGQ6OmVuYWJsZV9pZl90PHN0
ZDo6aXNfY29udmVydGlibGVfdjxVKCopW10sIFQoKilbXT4sIG51bGxwdHJfdD4gPSBudWxscHRy
KQorICAgICAgICA6IGRhdGEob3RoZXIuZGF0YSkKKyAgICB7IH0KICAgICBUJiBvcGVyYXRvcltd
KHNpemVfdCBpKSB7IFJFTEVBU0VfQVNTRVJUKGRhdGEgJiYgaSA8IGJ1ZlNpemUpOyByZXR1cm4g
ZGF0YVtpXTsgfQogICAgIFQmIG9wZXJhdG9yKigpIHsgUkVMRUFTRV9BU1NFUlQoZGF0YSAmJiBi
dWZTaXplKTsgcmV0dXJuICpkYXRhOyB9CiAgICAgVCogZGF0YTsKQEAgLTgwLDExICs4NCwxOCBA
QCBzdHJ1Y3QgR0NHTFNwYW48VCwgc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKT4g
ewogICAgICAgICA6IGRhdGEoYXJyYXkpCiAgICAgICAgICwgYnVmU2l6ZShidWZTaXplXykKICAg
ICB7IH0KLSAgICB0ZW1wbGF0ZTxzaXplX3QgU3o+IEdDR0xTcGFuKFQgKCZhcnJheSlbU3pdKQor
ICAgIHRlbXBsYXRlPHNpemVfdCBTej4KKyAgICBHQ0dMU3BhbihUICgmYXJyYXkpW1N6XSkKICAg
ICAgICAgOiBkYXRhKGFycmF5KQogICAgICAgICAsIGJ1ZlNpemUoU3opCiAgICAgeyB9Ci0gICAg
R0NHTFNwYW4oV1RGOjpWZWN0b3I8VD4mIGFycmF5KQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUs
IHNpemVfdCBVRXh0ZW50PgorICAgIEdDR0xTcGFuKGNvbnN0IEdDR0xTcGFuPFUsIFVFeHRlbnQ+
JiBvdGhlciwgc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2NvbnZlcnRpYmxlX3Y8VSgqKVtdLCBU
KCopW10+LCBudWxscHRyX3Q+ID0gbnVsbHB0cikKKyAgICAgICAgOiBkYXRhKG90aGVyLmRhdGEp
CisgICAgICAgICwgYnVmU2l6ZShvdGhlci5idWZTaXplKQorICAgIHsgfQorICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFUsIHNpemVfdCBpbmxpbmVDYXBhY2l0eT4KKyAgICBHQ0dMU3BhbihXVEY6OlZl
Y3RvcjxVLCBpbmxpbmVDYXBhY2l0eT4mIGFycmF5LCBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNf
Y29udmVydGlibGVfdjxVKCopW10sIFQoKilbXT4sIG51bGxwdHJfdD4gPSBudWxscHRyKQogICAg
ICAgICA6IGRhdGEoYXJyYXkuZGF0YSgpKQogICAgICAgICAsIGJ1ZlNpemUoYXJyYXkuc2l6ZSgp
KQogICAgIHsgfQpAQCAtOTQsNiArMTA1LDU0IEBAIHN0cnVjdCBHQ0dMU3BhbjxULCBzdGQ6Om51
bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpPiB7CiAgICAgY29uc3Qgc2l6ZV90IGJ1ZlNpemU7
CiB9OwogCit0ZW1wbGF0ZTw+CitzdHJ1Y3QgR0NHTFNwYW48R0NHTHZvaWQ+IHsKKyAgICBHQ0dM
U3BhbihHQ0dMdm9pZCogYXJyYXksIHNpemVfdCBidWZTaXplXykKKyAgICAgICAgOiBkYXRhKGFy
cmF5KQorICAgICAgICAsIGJ1ZlNpemUoYnVmU2l6ZV8pCisgICAgeyB9CisgICAgdGVtcGxhdGU8
dHlwZW5hbWUgVSwgc2l6ZV90IFN6PgorICAgIEdDR0xTcGFuKFUgKCZhcnJheSlbU3pdKQorICAg
ICAgICA6IGRhdGEoYXJyYXkpCisgICAgICAgICwgYnVmU2l6ZShTeiAqIHNpemVvZihVKSkKKyAg
ICB7IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVLCBzaXplX3QgVUV4dGVudD4KKyAgICBHQ0dM
U3Bhbihjb25zdCBHQ0dMU3BhbjxVLCBVRXh0ZW50PiYgb3RoZXIpCisgICAgICAgIDogZGF0YShv
dGhlci5kYXRhKQorICAgICAgICAsIGJ1ZlNpemUob3RoZXIuYnVmU2l6ZSAqIHNpemVvZihVKSkK
KyAgICB7IH0KKyAgICBHQ0dMdm9pZCogZGF0YTsKKyAgICBjb25zdCBzaXplX3QgYnVmU2l6ZTsK
K307CisKK3RlbXBsYXRlPD4KK3N0cnVjdCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4geworICAg
IEdDR0xTcGFuKGNvbnN0IEdDR0x2b2lkKiBhcnJheSwgc2l6ZV90IGJ1ZlNpemVfKQorICAgICAg
ICA6IGRhdGEoYXJyYXkpCisgICAgICAgICwgYnVmU2l6ZShidWZTaXplXykKKyAgICB7IH0KKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBVLCBzaXplX3QgU3o+CisgICAgR0NHTFNwYW4oVSAoJmFycmF5
KVtTel0pCisgICAgICAgIDogZGF0YShhcnJheSkKKyAgICAgICAgLCBidWZTaXplKFN6ICogc2l6
ZW9mKFUpKQorICAgIHsgfQorICAgIEdDR0xTcGFuKGNvbnN0IEdDR0xTcGFuPEdDR0x2b2lkPiYg
b3RoZXIpCisgICAgICAgIDogZGF0YShvdGhlci5kYXRhKQorICAgICAgICAsIGJ1ZlNpemUob3Ro
ZXIuYnVmU2l6ZSkKKyAgICB7IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVLCBzaXplX3QgVUV4
dGVudD4KKyAgICBHQ0dMU3Bhbihjb25zdCBHQ0dMU3BhbjxVLCBVRXh0ZW50PiYgb3RoZXIpCisg
ICAgICAgIDogZGF0YShvdGhlci5kYXRhKQorICAgICAgICAsIGJ1ZlNpemUob3RoZXIuYnVmU2l6
ZSAqIHNpemVvZihVKSkKKyAgICB7IH0KKyAgICBHQ0dMU3BhbihpbnRwdHJfdCBvZmZzZXQpCisg
ICAgICAgIDogZGF0YShyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0x2b2lkKj4ob2Zmc2V0KSkK
KyAgICAgICAgLCBidWZTaXplKDApCisgICAgeyB9CisgICAgY29uc3QgR0NHTHZvaWQqIGRhdGE7
CisgICAgY29uc3Qgc2l6ZV90IGJ1ZlNpemU7Cit9OworCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBz
aXplX3QgTj4KIEdDR0xTcGFuKFQgKCYpW05dKSAtPiBHQ0dMU3BhbjxULCBOPjsKIApAQCAtMTA1
LDMgKzE2NCw5IEBAIEdDR0xTcGFuPFQ+IG1ha2VHQ0dMU3BhbihUKiBkYXRhLCBzaXplX3QgY291
bnQpCiB7CiAgICAgcmV0dXJuIEdDR0xTcGFuPFQ+IHsgZGF0YSwgY291bnQgfTsKIH0KKwordGVt
cGxhdGU8c2l6ZV90IEV4dGVudCwgdHlwZW5hbWUgVD4KK0dDR0xTcGFuPFQsIEV4dGVudD4gbWFr
ZUdDR0xTcGFuKFQqIGRhdGEpCit7CisgICAgcmV0dXJuIEdDR0xTcGFuPFQsIEV4dGVudD4geyBk
YXRhIH07Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
bmdsZS9FeHRlbnNpb25zR0xBTkdMRS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5jcHAKaW5kZXggNGQwMjViOTkzNDIyNzc2Yjli
NWY0YWFiYzM5YTBjNzg5MTk0MGE5OS4uMTA3MTNhYzU2ZDBkZWNhZDkxYmM1Y2IxNjc0MWFiMjli
NDVhZTRkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5n
bGUvRXh0ZW5zaW9uc0dMQU5HTEUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmNwcApAQCAtMjI3LDEyICsyMjcsMTIgQEAg
Ym9vbCBFeHRlbnNpb25zR0xBTkdMRTo6c3VwcG9ydHNFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBu
YW1lKQogICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMobmFtZSkgfHwg
bV9yZXF1ZXN0YWJsZUV4dGVuc2lvbnMuY29udGFpbnMobmFtZSk7CiB9CiAKLXZvaWQgRXh0ZW5z
aW9uc0dMQU5HTEU6OmRyYXdCdWZmZXJzRVhUKEdDR0xzaXplaSBuLCBjb25zdCBHQ0dMZW51bSog
YnVmcykKK3ZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmRyYXdCdWZmZXJzRVhUKEdDR0xTcGFuPGNv
bnN0IEdDR0xlbnVtPiBidWZzKQogewogICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1
cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZ2w6OkRyYXdCdWZmZXJzRVhUKG4sIGJ1
ZnMpOworICAgIGdsOjpEcmF3QnVmZmVyc0VYVChidWZzLmJ1ZlNpemUsIGJ1ZnMuZGF0YSk7CiB9
CiAKIHZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmRyYXdBcnJheXNJbnN0YW5jZWQoR0NHTGVudW0g
bW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHNpemVpIGNvdW50LCBHQ0dMc2l6ZWkgcHJpbWNvdW50
KQpAQCAtMjg2LDE0ICsyODYsMTQgQEAgdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6cmVhZFBpeGVs
c1JvYnVzdEFOR0xFKGludCB4LCBpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0cKICAgICBnbDo6
UmVhZFBpeGVsc1JvYnVzdEFOR0xFKHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwg
YnVmU2l6ZSwgbGVuZ3RoLCBjb2x1bW5zLCByb3dzLCBwaXhlbHMpOwogfQogCi12b2lkIEV4dGVu
c2lvbnNHTEFOR0xFOjp0ZXhJbWFnZTJEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBpbnQg
bGV2ZWwsIGludCBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVp
Z2h0LCBpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXpl
aSBidWZTaXplLCBjb25zdCB2b2lkICpwaXhlbHMpCit2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjp0
ZXhJbWFnZTJEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWwsIGludCBpbnRl
cm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBpbnQgYm9yZGVy
LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lk
PiBwaXhlbHMpCiB7CiAgICAgaWYgKCFtX2NvbnRleHQtPm1faXNGb3JXZWJHTDIpCiAgICAgICAg
IGludGVybmFsZm9ybWF0ID0gYWRqdXN0V2ViR0wxVGV4dHVyZUludGVybmFsRm9ybWF0KGludGVy
bmFsZm9ybWF0LCBmb3JtYXQsIHR5cGUpOwogICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4
dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZ2w6OlRleEltYWdlMkRSb2J1c3RB
TkdMRSh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgYm9yZGVy
LCBmb3JtYXQsIHR5cGUsIGJ1ZlNpemUsIHBpeGVscyk7CisgICAgZ2w6OlRleEltYWdlMkRSb2J1
c3RBTkdMRSh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgYm9y
ZGVyLCBmb3JtYXQsIHR5cGUsIHBpeGVscy5idWZTaXplLCBwaXhlbHMuZGF0YSk7CiB9CiAKIHZv
aWQgRXh0ZW5zaW9uc0dMQU5HTEU6OnRleFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xmbG9h
dCAqcGFyYW1zKQpAQCAtMzEyLDY0ICszMTIsNjQgQEAgdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6
dGV4UGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW0K
ICAgICBnbDo6VGV4UGFyYW1ldGVyaXZSb2J1c3RBTkdMRSh0YXJnZXQsIHBuYW1lLCBidWZTaXpl
LCBwYXJhbXMpOwogfQogCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjp0ZXhTdWJJbWFnZTJEUm9i
dXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWwsIGludCB4b2Zmc2V0LCBpbnQgeW9m
ZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQs
IEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCB2b2lkICpwaXhlbHMpCit2
b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjp0ZXhTdWJJbWFnZTJEUm9idXN0QU5HTEUoR0NHTGVudW0g
dGFyZ2V0LCBpbnQgbGV2ZWwsIGludCB4b2Zmc2V0LCBpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdp
ZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdD
R0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBwaXhlbHMpCiB7CiAgICAgaWYgKCFtX2NvbnRleHQtPm1h
a2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBnbDo6VGV4U3ViSW1h
Z2UyRFJvYnVzdEFOR0xFKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBo
ZWlnaHQsIGZvcm1hdCwgdHlwZSwgYnVmU2l6ZSwgcGl4ZWxzKTsKKyAgICBnbDo6VGV4U3ViSW1h
Z2UyRFJvYnVzdEFOR0xFKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBo
ZWlnaHQsIGZvcm1hdCwgdHlwZSwgcGl4ZWxzLmJ1ZlNpemUsIHBpeGVscy5kYXRhKTsKIH0KIAot
dm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Y29tcHJlc3NlZFRleEltYWdlMkRSb2J1c3RBTkdMRShH
Q0dMZW51bSB0YXJnZXQsIGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xz
aXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgaW50IGJvcmRlciwgR0NHTHNpemVpIGltYWdl
U2l6ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IHZvaWQqIGRhdGEpCit2b2lkIEV4dGVuc2lv
bnNHTEFOR0xFOjpjb21wcmVzc2VkVGV4SW1hZ2UyRFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdl
dCwgaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBH
Q0dMc2l6ZWkgaGVpZ2h0LCBpbnQgYm9yZGVyLCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMU3Bh
bjxjb25zdCBHQ0dMdm9pZD4gZGF0YSkKIHsKICAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRl
eHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGdsOjpDb21wcmVzc2VkVGV4SW1h
Z2UyRFJvYnVzdEFOR0xFKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVp
Z2h0LCBib3JkZXIsIGltYWdlU2l6ZSwgYnVmU2l6ZSwgZGF0YSk7CisgICAgZ2w6OkNvbXByZXNz
ZWRUZXhJbWFnZTJEUm9idXN0QU5HTEUodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdp
ZHRoLCBoZWlnaHQsIGJvcmRlciwgaW1hZ2VTaXplLCBkYXRhLmJ1ZlNpemUsIGRhdGEuZGF0YSk7
CiAgICAgbV9jb250ZXh0LT5tX3N0YXRlLnRleHR1cmVTZWVkQ291bnQuYWRkKG1fY29udGV4dC0+
bV9zdGF0ZS5jdXJyZW50Qm91bmRUZXh0dXJlKCkpOwogCiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dM
QU5HTEU6OmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0
LCBpbnQgbGV2ZWwsIGludCB4b2Zmc2V0LCBpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBH
Q0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdD
R0xzaXplaSBidWZTaXplLCBjb25zdCB2b2lkKiBkYXRhKQordm9pZCBFeHRlbnNpb25zR0xBTkdM
RTo6Y29tcHJlc3NlZFRleFN1YkltYWdlMkRSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIGlu
dCBsZXZlbCwgaW50IHhvZmZzZXQsIGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xz
aXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTFNw
YW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEpCiB7CiAgICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250
ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBnbDo6Q29tcHJlc3NlZFRleFN1
YkltYWdlMkRSb2J1c3RBTkdMRSh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0
aCwgaGVpZ2h0LCBmb3JtYXQsIGltYWdlU2l6ZSwgYnVmU2l6ZSwgZGF0YSk7CisgICAgZ2w6OkNv
bXByZXNzZWRUZXhTdWJJbWFnZTJEUm9idXN0QU5HTEUodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwg
eW9mZnNldCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCBpbWFnZVNpemUsIGRhdGEuYnVmU2l6ZSwg
ZGF0YS5kYXRhKTsKICAgICBtX2NvbnRleHQtPm1fc3RhdGUudGV4dHVyZVNlZWRDb3VudC5hZGQo
bV9jb250ZXh0LT5tX3N0YXRlLmN1cnJlbnRCb3VuZFRleHR1cmUoKSk7CiB9CiAKLXZvaWQgRXh0
ZW5zaW9uc0dMQU5HTEU6OmNvbXByZXNzZWRUZXhJbWFnZTNEUm9idXN0QU5HTEUoR0NHTGVudW0g
dGFyZ2V0LCBpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lk
dGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgaW50IGJvcmRlciwgR0NHTHNp
emVpIGltYWdlU2l6ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IHZvaWQqIGRhdGEpCit2b2lk
IEV4dGVuc2lvbnNHTEFOR0xFOjpjb21wcmVzc2VkVGV4SW1hZ2UzRFJvYnVzdEFOR0xFKEdDR0xl
bnVtIHRhcmdldCwgaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVp
IHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIGludCBib3JkZXIsIEdD
R0xzaXplaSBpbWFnZVNpemUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRhKQogewogICAg
IGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgZ2w6OkNvbXByZXNzZWRUZXhJbWFnZTNEUm9idXN0QU5HTEUodGFyZ2V0LCBsZXZlbCwg
aW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBib3JkZXIsIGltYWdlU2l6ZSwg
YnVmU2l6ZSwgZGF0YSk7CisgICAgZ2w6OkNvbXByZXNzZWRUZXhJbWFnZTNEUm9idXN0QU5HTEUo
dGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBib3Jk
ZXIsIGltYWdlU2l6ZSwgZGF0YS5idWZTaXplLCBkYXRhLmRhdGEpOwogfQogCi12b2lkIEV4dGVu
c2lvbnNHTEFOR0xFOjpjb21wcmVzc2VkVGV4U3ViSW1hZ2UzRFJvYnVzdEFOR0xFKEdDR0xlbnVt
IHRhcmdldCwgaW50IGxldmVsLCBpbnQgeG9mZnNldCwgaW50IHlvZmZzZXQsIGludCB6b2Zmc2V0
LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NH
TGVudW0gZm9ybWF0LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29u
c3Qgdm9pZCogZGF0YSkKK3ZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmNvbXByZXNzZWRUZXhTdWJJ
bWFnZTNEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWwsIGludCB4b2Zmc2V0
LCBpbnQgeW9mZnNldCwgaW50IHpvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhl
aWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFnZVNp
emUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRhKQogewogICAgIGlmICghbV9jb250ZXh0
LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZ2w6OkNvbXBy
ZXNzZWRUZXhTdWJJbWFnZTNEUm9idXN0QU5HTEUodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9m
ZnNldCwgem9mZnNldCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGZvcm1hdCwgaW1hZ2VTaXplLCBi
dWZTaXplLCBkYXRhKTsKKyAgICBnbDo6Q29tcHJlc3NlZFRleFN1YkltYWdlM0RSb2J1c3RBTkdM
RSh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB6b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0
LCBkZXB0aCwgZm9ybWF0LCBpbWFnZVNpemUsIGRhdGEuYnVmU2l6ZSwgZGF0YS5kYXRhKTsKIH0K
IAogCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjp0ZXhJbWFnZTNEUm9idXN0QU5HTEUoR0NHTGVu
dW0gdGFyZ2V0LCBpbnQgbGV2ZWwsIGludCBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRo
LCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIGludCBib3JkZXIsIEdDR0xlbnVt
IGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IHZvaWQgKnBp
eGVscykKK3ZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OnRleEltYWdlM0RSb2J1c3RBTkdMRShHQ0dM
ZW51bSB0YXJnZXQsIGludCBsZXZlbCwgaW50IGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lk
dGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgaW50IGJvcmRlciwgR0NHTGVu
dW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gcGl4ZWxz
KQogewogICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgZ2w6OlRleEltYWdlM0RSb2J1c3RBTkdMRSh0YXJnZXQsIGxldmVsLCBp
bnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGJvcmRlciwgZm9ybWF0LCB0eXBl
LCBidWZTaXplLCBwaXhlbHMpOworICAgIGdsOjpUZXhJbWFnZTNEUm9idXN0QU5HTEUodGFyZ2V0
LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBib3JkZXIsIGZv
cm1hdCwgdHlwZSwgcGl4ZWxzLmJ1ZlNpemUsIHBpeGVscy5kYXRhKTsKIH0KIAotdm9pZCBFeHRl
bnNpb25zR0xBTkdMRTo6dGV4U3ViSW1hZ2UzRFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwg
aW50IGxldmVsLCBpbnQgeG9mZnNldCwgaW50IHlvZmZzZXQsIGludCB6b2Zmc2V0LCBHQ0dMc2l6
ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGVudW0gZm9y
bWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3Qgdm9pZCAqcGl4ZWxz
KQordm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6dGV4U3ViSW1hZ2UzRFJvYnVzdEFOR0xFKEdDR0xl
bnVtIHRhcmdldCwgaW50IGxldmVsLCBpbnQgeG9mZnNldCwgaW50IHlvZmZzZXQsIGludCB6b2Zm
c2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwg
R0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4g
cGl4ZWxzKQogewogICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgZ2w6OlRleFN1YkltYWdlM0RSb2J1c3RBTkdMRSh0YXJnZXQs
IGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB6b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwg
Zm9ybWF0LCB0eXBlLCBidWZTaXplLCBwaXhlbHMpOworICAgIGdsOjpUZXhTdWJJbWFnZTNEUm9i
dXN0QU5HTEUodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgem9mZnNldCwgd2lkdGgs
IGhlaWdodCwgZGVwdGgsIGZvcm1hdCwgdHlwZSwgcGl4ZWxzLmJ1ZlNpemUsIHBpeGVscy5kYXRh
KTsKIH0KIAogdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0UXVlcnlpdlJvYnVzdEFOR0xFKEdD
R0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6
ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmgKaW5kZXggNTdi
YjkzYmM4NGMzMzU5MGZiY2Y0YjNmN2ExZWI1YTU1YzU5MjU2Yy4uYWRhZWFmOTEwMWMxNGY3ZGNk
NGY5OTkwODIwZmE5ZWEyNGJjODk0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5oCkBAIC01Miw3ICs1
Miw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGluc2VydEV2ZW50TWFya2VyRVhUKGNvbnN0IFN0cmlu
ZyYpIG92ZXJyaWRlOwogICAgIHZvaWQgcHVzaEdyb3VwTWFya2VyRVhUKGNvbnN0IFN0cmluZyYp
IG92ZXJyaWRlOwogICAgIHZvaWQgcG9wR3JvdXBNYXJrZXJFWFQodm9pZCkgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCBkcmF3QnVmZmVyc0VYVChHQ0dMc2l6ZWksIGNvbnN0IEdDR0xlbnVtKikgb3ZlcnJp
ZGU7CisgICAgdm9pZCBkcmF3QnVmZmVyc0VYVChHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4pIG92
ZXJyaWRlOwogCiAgICAgU3RyaW5nIGdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRShQbGF0
Zm9ybUdMT2JqZWN0KSBvdmVycmlkZTsKIApAQCAtNzQsMTcgKzc0LDE3IEBAIHB1YmxpYzoKIAog
ICAgIC8vIEdMX0FOR0xFX3JvYnVzdF9jbGllbnRfbWVtb3J5CiAgICAgdm9pZCByZWFkUGl4ZWxz
Um9idXN0QU5HTEUoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNp
emVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xzaXplaSAqY29sdW1ucywgR0NHTHNpemVpICpy
b3dzLCB2b2lkICpwaXhlbHMpIG92ZXJyaWRlOwotICAgIHZvaWQgdGV4SW1hZ2UyRFJvYnVzdEFO
R0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCBpbnRlcm5hbGZvcm1h
dCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NH
TGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3Qgdm9p
ZCAqcGl4ZWxzKSBvdmVycmlkZTsKKyAgICB2b2lkIHRleEltYWdlMkRSb2J1c3RBTkdMRShHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgaW50ZXJuYWxmb3JtYXQsIEdDR0xz
aXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xlbnVtIGZv
cm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IHBpeGVscykgb3Zl
cnJpZGU7CiAgICAgdm9pZCB0ZXhQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMZmxvYXQgKnBh
cmFtcykgb3ZlcnJpZGU7CiAgICAgdm9pZCB0ZXhQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dM
aW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgdGV4U3ViSW1hZ2UyRFJvYnVzdEFOR0xF
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50
IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9y
bWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3Qgdm9pZCAqcGl4ZWxz
KSBvdmVycmlkZTsKLSAgICB2b2lkIGNvbXByZXNzZWRUZXhJbWFnZTJEUm9idXN0QU5HTEUoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NH
THNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTHNpemVp
IGltYWdlU2l6ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0x2b2lkKiBkYXRhKSBvdmVy
cmlkZTsKLSAgICB2b2lkIGNvbXByZXNzZWRUZXhTdWJJbWFnZTJEUm9idXN0QU5HTEUoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNl
dCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdD
R0xzaXplaSBpbWFnZVNpemUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMdm9pZCogZGF0
YSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBjb21wcmVzc2VkVGV4SW1hZ2UzRFJvYnVzdEFOR0xFKEdD
R0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdD
R0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMaW50
IGJvcmRlciwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdD
R0x2b2lkKiBkYXRhKSBvdmVycmlkZTsKLSAgICB2b2lkIGNvbXByZXNzZWRUZXhTdWJJbWFnZTNE
Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZz
ZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTGludCB6b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdD
R0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMc2l6
ZWkgaW1hZ2VTaXplLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTHZvaWQqIGRhdGEpIG92
ZXJyaWRlOwotCi0gICAgdm9pZCB0ZXhJbWFnZTNEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgs
IEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGludCBib3JkZXIsIEdDR0xl
bnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IHZvaWQg
KnBpeGVscykgb3ZlcnJpZGU7Ci0gICAgdm9pZCB0ZXhTdWJJbWFnZTNEUm9idXN0QU5HTEUoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9m
ZnNldCwgR0NHTGludCB6b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQs
IEdDR0xzaXplaSBkZXB0aCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgY29uc3Qgdm9pZCAqcGl4ZWxzKSBvdmVycmlkZTsKKyAgICB2b2lkIHRleFN1
YkltYWdlMkRSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xp
bnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBo
ZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48Y29uc3QgR0NH
THZvaWQ+IHBpeGVscykgb3ZlcnJpZGU7CisgICAgdm9pZCBjb21wcmVzc2VkVGV4SW1hZ2UyRFJv
YnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJu
YWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3Jk
ZXIsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRhKSBv
dmVycmlkZTsKKyAgICB2b2lkIGNvbXByZXNzZWRUZXhTdWJJbWFnZTJEUm9idXN0QU5HTEUoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9m
ZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQs
IEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRhKSBvdmVy
cmlkZTsKKyAgICB2b2lkIGNvbXByZXNzZWRUZXhJbWFnZTNEUm9idXN0QU5HTEUoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVp
IHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xpbnQgYm9yZGVy
LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gZGF0YSkgb3Zl
cnJpZGU7CisgICAgdm9pZCBjb21wcmVzc2VkVGV4U3ViSW1hZ2UzRFJvYnVzdEFOR0xFKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZz
ZXQsIEdDR0xpbnQgem9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBH
Q0dMc2l6ZWkgZGVwdGgsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NH
TFNwYW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEpIG92ZXJyaWRlOworCisgICAgdm9pZCB0ZXhJbWFn
ZTNEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IGlu
dGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXpl
aSBkZXB0aCwgR0NHTGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwg
R0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IHBpeGVscykgb3ZlcnJpZGU7CisgICAgdm9pZCB0ZXhT
dWJJbWFnZTNEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dM
aW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTGludCB6b2Zmc2V0LCBHQ0dMc2l6ZWkg
d2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGVudW0gZm9ybWF0
LCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gcGl4ZWxzKSBvdmVycmlk
ZTsKICAgICB2b2lkIGdldFF1ZXJ5aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xl
bnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQg
KnBhcmFtcykgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRRdWVyeU9iamVjdHVpdlJvYnVzdEFOR0xF
KEdDR0x1aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXpl
aSAqbGVuZ3RoLCBHQ0dMdWludCAqcGFyYW1zKSBvdmVycmlkZTsKICAgICB2b2lkIGdldEJ1ZmZl
clBvaW50ZXJ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NH
THNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCB2b2lkICoqcGFyYW1zKSBvdmVycmlk
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dy
YXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAKaW5kZXggZmViMGJlYmVmMzE1ZjBl
MTM4YmE5OWQ2MmViNmNmY2VkNTE5MzY3YS4uNzNmNGM0ZjMwM2FjNTBkN2FmYzg2YTI5MjBhNDYx
NjZkY2E4ZTBiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAKQEAgLTM2Miwx
NCArMzYyLDE5IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFNoYWRlclByZWNp
c2lvbkZvcm1hdChHQ0dMZW51bSBzaGFkZXJUeXBlLCBHQ0dMCiAgICAgZ2w6OkdldFNoYWRlclBy
ZWNpc2lvbkZvcm1hdChzaGFkZXJUeXBlLCBwcmVjaXNpb25UeXBlLCByYW5nZS5kYXRhLCBwcmVj
aXNpb24pOwogfQogCi1ib29sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp0ZXhJbWFnZTJEKEdD
R0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdD
R0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xlbnVt
IGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgY29uc3Qgdm9pZCogcGl4ZWxzKQorYm9vbCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6dGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2
ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBo
ZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdD
R0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBwaXhlbHMpCiB7Ci0gICAgaWYgKHdpZHRoICYmIGhlaWdo
dCAmJiAhcGl4ZWxzKSB7CisgICAgaWYgKHdpZHRoICYmIGhlaWdodCAmJiAhcGl4ZWxzLmRhdGEp
IHsKICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoSU5WQUxJRF9WQUxVRSk7CiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICB9CisgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCi0gICAgdGV4SW1hZ2UyRERpcmVjdCh0YXJnZXQsIGxldmVsLCBp
bnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgYm9yZGVyLCBmb3JtYXQsIHR5cGUsIHBpeGVs
cyk7CisgICAgaWYgKCFtX2lzRm9yV2ViR0wyICYmIG1fZXh0ZW5zaW9ucykKKyAgICAgICAgaW50
ZXJuYWxmb3JtYXQgPSBtX2V4dGVuc2lvbnMtPmFkanVzdFdlYkdMMVRleHR1cmVJbnRlcm5hbEZv
cm1hdChpbnRlcm5hbGZvcm1hdCwgZm9ybWF0LCB0eXBlKTsKKyAgICBnbDo6VGV4SW1hZ2UyRFJv
YnVzdEFOR0xFKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBi
b3JkZXIsIGZvcm1hdCwgdHlwZSwgcGl4ZWxzLmJ1ZlNpemUsIHBpeGVscy5kYXRhKTsKKyAgICBt
X3N0YXRlLnRleHR1cmVTZWVkQ291bnQuYWRkKG1fc3RhdGUuY3VycmVudEJvdW5kVGV4dHVyZSgp
KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtODM1LDIwICs4NDAsMjAgQEAgdm9pZCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6YnVmZmVyRGF0YShHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXpl
aXB0ciBzaXplLCBHQ0cKICAgICBnbDo6QnVmZmVyRGF0YSh0YXJnZXQsIHNpemUsIDAsIHVzYWdl
KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6YnVmZmVyRGF0YShHQ0dMZW51
bSB0YXJnZXQsIEdDR0xzaXplaXB0ciBzaXplLCBjb25zdCB2b2lkKiBkYXRhLCBHQ0dMZW51bSB1
c2FnZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmJ1ZmZlckRhdGEoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gZGF0YSwgR0NHTGVudW0gdXNhZ2UpCiB7
CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
Z2w6OkJ1ZmZlckRhdGEodGFyZ2V0LCBzaXplLCBkYXRhLCB1c2FnZSk7CisgICAgZ2w6OkJ1ZmZl
ckRhdGEodGFyZ2V0LCBkYXRhLmJ1ZlNpemUsIGRhdGEuZGF0YSwgdXNhZ2UpOwogfQogCi12b2lk
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpidWZmZXJTdWJEYXRhKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGludHB0ciBvZmZzZXQsIEdDR0xzaXplaXB0ciBzaXplLCBjb25zdCB2b2lkKiBkYXRhKQor
dm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6YnVmZmVyU3ViRGF0YShHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xpbnRwdHIgb2Zmc2V0LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gZGF0YSkKIHsK
ICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBn
bDo6QnVmZmVyU3ViRGF0YSh0YXJnZXQsIG9mZnNldCwgc2l6ZSwgZGF0YSk7CisgICAgZ2w6OkJ1
ZmZlclN1YkRhdGEodGFyZ2V0LCBvZmZzZXQsIGRhdGEuYnVmU2l6ZSwgZGF0YS5kYXRhKTsKIH0K
IAogdm9pZCogR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Om1hcEJ1ZmZlclJhbmdlKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGludHB0ciBvZmZzZXQsIEdDR0xzaXplaXB0ciBsZW5ndGgsIEdDR0xiaXRm
aWVsZCBhY2Nlc3MpCkBAIC0xNTAxLDEyICsxNTA2LDEyIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OnVuaWZvcm0xZihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMZmxvYXQgdjApCiAgICAg
Z2w6OlVuaWZvcm0xZihsb2NhdGlvbiwgdjApOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjp1bmlmb3JtMWZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBzaXplLCBjb25z
dCBHQ0dMZmxvYXQqIGFycmF5KQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9y
bTFmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGFycmF5KQog
ewogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAg
IGdsOjpVbmlmb3JtMWZ2KGxvY2F0aW9uLCBzaXplLCBhcnJheSk7CisgICAgZ2w6OlVuaWZvcm0x
ZnYobG9jYXRpb24sIGFycmF5LmJ1ZlNpemUsIGFycmF5LmRhdGEpOwogfQogCiB2b2lkIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMmYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGZsb2F0
IHYwLCBHQ0dMZmxvYXQgdjEpCkBAIC0xNTE3LDEzICsxNTIyLDEzIEBAIHZvaWQgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OnVuaWZvcm0yZihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMZmxvYXQgdjAs
IEdDR0xmbG9hCiAgICAgZ2w6OlVuaWZvcm0yZihsb2NhdGlvbiwgdjAsIHYxKTsKIH0KIAotdm9p
ZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTJmdihHQ0dMaW50IGxvY2F0aW9uLCBH
Q0dMc2l6ZWkgc2l6ZSwgY29uc3QgR0NHTGZsb2F0KiBhcnJheSkKK3ZvaWQgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OnVuaWZvcm0yZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3Qg
R0NHTGZsb2F0PiBhcnJheSkKIHsKLSAgICAvLyBGSVhNRTogbGVuZ3RoIG5lZWRzIHRvIGJlIGEg
bXVsdGlwbGUgb2YgMi4KKyAgICBBU1NFUlQoIShhcnJheS5idWZTaXplICUgMikpOwogICAgIGlm
ICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGdsOjpVbmlm
b3JtMmZ2KGxvY2F0aW9uLCBzaXplLCBhcnJheSk7CisgICAgZ2w6OlVuaWZvcm0yZnYobG9jYXRp
b24sIGFycmF5LmJ1ZlNpemUgLyAyLCBhcnJheS5kYXRhKTsKIH0KIAogdm9pZCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6dW5pZm9ybTNmKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xmbG9hdCB2MCwg
R0NHTGZsb2F0IHYxLCBHQ0dMZmxvYXQgdjIpCkBAIC0xNTM0LDEzICsxNTM5LDEzIEBAIHZvaWQg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0zZihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dM
ZmxvYXQgdjAsIEdDR0xmbG9hCiAgICAgZ2w6OlVuaWZvcm0zZihsb2NhdGlvbiwgdjAsIHYxLCB2
Mik7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0zZnYoR0NHTGlu
dCBsb2NhdGlvbiwgR0NHTHNpemVpIHNpemUsIGNvbnN0IEdDR0xmbG9hdCogYXJyYXkpCit2b2lk
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtM2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdD
R0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gYXJyYXkpCiB7Ci0gICAgLy8gRklYTUU6IGxlbmd0aCBu
ZWVkcyB0byBiZSBhIG11bHRpcGxlIG9mIDMuCisgICAgQVNTRVJUKCEoYXJyYXkuYnVmU2l6ZSAl
IDMpKTsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBnbDo6VW5pZm9ybTNmdihsb2NhdGlvbiwgc2l6ZSwgYXJyYXkpOworICAgIGdsOjpVbmlm
b3JtM2Z2KGxvY2F0aW9uLCBhcnJheS5idWZTaXplIC8gMywgYXJyYXkuZGF0YSk7CiB9CiAKIHZv
aWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm00ZihHQ0dMaW50IGxvY2F0aW9uLCBH
Q0dMZmxvYXQgdjAsIEdDR0xmbG9hdCB2MSwgR0NHTGZsb2F0IHYyLCBHQ0dMZmxvYXQgdjMpCkBA
IC0xNTUxLDEzICsxNTU2LDEzIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZv
cm00ZihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMZmxvYXQgdjAsIEdDR0xmbG9hCiAgICAgZ2w6OlVu
aWZvcm00Zihsb2NhdGlvbiwgdjAsIHYxLCB2MiwgdjMpOwogfQogCi12b2lkIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjp1bmlmb3JtNGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBzaXpl
LCBjb25zdCBHQ0dMZmxvYXQqIGFycmF5KQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
dW5pZm9ybTRmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGFy
cmF5KQogewotICAgIC8vIEZJWE1FOiBsZW5ndGggbmVlZHMgdG8gYmUgYSBtdWx0aXBsZSBvZiA0
LgorICAgIEFTU0VSVCghKGFycmF5LmJ1ZlNpemUgJSA0KSk7CiAgICAgaWYgKCFtYWtlQ29udGV4
dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZ2w6OlVuaWZvcm00ZnYobG9jYXRp
b24sIHNpemUsIGFycmF5KTsKKyAgICBnbDo6VW5pZm9ybTRmdihsb2NhdGlvbiwgYXJyYXkuYnVm
U2l6ZSAvIDQsIGFycmF5LmRhdGEpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
Ojp1bmlmb3JtMWkoR0NHTGludCBsb2NhdGlvbiwgR0NHTGludCB2MCkKQEAgLTE1NjgsMTIgKzE1
NzMsMTIgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTFpKEdDR0xpbnQg
bG9jYXRpb24sIEdDR0xpbnQgdjApCiAgICAgZ2w6OlVuaWZvcm0xaShsb2NhdGlvbiwgdjApOwog
fQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMWl2KEdDR0xpbnQgbG9j
YXRpb24sIEdDR0xzaXplaSBzaXplLCBjb25zdCBHQ0dMaW50KiBhcnJheSkKK3ZvaWQgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0xaXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48
Y29uc3QgR0NHTGludD4gYXJyYXkpCiB7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgZ2w6OlVuaWZvcm0xaXYobG9jYXRpb24sIHNpemUsIGFy
cmF5KTsKKyAgICBnbDo6VW5pZm9ybTFpdihsb2NhdGlvbiwgYXJyYXkuYnVmU2l6ZSwgYXJyYXku
ZGF0YSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0yaShHQ0dM
aW50IGxvY2F0aW9uLCBHQ0dMaW50IHYwLCBHQ0dMaW50IHYxKQpAQCAtMTU4NCwxMyArMTU4OSwx
MyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMmkoR0NHTGludCBsb2Nh
dGlvbiwgR0NHTGludCB2MCwgR0NHTGludCB2MQogICAgIGdsOjpVbmlmb3JtMmkobG9jYXRpb24s
IHYwLCB2MSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0yaXYo
R0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIHNpemUsIGNvbnN0IEdDR0xpbnQqIGFycmF5KQor
dm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTJpdihHQ0dMaW50IGxvY2F0aW9u
LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50PiBhcnJheSkKIHsKLSAgICAvLyBGSVhNRTogbGVuZ3Ro
IG5lZWRzIHRvIGJlIGEgbXVsdGlwbGUgb2YgMi4KKyAgICBBU1NFUlQoIShhcnJheS5idWZTaXpl
ICUgMikpOwogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIGdsOjpVbmlmb3JtMml2KGxvY2F0aW9uLCBzaXplLCBhcnJheSk7CisgICAgZ2w6OlVu
aWZvcm0yaXYobG9jYXRpb24sIGFycmF5LmJ1ZlNpemUgLyAyLCBhcnJheS5kYXRhKTsKIH0KIAog
dm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTNpKEdDR0xpbnQgbG9jYXRpb24s
IEdDR0xpbnQgdjAsIEdDR0xpbnQgdjEsIEdDR0xpbnQgdjIpCkBAIC0xNjAxLDEzICsxNjA2LDEz
IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0zaShHQ0dMaW50IGxvY2F0
aW9uLCBHQ0dMaW50IHYwLCBHQ0dMaW50IHYxCiAgICAgZ2w6OlVuaWZvcm0zaShsb2NhdGlvbiwg
djAsIHYxLCB2Mik7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0z
aXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIHNpemUsIGNvbnN0IEdDR0xpbnQqIGFycmF5
KQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTNpdihHQ0dMaW50IGxvY2F0
aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50PiBhcnJheSkKIHsKLSAgICAvLyBGSVhNRTogbGVu
Z3RoIG5lZWRzIHRvIGJlIGEgbXVsdGlwbGUgb2YgMy4KKyAgICBBU1NFUlQoIShhcnJheS5idWZT
aXplICUgMykpOwogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIGdsOjpVbmlmb3JtM2l2KGxvY2F0aW9uLCBzaXplLCBhcnJheSk7CisgICAgZ2w6
OlVuaWZvcm0zaXYobG9jYXRpb24sIGFycmF5LmJ1ZlNpemUgLyAzLCBhcnJheS5kYXRhKTsKIH0K
IAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTRpKEdDR0xpbnQgbG9jYXRp
b24sIEdDR0xpbnQgdjAsIEdDR0xpbnQgdjEsIEdDR0xpbnQgdjIsIEdDR0xpbnQgdjMpCkBAIC0x
NjE4LDQwICsxNjIzLDM5IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm00
aShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMaW50IHYwLCBHQ0dMaW50IHYxCiAgICAgZ2w6OlVuaWZv
cm00aShsb2NhdGlvbiwgdjAsIHYxLCB2MiwgdjMpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjp1bmlmb3JtNGl2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBzaXplLCBj
b25zdCBHQ0dMaW50KiBhcnJheSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZv
cm00aXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gYXJyYXkpCiB7
Ci0gICAgLy8gRklYTUU6IGxlbmd0aCBuZWVkcyB0byBiZSBhIG11bHRpcGxlIG9mIDQuCisgICAg
QVNTRVJUKCEoYXJyYXkuYnVmU2l6ZSAlIDQpKTsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVu
dCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBnbDo6VW5pZm9ybTRpdihsb2NhdGlvbiwgc2l6
ZSwgYXJyYXkpOworICAgIGdsOjpVbmlmb3JtNGl2KGxvY2F0aW9uLCBhcnJheS5idWZTaXplIC8g
NCwgYXJyYXkuZGF0YSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZv
cm1NYXRyaXgyZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIHNpemUsIEdDR0xib29sZWFu
IHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiBhcnJheSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXgyZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4g
dHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGFycmF5KQogewotICAgIC8vIEZJ
WE1FOiBsZW5ndGggbmVlZHMgdG8gYmUgYSBtdWx0aXBsZSBvZiA0LgogICAgIGlmICghbWFrZUNv
bnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGdsOjpVbmlmb3JtTWF0cml4
MmZ2KGxvY2F0aW9uLCBzaXplLCB0cmFuc3Bvc2UsIGFycmF5KTsKKyAgICBnbDo6VW5pZm9ybU1h
dHJpeDJmdihsb2NhdGlvbiwgYXJyYXkuYnVmU2l6ZSAvIDQsIHRyYW5zcG9zZSwgYXJyYXkuZGF0
YSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXgzZnYo
R0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIHNpemUsIEdDR0xib29sZWFuIHRyYW5zcG9zZSwg
Y29uc3QgR0NHTGZsb2F0KiBhcnJheSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVu
aWZvcm1NYXRyaXgzZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBH
Q0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGFycmF5KQogewotICAgIC8vIEZJWE1FOiBsZW5ndGgg
bmVlZHMgdG8gYmUgYSBtdWx0aXBsZSBvZiA5LgorICAgIEFTU0VSVCghKGFycmF5LmJ1ZlNpemUg
JSA5KSk7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgZ2w6OlVuaWZvcm1NYXRyaXgzZnYobG9jYXRpb24sIHNpemUsIHRyYW5zcG9zZSwgYXJy
YXkpOworICAgIGdsOjpVbmlmb3JtTWF0cml4M2Z2KGxvY2F0aW9uLCBhcnJheS5idWZTaXplIC8g
OSwgdHJhbnNwb3NlLCBhcnJheS5kYXRhKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6dW5pZm9ybU1hdHJpeDRmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgc2l6ZSwg
R0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHQ0dMZmxvYXQqIGFycmF5KQordm9pZCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybU1hdHJpeDRmdihHQ0dMaW50IGxvY2F0aW9uLCBH
Q0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gYXJyYXkpCiB7
Ci0gICAgLy8gRklYTUU6IGxlbmd0aCBuZWVkcyB0byBiZSBhIG11bHRpcGxlIG9mIDE2LgorICAg
IEFTU0VSVCghKGFycmF5LmJ1ZlNpemUgJSAxNikpOwogICAgIGlmICghbWFrZUNvbnRleHRDdXJy
ZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGdsOjpVbmlmb3JtTWF0cml4NGZ2KGxvY2F0
aW9uLCBzaXplLCB0cmFuc3Bvc2UsIGFycmF5KTsKKyAgICBnbDo6VW5pZm9ybU1hdHJpeDRmdihs
b2NhdGlvbiwgYXJyYXkuYnVmU2l6ZSAvIDE2LCB0cmFuc3Bvc2UsIGFycmF5LmRhdGEpOwogfQog
CiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1c2VQcm9ncmFtKFBsYXRmb3JtR0xPYmpl
Y3QgcHJvZ3JhbSkKQEAgLTE2ODAsMTIgKzE2ODQsMTIgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6dmVydGV4QXR0cmliMWYoR0NHTHVpbnQgaW5kZXgsIEdDR0xmbG9hdCB2MCkKICAg
ICBnbDo6VmVydGV4QXR0cmliMWYoaW5kZXgsIHYwKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6dmVydGV4QXR0cmliMWZ2KEdDR0x1aW50IGluZGV4LCBjb25zdCBHQ0dMZmxv
YXQqIGFycmF5KQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliMWZ2
KEdDR0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQsIDE+IGFycmF5KQogewog
ICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGds
OjpWZXJ0ZXhBdHRyaWIxZnYoaW5kZXgsIGFycmF5KTsKKyAgICBnbDo6VmVydGV4QXR0cmliMWZ2
KGluZGV4LCBhcnJheS5kYXRhKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
dmVydGV4QXR0cmliMmYoR0NHTHVpbnQgaW5kZXgsIEdDR0xmbG9hdCB2MCwgR0NHTGZsb2F0IHYx
KQpAQCAtMTY5NiwxMiArMTcwMCwxMiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2
ZXJ0ZXhBdHRyaWIyZihHQ0dMdWludCBpbmRleCwgR0NHTGZsb2F0IHYwLCBHQ0dMZgogICAgIGds
OjpWZXJ0ZXhBdHRyaWIyZihpbmRleCwgdjAsIHYxKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6dmVydGV4QXR0cmliMmZ2KEdDR0x1aW50IGluZGV4LCBjb25zdCBHQ0dMZmxv
YXQqIGFycmF5KQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliMmZ2
KEdDR0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQsIDI+IGFycmF5KQogewog
ICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGds
OjpWZXJ0ZXhBdHRyaWIyZnYoaW5kZXgsIGFycmF5KTsKKyAgICBnbDo6VmVydGV4QXR0cmliMmZ2
KGluZGV4LCBhcnJheS5kYXRhKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
dmVydGV4QXR0cmliM2YoR0NHTHVpbnQgaW5kZXgsIEdDR0xmbG9hdCB2MCwgR0NHTGZsb2F0IHYx
LCBHQ0dMZmxvYXQgdjIpCkBAIC0xNzEyLDEyICsxNzE2LDEyIEBAIHZvaWQgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYjNmKEdDR0x1aW50IGluZGV4LCBHQ0dMZmxvYXQgdjAs
IEdDR0xmCiAgICAgZ2w6OlZlcnRleEF0dHJpYjNmKGluZGV4LCB2MCwgdjEsIHYyKTsKIH0KIAot
dm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliM2Z2KEdDR0x1aW50IGlu
ZGV4LCBjb25zdCBHQ0dMZmxvYXQqIGFycmF5KQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6dmVydGV4QXR0cmliM2Z2KEdDR0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxv
YXQsIDM+IGFycmF5KQogewogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIGdsOjpWZXJ0ZXhBdHRyaWIzZnYoaW5kZXgsIGFycmF5KTsKKyAgICBn
bDo6VmVydGV4QXR0cmliM2Z2KGluZGV4LCBhcnJheS5kYXRhKTsKIH0KIAogdm9pZCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliNGYoR0NHTHVpbnQgaW5kZXgsIEdDR0xmbG9h
dCB2MCwgR0NHTGZsb2F0IHYxLCBHQ0dMZmxvYXQgdjIsIEdDR0xmbG9hdCB2MykKQEAgLTE3Mjgs
MTIgKzE3MzIsMTIgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmli
NGYoR0NHTHVpbnQgaW5kZXgsIEdDR0xmbG9hdCB2MCwgR0NHTGYKICAgICBnbDo6VmVydGV4QXR0
cmliNGYoaW5kZXgsIHYwLCB2MSwgdjIsIHYzKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6dmVydGV4QXR0cmliNGZ2KEdDR0x1aW50IGluZGV4LCBjb25zdCBHQ0dMZmxvYXQq
IGFycmF5KQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliNGZ2KEdD
R0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQsIDQ+IGFycmF5KQogewogICAg
IGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGdsOjpW
ZXJ0ZXhBdHRyaWI0ZnYoaW5kZXgsIGFycmF5KTsKKyAgICBnbDo6VmVydGV4QXR0cmliNGZ2KGlu
ZGV4LCBhcnJheS5kYXRhKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVy
dGV4QXR0cmliUG9pbnRlcihHQ0dMdWludCBpbmRleCwgR0NHTGludCBzaXplLCBHQ0dMZW51bSB0
eXBlLCBHQ0dMYm9vbGVhbiBub3JtYWxpemVkLCBHQ0dMc2l6ZWkgc3RyaWRlLCBHQ0dMaW50cHRy
IG9mZnNldCkKQEAgLTIwMjksMTMgKzIwMzMsMTMgQEAgR0NHTHNpemVpcHRyIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpnZXRWZXJ0ZXhBdHRyaWJPZmZzZXQoR0NHTHVpbnQgaW5kZXgsIEdDR0wK
ICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTHNpemVpcHRyPihyZWludGVycHJldF9jYXN0PGlu
dHB0cl90Pihwb2ludGVyKSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnRl
eFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmYs
IEdDR0xpbnQgeW9mZiwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51
bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIGNvbnN0IHZvaWQqIHBpeGVscykKK3ZvaWQgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OnRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50
IGxldmVsLCBHQ0dMaW50IHhvZmYsIEdDR0xpbnQgeW9mZiwgR0NHTHNpemVpIHdpZHRoLCBHQ0dM
c2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPGNv
bnN0IEdDR0x2b2lkPiBwaXhlbHMpCiB7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gRklYTUU6IHdlIHdpbGwgbmVlZCB0byBkZWFsIHdp
dGggUGl4ZWxTdG9yZSBwYXJhbXMgd2hlbiBkZWFsaW5nIHdpdGggaW1hZ2UgYnVmZmVycyB0aGF0
IGRpZmZlciBmcm9tIHRoZSBzdWJpbWFnZSBzaXplLgotICAgIGdsOjpUZXhTdWJJbWFnZTJEKHRh
cmdldCwgbGV2ZWwsIHhvZmYsIHlvZmYsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgcGl4
ZWxzKTsKKyAgICBnbDo6VGV4U3ViSW1hZ2UyRFJvYnVzdEFOR0xFKHRhcmdldCwgbGV2ZWwsIHhv
ZmYsIHlvZmYsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgcGl4ZWxzLmJ1ZlNpemUsIHBp
eGVscy5kYXRhKTsKICAgICBtX3N0YXRlLnRleHR1cmVTZWVkQ291bnQuYWRkKG1fc3RhdGUuY3Vy
cmVudEJvdW5kVGV4dHVyZSgpKTsKIH0KIApAQCAtMjIwMywxNyArMjIwNyw2IEBAIHZvaWQgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OmRpc3BhdGNoQ29udGV4dENoYW5nZWROb3RpZmljYXRpb24o
KQogICAgICAgICBjbGllbnQtPmRpc3BhdGNoQ29udGV4dENoYW5nZWROb3RpZmljYXRpb24oKTsK
IH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dGV4SW1hZ2UyRERpcmVjdChHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dM
c2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBm
b3JtYXQsIEdDR0xlbnVtIHR5cGUsIGNvbnN0IHZvaWQqIHBpeGVscykKLXsKLSAgICBpZiAoIW1h
a2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoIW1faXNGb3JX
ZWJHTDIgJiYgbV9leHRlbnNpb25zKQotICAgICAgICBpbnRlcm5hbGZvcm1hdCA9IG1fZXh0ZW5z
aW9ucy0+YWRqdXN0V2ViR0wxVGV4dHVyZUludGVybmFsRm9ybWF0KGludGVybmFsZm9ybWF0LCBm
b3JtYXQsIHR5cGUpOwotICAgIGdsOjpUZXhJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIGludGVybmFs
Zm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIsIGZvcm1hdCwgdHlwZSwgcGl4ZWxzKTsKLSAg
ICBtX3N0YXRlLnRleHR1cmVTZWVkQ291bnQuYWRkKG1fc3RhdGUuY3VycmVudEJvdW5kVGV4dHVy
ZSgpKTsKLX0KLQogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6ZHJhd0FycmF5c0luc3Rh
bmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xz
aXplaSBwcmltY291bnQpCiB7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKQEAgLTI0
MzYsMjAgKzI0MjksMjAgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6ZnJhbWVidWZm
ZXJUZXh0dXJlTGF5ZXIoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bQogICAgIGdsOjpGcmFtZWJ1
ZmZlclRleHR1cmVMYXllcih0YXJnZXQsIGF0dGFjaG1lbnQsIHRleHR1cmUsIGxldmVsLCBsYXll
cik7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmludmFsaWRhdGVGcmFtZWJ1
ZmZlcihHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaSBudW1BdHRhY2htZW50cywgY29uc3QgR0NH
TGVudW0qIGF0dGFjaG1lbnRzKQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6aW52YWxp
ZGF0ZUZyYW1lYnVmZmVyKEdDR0xlbnVtIHRhcmdldCwgR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+
IGF0dGFjaG1lbnRzKQogewogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIGdsOjpJbnZhbGlkYXRlRnJhbWVidWZmZXIodGFyZ2V0LCBudW1BdHRh
Y2htZW50cywgYXR0YWNobWVudHMpOworICAgIGdsOjpJbnZhbGlkYXRlRnJhbWVidWZmZXIodGFy
Z2V0LCBhdHRhY2htZW50cy5idWZTaXplLCBhdHRhY2htZW50cy5kYXRhKTsKIH0KIAotdm9pZCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6aW52YWxpZGF0ZVN1YkZyYW1lYnVmZmVyKEdDR0xlbnVt
IHRhcmdldCwgR0NHTHNpemVpIG51bUF0dGFjaG1lbnRzLCBjb25zdCBHQ0dMZW51bSogYXR0YWNo
bWVudHMsIEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBo
ZWlnaHQpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjppbnZhbGlkYXRlU3ViRnJhbWVi
dWZmZXIoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4gYXR0YWNobWVu
dHMsIEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWln
aHQpCiB7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgZ2w6OkludmFsaWRhdGVTdWJGcmFtZWJ1ZmZlcih0YXJnZXQsIG51bUF0dGFjaG1lbnRz
LCBhdHRhY2htZW50cywgeCwgeSwgd2lkdGgsIGhlaWdodCk7CisgICAgZ2w6OkludmFsaWRhdGVT
dWJGcmFtZWJ1ZmZlcih0YXJnZXQsIGF0dGFjaG1lbnRzLmJ1ZlNpemUsIGF0dGFjaG1lbnRzLmRh
dGEsIHgsIHksIHdpZHRoLCBoZWlnaHQpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpyZWFkQnVmZmVyKEdDR0xlbnVtIHNyYykKQEAgLTI1MTcsODQgKzI1MTAsOTMgQEAgdm9p
ZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTR1aShHQ0dMaW50IGxvY2F0aW9uLCBH
Q0dMdWludCB2MCwgR0NHTHVpbnQKICAgICBnbDo6VW5pZm9ybTR1aShsb2NhdGlvbiwgdjAsIHYx
LCB2MiwgdjMpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMXVp
dihHQ0dMaW50IGxvY2F0aW9uLCBjb25zdCBHQ0dMdWludCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zm
c2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1
bmlmb3JtMXVpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdWludD4gZGF0
YSkKIHsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBnbDo6VW5pZm9ybTF1aXYobG9jYXRpb24sIHNyY0xlbmd0aCwgZGF0YSArIHNyY09mZnNl
dCk7CisgICAgZ2w6OlVuaWZvcm0xdWl2KGxvY2F0aW9uLCBkYXRhLmJ1ZlNpemUsIGRhdGEuZGF0
YSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0ydWl2KEdDR0xp
bnQgbG9jYXRpb24sIGNvbnN0IEdDR0x1aW50KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdD
R0x1aW50IHNyY0xlbmd0aCkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0y
dWl2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0x1aW50PiBkYXRhKQogewor
ICAgIEFTU0VSVCghKGRhdGEuYnVmU2l6ZSAlIDIpKTsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3Vy
cmVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBnbDo6VW5pZm9ybTJ1aXYobG9jYXRpb24s
IHNyY0xlbmd0aCwgZGF0YSArIHNyY09mZnNldCk7CisgICAgZ2w6OlVuaWZvcm0ydWl2KGxvY2F0
aW9uLCBkYXRhLmJ1ZlNpemUgLyAyLCBkYXRhLmRhdGEpOwogfQogCi12b2lkIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjp1bmlmb3JtM3VpdihHQ0dMaW50IGxvY2F0aW9uLCBjb25zdCBHQ0dMdWlu
dCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCit2b2lkIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtM3VpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dM
U3Bhbjxjb25zdCBHQ0dMdWludD4gZGF0YSkKIHsKKyAgICBBU1NFUlQoIShkYXRhLmJ1ZlNpemUg
JSAzKSk7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgZ2w6OlVuaWZvcm0zdWl2KGxvY2F0aW9uLCBzcmNMZW5ndGgsIGRhdGEgKyBzcmNPZmZz
ZXQpOworICAgIGdsOjpVbmlmb3JtM3Vpdihsb2NhdGlvbiwgZGF0YS5idWZTaXplIC8gMywgZGF0
YS5kYXRhKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTR1aXYo
R0NHTGludCBsb2NhdGlvbiwgY29uc3QgR0NHTHVpbnQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNl
dCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5p
Zm9ybTR1aXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTHVpbnQ+IGRhdGEp
CiB7CisgICAgQVNTRVJUKCEoZGF0YS5idWZTaXplICUgNCkpOwogICAgIGlmICghbWFrZUNvbnRl
eHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGdsOjpVbmlmb3JtNHVpdihsb2Nh
dGlvbiwgc3JjTGVuZ3RoLCBkYXRhICsgc3JjT2Zmc2V0KTsKKyAgICBnbDo6VW5pZm9ybTR1aXYo
bG9jYXRpb24sIGRhdGEuYnVmU2l6ZSAvIDQsIGRhdGEuZGF0YSk7CiB9CiAKLXZvaWQgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXgyeDNmdihHQ0dMaW50IGxvY2F0aW9uLCBH
Q0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3Jj
T2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
Ojp1bmlmb3JtTWF0cml4MngzZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNw
b3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEpCiB7CisgICAgQVNTRVJUKCEoZGF0
YS5idWZTaXplICUgNikpOwogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIGdsOjpVbmlmb3JtTWF0cml4MngzZnYobG9jYXRpb24sIHNyY0xlbmd0
aCwgdHJhbnNwb3NlLCBkYXRhICsgc3JjT2Zmc2V0KTsKKyAgICBnbDo6VW5pZm9ybU1hdHJpeDJ4
M2Z2KGxvY2F0aW9uLCBkYXRhLmJ1ZlNpemUgLyA2LCB0cmFuc3Bvc2UsIGRhdGEuZGF0YSk7CiB9
CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXgzeDJmdihHQ0dM
aW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogZGF0
YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCit2b2lkIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4M3gyZnYoR0NHTGludCBsb2NhdGlvbiwgR0NH
TGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEpCiB7Cisg
ICAgQVNTRVJUKCEoZGF0YS5idWZTaXplICUgNikpOwogICAgIGlmICghbWFrZUNvbnRleHRDdXJy
ZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGdsOjpVbmlmb3JtTWF0cml4M3gyZnYobG9j
YXRpb24sIHNyY0xlbmd0aCwgdHJhbnNwb3NlLCBkYXRhICsgc3JjT2Zmc2V0KTsKKyAgICBnbDo6
VW5pZm9ybU1hdHJpeDN4MmZ2KGxvY2F0aW9uLCBkYXRhLmJ1ZlNpemUgLyA2LCB0cmFuc3Bvc2Us
IGRhdGEuZGF0YSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1N
YXRyaXgyeDRmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0
IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgp
Cit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4Mng0ZnYoR0NHTGlu
dCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxv
YXQ+IGRhdGEpCiB7CisgICAgQVNTRVJUKCEoZGF0YS5idWZTaXplICUgOCkpOwogICAgIGlmICgh
bWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGdsOjpVbmlmb3Jt
TWF0cml4Mng0ZnYobG9jYXRpb24sIHNyY0xlbmd0aCwgdHJhbnNwb3NlLCBkYXRhICsgc3JjT2Zm
c2V0KTsKKyAgICBnbDo6VW5pZm9ybU1hdHJpeDJ4NGZ2KGxvY2F0aW9uLCBkYXRhLmJ1ZlNpemUg
LyA4LCB0cmFuc3Bvc2UsIGRhdGEuZGF0YSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OnVuaWZvcm1NYXRyaXg0eDJmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0
cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dM
dWludCBzcmNMZW5ndGgpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0
cml4NHgyZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bh
bjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEpCiB7CisgICAgQVNTRVJUKCEoZGF0YS5idWZTaXplICUg
OCkpOwogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIGdsOjpVbmlmb3JtTWF0cml4NHgyZnYobG9jYXRpb24sIHNyY0xlbmd0aCwgdHJhbnNwb3Nl
LCBkYXRhICsgc3JjT2Zmc2V0KTsKKyAgICBnbDo6VW5pZm9ybU1hdHJpeDR4MmZ2KGxvY2F0aW9u
LCBkYXRhLmJ1ZlNpemUgLyA4LCB0cmFuc3Bvc2UsIGRhdGEuZGF0YSk7CiB9CiAKLXZvaWQgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXgzeDRmdihHQ0dMaW50IGxvY2F0aW9u
LCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQg
c3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjp1bmlmb3JtTWF0cml4M3g0ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJh
bnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEpCiB7CisgICAgQVNTRVJUKCEo
ZGF0YS5idWZTaXplICUgMTIpKTsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBnbDo6VW5pZm9ybU1hdHJpeDN4NGZ2KGxvY2F0aW9uLCBzcmNM
ZW5ndGgsIHRyYW5zcG9zZSwgZGF0YSArIHNyY09mZnNldCk7CisgICAgZ2w6OlVuaWZvcm1NYXRy
aXgzeDRmdihsb2NhdGlvbiwgZGF0YS5idWZTaXplIC8gMTIsIHRyYW5zcG9zZSwgZGF0YS5kYXRh
KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybU1hdHJpeDR4M2Z2
KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0
KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKK3ZvaWQgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXg0eDNmdihHQ0dMaW50IGxvY2F0aW9u
LCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gZGF0YSkK
IHsKKyAgICBBU1NFUlQoIShkYXRhLmJ1ZlNpemUgJSAxMikpOwogICAgIGlmICghbWFrZUNvbnRl
eHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGdsOjpVbmlmb3JtTWF0cml4NHgz
ZnYobG9jYXRpb24sIHNyY0xlbmd0aCwgdHJhbnNwb3NlLCBkYXRhICsgc3JjT2Zmc2V0KTsKKyAg
ICBnbDo6VW5pZm9ybU1hdHJpeDR4M2Z2KGxvY2F0aW9uLCBkYXRhLmJ1ZlNpemUgLyAxMiwgdHJh
bnNwb3NlLCBkYXRhLmRhdGEpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2
ZXJ0ZXhBdHRyaWJJNGkoR0NHTHVpbnQgaW5kZXgsIEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dM
aW50IHosIEdDR0xpbnQgdykKQEAgLTI2MDUsMTIgKzI2MDcsMTIgQEAgdm9pZCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliSTRpKEdDR0x1aW50IGluZGV4LCBHQ0dMaW50IHgs
IEdDR0xpbnQKICAgICBnbDo6VmVydGV4QXR0cmliSTRpKGluZGV4LCB4LCB5LCB6LCB3KTsKIH0K
IAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliSTRpdihHQ0dMdWlu
dCBpbmRleCwgY29uc3QgR0NHTGludCogdmFsdWVzKQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6dmVydGV4QXR0cmliSTRpdihHQ0dMdWludCBpbmRleCwgR0NHTFNwYW48Y29uc3QgR0NH
TGludCwgND4gdmFsdWVzKQogewogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIGdsOjpWZXJ0ZXhBdHRyaWJJNGl2KGluZGV4LCB2YWx1ZXMpOwor
ICAgIGdsOjpWZXJ0ZXhBdHRyaWJJNGl2KGluZGV4LCB2YWx1ZXMuZGF0YSk7CiB9CiAKIHZvaWQg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYkk0dWkoR0NHTHVpbnQgaW5kZXgs
IEdDR0x1aW50IHgsIEdDR0x1aW50IHksIEdDR0x1aW50IHosIEdDR0x1aW50IHcpCkBAIC0yNjIx
LDEyICsyNjIzLDEyIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJp
Ykk0dWkoR0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50IHgsIEdDR0x1CiAgICAgZ2w6OlZlcnRleEF0
dHJpYkk0dWkoaW5kZXgsIHgsIHksIHosIHcpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjp2ZXJ0ZXhBdHRyaWJJNHVpdihHQ0dMdWludCBpbmRleCwgY29uc3QgR0NHTHVpbnQq
IHZhbHVlcykKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYkk0dWl2
KEdDR0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdWludCwgND4gdmFsdWVzKQogewog
ICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGds
OjpWZXJ0ZXhBdHRyaWJJNHVpdihpbmRleCwgdmFsdWVzKTsKKyAgICBnbDo6VmVydGV4QXR0cmli
STR1aXYoaW5kZXgsIHZhbHVlcy5kYXRhKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6ZHJhd1JhbmdlRWxlbWVudHMoR0NHTGVudW0gbW9kZSwgR0NHTHVpbnQgc3RhcnQsIEdD
R0x1aW50IGVuZCwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9m
ZnNldCkKQEAgLTI2MzcsMzYgKzI2MzksMzYgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6ZHJhd1JhbmdlRWxlbWVudHMoR0NHTGVudW0gbW9kZSwgR0NHTHVpbnQgc3RhcnQsIEcKICAg
ICBnbDo6RHJhd1JhbmdlRWxlbWVudHMobW9kZSwgc3RhcnQsIGVuZCwgY291bnQsIHR5cGUsIHJl
aW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KG9mZnNldCkpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpkcmF3QnVmZmVycyhHQ0dMc2l6ZWkgbiwgY29uc3QgR0NHTGVudW0qIGJ1ZnMp
Cit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpkcmF3QnVmZmVycyhHQ0dMU3Bhbjxjb25z
dCBHQ0dMZW51bT4gYnVmcykKIHsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBnbDo6RHJhd0J1ZmZlcnMobiwgYnVmcyk7CisgICAgZ2w6OkRy
YXdCdWZmZXJzKGJ1ZnMuYnVmU2l6ZSwgYnVmcy5kYXRhKTsKIH0KIAotdm9pZCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6Y2xlYXJCdWZmZXJpdihHQ0dMZW51bSBidWZmZXIsIEdDR0xpbnQgZHJh
d2J1ZmZlciwgY29uc3QgR0NHTGludCogdmFsdWVzLCBHQ0dMdWludCBzcmNPZmZzZXQpCit2b2lk
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjbGVhckJ1ZmZlcml2KEdDR0xlbnVtIGJ1ZmZlciwg
R0NHTGludCBkcmF3YnVmZmVyLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50PiB2YWx1ZXMpCiB7CiAg
ICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZ2w6
OkNsZWFyQnVmZmVyaXYoYnVmZmVyLCBkcmF3YnVmZmVyLCB2YWx1ZXMgKyBzcmNPZmZzZXQpOwor
ICAgIGdsOjpDbGVhckJ1ZmZlcml2KGJ1ZmZlciwgZHJhd2J1ZmZlciwgdmFsdWVzLmRhdGEpOwog
fQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjbGVhckJ1ZmZlcnVpdihHQ0dMZW51
bSBidWZmZXIsIEdDR0xpbnQgZHJhd2J1ZmZlciwgY29uc3QgR0NHTHVpbnQqIHZhbHVlcywgR0NH
THVpbnQgc3JjT2Zmc2V0KQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y2xlYXJCdWZm
ZXJ1aXYoR0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50IGRyYXdidWZmZXIsIEdDR0xTcGFuPGNvbnN0
IEdDR0x1aW50PiB2YWx1ZXMpCiB7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgZ2w6OkNsZWFyQnVmZmVydWl2KGJ1ZmZlciwgZHJhd2J1ZmZl
ciwgdmFsdWVzICsgc3JjT2Zmc2V0KTsKKyAgICBnbDo6Q2xlYXJCdWZmZXJ1aXYoYnVmZmVyLCBk
cmF3YnVmZmVyLCB2YWx1ZXMuZGF0YSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OmNsZWFyQnVmZmVyZnYoR0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50IGRyYXdidWZmZXIsIGNv
bnN0IEdDR0xmbG9hdCogdmFsdWVzLCBHQ0dMdWludCBzcmNPZmZzZXQpCit2b2lkIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpjbGVhckJ1ZmZlcmZ2KEdDR0xlbnVtIGJ1ZmZlciwgR0NHTGludCBk
cmF3YnVmZmVyLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IHZhbHVlcykKIHsKICAgICBpZiAo
IW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBnbDo6Q2xlYXJC
dWZmZXJmdihidWZmZXIsIGRyYXdidWZmZXIsIHZhbHVlcyArIHNyY09mZnNldCk7CisgICAgZ2w6
OkNsZWFyQnVmZmVyZnYoYnVmZmVyLCBkcmF3YnVmZmVyLCB2YWx1ZXMuZGF0YSk7CiB9CiAKIHZv
aWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNsZWFyQnVmZmVyZmkoR0NHTGVudW0gYnVmZmVy
LCBHQ0dMaW50IGRyYXdidWZmZXIsIEdDR0xmbG9hdCBkZXB0aCwgR0NHTGludCBzdGVuY2lsKQpA
QCAtMjg1NCw5NCArMjg1Niw2IEBAIFZlY3RvcjxHQ0dMdWludD4gR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OmdldFVuaWZvcm1JbmRpY2VzKFBsYXRmb3JtR0xPYmplY3QgcHJvCiAgICAgcmV0dXJu
IHJlc3VsdDsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTFmdihH
Q0dMaW50IGxvY2F0aW9uLCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNl
dCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQotewotICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpVbmlmb3JtMWZ2KGxvY2F0aW9uLCBzcmNMZW5n
dGgsIGRhdGEgKyBzcmNPZmZzZXQpOwotfQotCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
Ojp1bmlmb3JtMmZ2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NH
THVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCi17Ci0gICAgaWYgKCFtYWtlQ29u
dGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OlVuaWZvcm0yZnYobG9j
YXRpb24sIHNyY0xlbmd0aCwgZGF0YSArIHNyY09mZnNldCk7Ci19Ci0KLXZvaWQgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OnVuaWZvcm0zZnYoR0NHTGludCBsb2NhdGlvbiwgY29uc3QgR0NHTGZs
b2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKLXsKLSAg
ICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6
VW5pZm9ybTNmdihsb2NhdGlvbiwgc3JjTGVuZ3RoLCBkYXRhICsgc3JjT2Zmc2V0KTsKLX0KLQot
dm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTRmdihHQ0dMaW50IGxvY2F0aW9u
LCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3Jj
TGVuZ3RoKQotewotICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIGdsOjpVbmlmb3JtNGZ2KGxvY2F0aW9uLCBzcmNMZW5ndGgsIGRhdGEgKyBzcmNP
ZmZzZXQpOwotfQotCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMWl2KEdD
R0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0xpbnQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwg
R0NHTHVpbnQgc3JjTGVuZ3RoKQotewotICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIGdsOjpVbmlmb3JtMWl2KGxvY2F0aW9uLCBzcmNMZW5ndGgs
IGRhdGEgKyBzcmNPZmZzZXQpOwotfQotCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1
bmlmb3JtMml2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0xpbnQqIGRhdGEsIEdDR0x1aW50
IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQotewotICAgIGlmICghbWFrZUNvbnRleHRD
dXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpVbmlmb3JtMml2KGxvY2F0aW9u
LCBzcmNMZW5ndGgsIGRhdGEgKyBzcmNPZmZzZXQpOwotfQotCi12b2lkIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjp1bmlmb3JtM2l2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0xpbnQqIGRh
dGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQotewotICAgIGlmICgh
bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpVbmlmb3Jt
M2l2KGxvY2F0aW9uLCBzcmNMZW5ndGgsIGRhdGEgKyBzcmNPZmZzZXQpOwotfQotCi12b2lkIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtNGl2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0
IEdDR0xpbnQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQot
ewotICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAg
IGdsOjpVbmlmb3JtNGl2KGxvY2F0aW9uLCBzcmNMZW5ndGgsIGRhdGEgKyBzcmNPZmZzZXQpOwot
fQotCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4MmZ2KEdDR0xp
bnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiBkYXRh
LCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKLXsKLSAgICBpZiAoIW1h
a2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6VW5pZm9ybU1h
dHJpeDJmdihsb2NhdGlvbiwgc3JjTGVuZ3RoLCB0cmFuc3Bvc2UsIGRhdGEgKyBzcmNPZmZzZXQp
OwotfQotCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4M2Z2KEdD
R0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiBk
YXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKLXsKLSAgICBpZiAo
IW1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6VW5pZm9y
bU1hdHJpeDNmdihsb2NhdGlvbiwgc3JjTGVuZ3RoLCB0cmFuc3Bvc2UsIGRhdGEgKyBzcmNPZmZz
ZXQpOwotfQotCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4NGZ2
KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0
KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKLXsKLSAgICBp
ZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6VW5p
Zm9ybU1hdHJpeDRmdihsb2NhdGlvbiwgc3JjTGVuZ3RoLCB0cmFuc3Bvc2UsIGRhdGEgKyBzcmNP
ZmZzZXQpOwotfQotCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRBY3RpdmVVbmlm
b3JtQmxvY2tpdihHQ0dMdWludCBwcm9ncmFtLCBHQ0dMdWludCB1bmlmb3JtQmxvY2tJbmRleCwg
R0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xpbnQ+IHBhcmFtcykKIHsKICAgICBpZiAoIW1h
a2VDb250ZXh0Q3VycmVudCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY3YvR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2N2L0dyYXBoaWNzQ29udGV4dEdMQ1ZBTkdMRS5jcHAKaW5kZXgg
ZjliZmNhM2M0OGNlMjhlYWIxOTQ0YTRmNWU4NTMwYTQyNWY4NjJmZS4uMWE0MzM3MmMyMWUyMjAy
MTc5NDZkNjdhZTAxNmMwODEyMTM0YjIwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY3YvR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9HcmFwaGljc0NvbnRleHRHTENWQU5HTEUu
Y3BwCkBAIC0yMzUsMTggKzIzNSwxMyBAQCBzdHJ1Y3QgR0xmbG9hdENvbG9ycyB7CiB9OwogCiBz
dHJ1Y3QgWUNiQ3JNYXRyaXggewotICAgIHVuaW9uIHsKLSAgICAgICAgR0xmbG9hdCByb3dzWzRd
WzRdOwotICAgICAgICBHTGZsb2F0IGRhdGFbMTZdOwotICAgIH07CisgICAgR0xmbG9hdCByb3dz
WzRdWzRdOwogCiAgICAgY29uc3RleHByIFlDYkNyTWF0cml4KFBpeGVsUmFuZ2UsIEdMZmxvYXQg
Y2JDb2VmZmljaWVudCwgR0xmbG9hdCBjckNvZWZmaWNpZW50KTsKIAotICAgIG9wZXJhdG9yIFZl
Y3RvcjxHTGZsb2F0PigpIGNvbnN0CisgICAgb3BlcmF0b3IgR0NHTFNwYW48Y29uc3QgR0xmbG9h
dCwgMTY+KCkgY29uc3QKICAgICB7Ci0gICAgICAgIFZlY3RvcjxHTGZsb2F0PiB2ZWN0b3I7Ci0g
ICAgICAgIHZlY3Rvci5hcHBlbmQoZGF0YSwgMTYpOwotICAgICAgICByZXR1cm4gdmVjdG9yOwor
ICAgICAgICByZXR1cm4gbWFrZUdDR0xTcGFuPDE2Pigmcm93c1swXVswXSk7CiAgICAgfQogCiAg
ICAgY29uc3RleHByIEdMZmxvYXRDb2xvciBvcGVyYXRvciooY29uc3QgR0xmbG9hdENvbG9yJikg
Y29uc3Q7CkBAIC0zMTgsMTAgKzMxMywxMCBAQCBjb25zdGV4cHIgR0xmbG9hdENvbG9yIFlDYkNy
TWF0cml4OjpvcGVyYXRvciooY29uc3QgR0xmbG9hdENvbG9yJiBjb2xvcikgY29uc3QKICAgICAp
OwogfQogCi1zdGF0aWMgY29uc3QgVmVjdG9yPEdMZmxvYXQ+IFlDYkNyVG9SR0JNYXRyaXhGb3JS
YW5nZUFuZFRyYW5zZmVyRnVuY3Rpb24oUGl4ZWxSYW5nZSByYW5nZSwgVHJhbnNmZXJGdW5jdGlv
bkNWIHRyYW5zZmVyRnVuY3Rpb24pCitzdGF0aWMgR0NHTFNwYW48Y29uc3QgR0xmbG9hdCwgMTY+
IFlDYkNyVG9SR0JNYXRyaXhGb3JSYW5nZUFuZFRyYW5zZmVyRnVuY3Rpb24oUGl4ZWxSYW5nZSBy
YW5nZSwgVHJhbnNmZXJGdW5jdGlvbkNWIHRyYW5zZmVyRnVuY3Rpb24pCiB7CiAgICAgdXNpbmcg
TWFwS2V5ID0gc3RkOjpwYWlyPFBpeGVsUmFuZ2UsIFRyYW5zZmVyRnVuY3Rpb25DVj47Ci0gICAg
dXNpbmcgTWF0cml4TWFwID0gU3RkTWFwPE1hcEtleSwgVmVjdG9yPEdMZmxvYXQ+PjsKKyAgICB1
c2luZyBNYXRyaXhNYXAgPSBTdGRNYXA8TWFwS2V5LCBjb25zdCBZQ2JDck1hdHJpeCY+OwogCiAg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPE1hdHJpeE1hcD4gbWF0cmljZXM7CiAgICAgc3RhdGlj
IGRpc3BhdGNoX29uY2VfdCBvbmNlVG9rZW47CkBAIC01MjYsNyArNTIxLDcgQEAgYm9vbCBHcmFw
aGljc0NvbnRleHRHTENWQU5HTEU6OmluaXRpYWxpemVVVkNvbnRleHRPYmplY3RzKCkKICAgICBm
bG9hdCB2ZXJ0aWNlc1sxMl0gPSB7IC0xLCAtMSwgMSwgLTEsIDEsIDEsIDEsIDEsIC0xLCAxLCAt
MSwgLTEgfTsKIAogICAgIG1fY29udGV4dC0+YmluZEJ1ZmZlcihHcmFwaGljc0NvbnRleHRHTDo6
QVJSQVlfQlVGRkVSLCBtX3l1dlZlcnRleEJ1ZmZlcik7Ci0gICAgbV9jb250ZXh0LT5idWZmZXJE
YXRhKEdyYXBoaWNzQ29udGV4dEdMOjpBUlJBWV9CVUZGRVIsIHNpemVvZih2ZXJ0aWNlcyksIHZl
cnRpY2VzLCBHcmFwaGljc0NvbnRleHRHTDo6U1RBVElDX0RSQVcpOworICAgIG1fY29udGV4dC0+
YnVmZmVyRGF0YShHcmFwaGljc0NvbnRleHRHTDo6QVJSQVlfQlVGRkVSLCBHQ0dMU3Bhbjxjb25z
dCBHQ0dMdm9pZD4odmVydGljZXMsIHNpemVvZih2ZXJ0aWNlcykpLCBHcmFwaGljc0NvbnRleHRH
TDo6U1RBVElDX0RSQVcpOwogICAgIG1fY29udGV4dC0+ZW5hYmxlVmVydGV4QXR0cmliQXJyYXko
bV95dXZQb3NpdGlvbkF0dHJpYnV0ZUxvY2F0aW9uKTsKICAgICBtX2NvbnRleHQtPnZlcnRleEF0
dHJpYlBvaW50ZXIobV95dXZQb3NpdGlvbkF0dHJpYnV0ZUxvY2F0aW9uLCAyLCBHcmFwaGljc0Nv
bnRleHRHTDo6RkxPQVQsIGZhbHNlLCAwLCAwKTsKIApAQCAtNjI1LDcgKzYyMCw3IEBAIGJvb2wg
R3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFOjpjb3B5UGl4ZWxCdWZmZXJUb1RleHR1cmUoQ1ZQaXhl
bEJ1ZmZlclJlZiBpbWFnZSwKICAgICBtX2NvbnRleHQtPnRleFBhcmFtZXRlcmkoR3JhcGhpY3ND
b250ZXh0R0w6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4dEdMOjpURVhUVVJFX01JTl9GSUxU
RVIsIEdyYXBoaWNzQ29udGV4dEdMOjpMSU5FQVIpOwogICAgIG1fY29udGV4dC0+dGV4UGFyYW1l
dGVyaShHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0R0w6OlRF
WFRVUkVfV1JBUF9TLCBHcmFwaGljc0NvbnRleHRHTDo6Q0xBTVBfVE9fRURHRSk7CiAgICAgbV9j
b250ZXh0LT50ZXhQYXJhbWV0ZXJpKEdyYXBoaWNzQ29udGV4dEdMOjpURVhUVVJFXzJELCBHcmFw
aGljc0NvbnRleHRHTDo6VEVYVFVSRV9XUkFQX1QsIEdyYXBoaWNzQ29udGV4dEdMOjpDTEFNUF9U
T19FREdFKTsKLSAgICBtX2NvbnRleHQtPnRleEltYWdlMkREaXJlY3QoR3JhcGhpY3NDb250ZXh0
R0w6OlRFWFRVUkVfMkQsIGxldmVsLCBpbnRlcm5hbEZvcm1hdCwgd2lkdGgsIGhlaWdodCwgMCwg
Zm9ybWF0LCB0eXBlLCBudWxscHRyKTsKKyAgICBnbDo6VGV4SW1hZ2UyRChHTF9URVhUVVJFXzJE
LCBsZXZlbCwgaW50ZXJuYWxGb3JtYXQsIHdpZHRoLCBoZWlnaHQsIDAsIGZvcm1hdCwgdHlwZSwg
bnVsbHB0cik7CiAKICAgICBtX2NvbnRleHQtPmZyYW1lYnVmZmVyVGV4dHVyZTJEKEdyYXBoaWNz
Q29udGV4dEdMOjpGUkFNRUJVRkZFUiwgR3JhcGhpY3NDb250ZXh0R0w6OkNPTE9SX0FUVEFDSE1F
TlQwLCBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV8yRCwgb3V0cHV0VGV4dHVyZSwgbGV2ZWwp
OwogICAgIEdDR0xlbnVtIHN0YXR1cyA9IG1fY29udGV4dC0+Y2hlY2tGcmFtZWJ1ZmZlclN0YXR1
cyhHcmFwaGljc0NvbnRleHRHTDo6RlJBTUVCVUZGRVIpOwpAQCAtNjgyLDggKzY3Nyw4IEBAIGJv
b2wgR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFOjpjb3B5UGl4ZWxCdWZmZXJUb1RleHR1cmUoQ1ZQ
aXhlbEJ1ZmZlclJlZiBpbWFnZSwKIAogICAgIGF1dG8gcmFuZ2UgPSBwaXhlbFJhbmdlRnJvbVBp
eGVsRm9ybWF0KHBpeGVsRm9ybWF0KTsKICAgICBhdXRvIHRyYW5zZmVyRnVuY3Rpb24gPSB0cmFu
c2ZlckZ1bmN0aW9uRnJvbVN0cmluZygoQ0ZTdHJpbmdSZWYpQ1ZCdWZmZXJHZXRBdHRhY2htZW50
KGltYWdlLCBrQ1ZJbWFnZUJ1ZmZlcllDYkNyTWF0cml4S2V5LCBuaWwpKTsKLSAgICBhdXRvJiBj
b2xvck1hdHJpeCA9IFlDYkNyVG9SR0JNYXRyaXhGb3JSYW5nZUFuZFRyYW5zZmVyRnVuY3Rpb24o
cmFuZ2UsIHRyYW5zZmVyRnVuY3Rpb24pOwotICAgIG1fY29udGV4dC0+dW5pZm9ybU1hdHJpeDRm
dihtX2NvbG9yTWF0cml4VW5pZm9ybUxvY2F0aW9uLCAxLCBHTF9GQUxTRSwgY29sb3JNYXRyaXgu
ZGF0YSgpKTsKKyAgICBhdXRvIGNvbG9yTWF0cml4ID0gWUNiQ3JUb1JHQk1hdHJpeEZvclJhbmdl
QW5kVHJhbnNmZXJGdW5jdGlvbihyYW5nZSwgdHJhbnNmZXJGdW5jdGlvbik7CisgICAgbV9jb250
ZXh0LT51bmlmb3JtTWF0cml4NGZ2KG1fY29sb3JNYXRyaXhVbmlmb3JtTG9jYXRpb24sIEdMX0ZB
TFNFLCBjb2xvck1hdHJpeCk7CiAKICAgICAvLyBEbyB0aGUgYWN0dWFsIGRyYXdpbmcuCiAgICAg
bV9jb250ZXh0LT5kcmF3QXJyYXlzKEdyYXBoaWNzQ29udGV4dEdMOjpUUklBTkdMRVMsIDAsIDYp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4
dGVuc2lvbnNHTE9wZW5HTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmNwcAppbmRleCAxNzc4NmE2NGJhNGUxZGEwMDk2NGVh
ZTk5N2QyOTI3NjRkYWQxODk2Li4xOTZiYjU1OTRjZTFmMWRjMmZkNDg0NWY5NzkwYmRjNThmYmFh
MGY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wv
RXh0ZW5zaW9uc0dMT3BlbkdMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmNwcApAQCAtMjA4LDE0ICsyMDgsMTQgQEAg
Ym9vbCBFeHRlbnNpb25zR0xPcGVuR0w6OnN1cHBvcnRzRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYg
bmFtZSkKICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKG5hbWUpOwog
fQogCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTDo6ZHJhd0J1ZmZlcnNFWFQoR0NHTHNpemVpIG4s
IGNvbnN0IEdDR0xlbnVtKiBidWZzKQordm9pZCBFeHRlbnNpb25zR0xPcGVuR0w6OmRyYXdCdWZm
ZXJzRVhUKEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVtPiBidWZzKQogewogICAgIGlmICghbV9jb250
ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gIEZJ
WE1FOiBpbXBsZW1lbnQgc3VwcG9ydCBmb3Igb3RoZXIgcGxhdGZvcm1zLgogI2lmIFBMQVRGT1JN
KEdUSykKLSAgICA6OmdsRHJhd0J1ZmZlcnMobiwgYnVmcyk7CisgICAgOjpnbERyYXdCdWZmZXJz
KGJ1ZnMuYnVmU2l6ZSwgYnVmcy5kYXQpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0obik7CiAg
ICAgVU5VU0VEX1BBUkFNKGJ1ZnMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5oCmluZGV4IGQzYmU4
Y2MyOGMxN2MyZGY1ZDNiNDg2NmJiM2M1Zjk0NGM0NTVmMjEuLjQ5NjI4OWNlYTBlNmEwOWQ2ZGI3
MzFmODY4YjU0OTkzYTQ0NDQ5YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmgKQEAgLTUwLDcg
KzUwLDcgQEAgcHVibGljOgogICAgIHZvaWQgaW5zZXJ0RXZlbnRNYXJrZXJFWFQoY29uc3QgU3Ry
aW5nJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBwdXNoR3JvdXBNYXJrZXJFWFQoY29uc3QgU3RyaW5n
Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBwb3BHcm91cE1hcmtlckVYVCh2b2lkKSBvdmVycmlkZTsK
LSAgICB2b2lkIGRyYXdCdWZmZXJzRVhUKEdDR0xzaXplaSwgY29uc3QgR0NHTGVudW0qKSBvdmVy
cmlkZTsKKyAgICB2b2lkIGRyYXdCdWZmZXJzRVhUKEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVtPikg
b3ZlcnJpZGU7CiAKICAgICB2b2lkIGRyYXdBcnJheXNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwg
R0NHTGludCBmaXJzdCwgR0NHTHNpemVpIGNvdW50LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSBvdmVy
cmlkZTsKICAgICB2b2lkIGRyYXdFbGVtZW50c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dM
c2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIGxvbmcgbG9uZyBvZmZzZXQsIEdDR0xzaXplaSBw
cmltY291bnQpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmNw
cAppbmRleCA2ODZmMmQ1MTE0OGVmOWIxMmZlZjEwYjNjMmFjNzBiMmEzNWQyMTU3Li5lOTBjMDY2
MGQyM2MwYmIyY2EyYmRkZjM2ZDY4NGYzOGE5MmQ4ZWRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9u
c0dMT3BlbkdMQ29tbW9uLmNwcApAQCAtMjU5LDcgKzI1OSw3IEBAIHZvaWQgRXh0ZW5zaW9uc0dM
T3BlbkdMQ29tbW9uOjpyZWFkUGl4ZWxzUm9idXN0QU5HTEUoaW50LCBpbnQsIEdDR0xzaXplaSwg
R0NHTHNpCiAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJB
VElPTik7CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjp0ZXhJbWFnZTJEUm9i
dXN0QU5HTEUoR0NHTGVudW0sIGludCwgaW50LCBHQ0dMc2l6ZWksIEdDR0xzaXplaSwgaW50LCBH
Q0dMZW51bSwgR0NHTGVudW0sIEdDR0xzaXplaSwgY29uc3Qgdm9pZCAqKQordm9pZCBFeHRlbnNp
b25zR0xPcGVuR0xDb21tb246OnRleEltYWdlMkRSb2J1c3RBTkdMRShHQ0dMZW51bSwgaW50LCBp
bnQsIEdDR0xzaXplaSwgR0NHTHNpemVpLCBpbnQsIEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTFNw
YW48Y29uc3QgR0NHTHZvaWQ+KQogewogICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3Io
R0xfSU5WQUxJRF9PUEVSQVRJT04pOwogfQpAQCAtMjc0LDM4ICsyNzQsMzggQEAgdm9pZCBFeHRl
bnNpb25zR0xPcGVuR0xDb21tb246OnRleFBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0s
IEdDR0xlbnVtLCBHQ0cKICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFM
SURfT1BFUkFUSU9OKTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OnRleFN1
YkltYWdlMkRSb2J1c3RBTkdMRShHQ0dMZW51bSwgaW50LCBpbnQsIGludCwgR0NHTHNpemVpLCBH
Q0dMc2l6ZWksIEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTHNpemVpLCBjb25zdCB2b2lkICopCit2
b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6dGV4U3ViSW1hZ2UyRFJvYnVzdEFOR0xFKEdD
R0xlbnVtLCBpbnQsIGludCwgaW50LCBHQ0dMc2l6ZWksIEdDR0xzaXplaSwgR0NHTGVudW0sIEdD
R0xlbnVtLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4pCiB7CiAgICAgbV9jb250ZXh0LT5zeW50
aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CiB9CiAKLXZvaWQgRXh0ZW5zaW9u
c0dMT3BlbkdMQ29tbW9uOjpjb21wcmVzc2VkVGV4SW1hZ2UyRFJvYnVzdEFOR0xFKEdDR0xlbnVt
LCBpbnQsIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSwgaW50LCBHQ0dMc2l6ZWksIEdD
R0xzaXplaSwgY29uc3Qgdm9pZCopCit2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Y29t
cHJlc3NlZFRleEltYWdlMkRSb2J1c3RBTkdMRShHQ0dMZW51bSwgaW50LCBHQ0dMZW51bSwgR0NH
THNpemVpLCBHQ0dMc2l6ZWksIGludCwgR0NHTHNpemVpLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9p
ZD4pCiB7CiAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJB
VElPTik7CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpjb21wcmVzc2VkVGV4
U3ViSW1hZ2UyRFJvYnVzdEFOR0xFKEdDR0xlbnVtLCBpbnQsIGludCwgaW50LCBHQ0dMc2l6ZWks
IEdDR0xzaXplaSwgR0NHTGVudW0sIEdDR0xzaXplaSwgR0NHTHNpemVpLCBjb25zdCB2b2lkKikK
K3ZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRFJv
YnVzdEFOR0xFKEdDR0xlbnVtLCBpbnQsIGludCwgaW50LCBHQ0dMc2l6ZWksIEdDR0xzaXplaSwg
R0NHTGVudW0sIEdDR0xzaXplaSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+KQogewogICAgIG1f
Y29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwogfQogCi12
b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Y29tcHJlc3NlZFRleEltYWdlM0RSb2J1c3RB
TkdMRShHQ0dMZW51bSwgaW50LCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWksIEdDR0xz
aXplaSwgaW50LCBHQ0dMc2l6ZWksIEdDR0xzaXplaSwgY29uc3Qgdm9pZCopCit2b2lkIEV4dGVu
c2lvbnNHTE9wZW5HTENvbW1vbjo6Y29tcHJlc3NlZFRleEltYWdlM0RSb2J1c3RBTkdMRShHQ0dM
ZW51bSwgaW50LCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSwgaW50
LCBHQ0dMc2l6ZWksIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPikKIHsKICAgICBtX2NvbnRleHQt
PnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKIH0KIAotdm9pZCBFeHRl
bnNpb25zR0xPcGVuR0xDb21tb246OmNvbXByZXNzZWRUZXhTdWJJbWFnZTNEUm9idXN0QU5HTEUo
R0NHTGVudW0sIGludCwgaW50LCBpbnQsIGludCwgR0NHTHNpemVpLCBHQ0dMc2l6ZWksIEdDR0xz
aXplaSwgR0NHTGVudW0sIEdDR0xzaXplaSwgR0NHTHNpemVpLCBjb25zdCB2b2lkKikKK3ZvaWQg
RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpjb21wcmVzc2VkVGV4U3ViSW1hZ2UzRFJvYnVzdEFO
R0xFKEdDR0xlbnVtLCBpbnQsIGludCwgaW50LCBpbnQsIEdDR0xzaXplaSwgR0NHTHNpemVpLCBH
Q0dMc2l6ZWksIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPikK
IHsKICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9O
KTsKIH0KIAogCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6dGV4SW1hZ2UzRFJvYnVz
dEFOR0xFKEdDR0xlbnVtLCBpbnQsIGludCwgR0NHTHNpemVpLCBHQ0dMc2l6ZWksIEdDR0xzaXpl
aSwgaW50LCBHQ0dMZW51bSwgR0NHTGVudW0sIEdDR0xzaXplaSwgY29uc3Qgdm9pZCAqKQordm9p
ZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OnRleEltYWdlM0RSb2J1c3RBTkdMRShHQ0dMZW51
bSwgaW50LCBpbnQsIEdDR0xzaXplaSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWksIGludCwgR0NHTGVu
dW0sIEdDR0xlbnVtLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4pCiB7CiAgICAgbV9jb250ZXh0
LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CiB9CiAKLXZvaWQgRXh0
ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjp0ZXhTdWJJbWFnZTNEUm9idXN0QU5HTEUoR0NHTGVudW0s
IGludCwgaW50LCBpbnQsIGludCwgR0NHTHNpemVpLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSwgR0NH
TGVudW0sIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIGNvbnN0IHZvaWQgKikKK3ZvaWQgRXh0ZW5zaW9u
c0dMT3BlbkdMQ29tbW9uOjp0ZXhTdWJJbWFnZTNEUm9idXN0QU5HTEUoR0NHTGVudW0sIGludCwg
aW50LCBpbnQsIGludCwgR0NHTHNpemVpLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSwgR0NHTGVudW0s
IEdDR0xlbnVtLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4pCiB7CiAgICAgbV9jb250ZXh0LT5z
eW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdM
Q29tbW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5z
aW9uc0dMT3BlbkdMQ29tbW9uLmgKaW5kZXggOTdlZWRmYjc0ODVjODMyZjc5M2M4Y2ZmMGZhMTdm
YmZmYmU2NTg4ZC4uMGRlNjllZjRiZGZjZDFmMGVmZmViMjhlM2I2NzdhMDIzMWVkZWYwMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lv
bnNHTE9wZW5HTENvbW1vbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uaApAQCAtNTAsNyArNTAsNyBAQCBwdWJs
aWM6CiAgICAgR0NHTGJvb2xlYW4gaXNWZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybUdMT2JqZWN0KSBv
dmVycmlkZSA9IDA7CiAgICAgdm9pZCBiaW5kVmVydGV4QXJyYXlPRVMoUGxhdGZvcm1HTE9iamVj
dCkgb3ZlcnJpZGUgPSAwOwogCi0gICAgdm9pZCBkcmF3QnVmZmVyc0VYVChHQ0dMc2l6ZWksIGNv
bnN0IEdDR0xlbnVtKikgb3ZlcnJpZGUgPSAwOworICAgIHZvaWQgZHJhd0J1ZmZlcnNFWFQoR0NH
TFNwYW48Y29uc3QgR0NHTGVudW0+KSBvdmVycmlkZSA9IDA7CiAKICAgICBTdHJpbmcgZ2V0VHJh
bnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKFBsYXRmb3JtR0xPYmplY3QpIG92ZXJyaWRlOwogCkBA
IC03MCwxNyArNzAsMTcgQEAgcHVibGljOgogCiAgICAgLy8gR0xfQU5HTEVfcm9idXN0X2NsaWVu
dF9tZW1vcnkKICAgICB2b2lkIHJlYWRQaXhlbHNSb2J1c3RBTkdMRShpbnQgeCwgaW50IHksIEdD
R0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51
bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xzaXplaSAq
Y29sdW1ucywgR0NHTHNpemVpICpyb3dzLCB2b2lkICpwaXhlbHMpIG92ZXJyaWRlOwotICAgIHZv
aWQgdGV4SW1hZ2UyRFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgaW50IGxldmVsLCBpbnQg
aW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgaW50IGJv
cmRlciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
Y29uc3Qgdm9pZCAqcGl4ZWxzKSBvdmVycmlkZTsKKyAgICB2b2lkIHRleEltYWdlMkRSb2J1c3RB
TkdMRShHQ0dMZW51bSB0YXJnZXQsIGludCBsZXZlbCwgaW50IGludGVybmFsZm9ybWF0LCBHQ0dM
c2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1h
dCwgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IHBpeGVscykgb3ZlcnJp
ZGU7CiAgICAgdm9pZCB0ZXhQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMZmxvYXQgKnBhcmFt
cykgb3ZlcnJpZGU7CiAgICAgdm9pZCB0ZXhQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50
ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgdGV4U3ViSW1hZ2UyRFJvYnVzdEFOR0xFKEdD
R0xlbnVtIHRhcmdldCwgaW50IGxldmVsLCBpbnQgeG9mZnNldCwgaW50IHlvZmZzZXQsIEdDR0xz
aXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0
eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3Qgdm9pZCAqcGl4ZWxzKSBvdmVycmlkZTsKKyAg
ICB2b2lkIHRleFN1YkltYWdlMkRSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIGludCBsZXZl
bCwgaW50IHhvZmZzZXQsIGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBo
ZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48Y29uc3QgR0NH
THZvaWQ+IHBpeGVscykgb3ZlcnJpZGU7CiAgICAgdm9pZCBjb21wcmVzc2VkVGV4SW1hZ2UyRFJv
YnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZv
cm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBpbnQgYm9yZGVyLCBHQ0dM
c2l6ZWkgaW1hZ2VTaXplLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3Qgdm9pZCogZGF0YSkgb3Zl
cnJpZGU7CiAgICAgdm9pZCBjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRFJvYnVzdEFOR0xFKEdDR0xl
bnVtIHRhcmdldCwgaW50IGxldmVsLCBpbnQgeG9mZnNldCwgaW50IHlvZmZzZXQsIEdDR0xzaXpl
aSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMc2l6ZWkgaW1h
Z2VTaXplLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3Qgdm9pZCogZGF0YSkgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBjb21wcmVzc2VkVGV4SW1hZ2UzRFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwg
aW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dM
c2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIGludCBib3JkZXIsIEdDR0xzaXplaSBpbWFn
ZVNpemUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCB2b2lkKiBkYXRhKSBvdmVycmlkZTsKICAg
ICB2b2lkIGNvbXByZXNzZWRUZXhTdWJJbWFnZTNEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0
LCBpbnQgbGV2ZWwsIGludCB4b2Zmc2V0LCBpbnQgeW9mZnNldCwgaW50IHpvZmZzZXQsIEdDR0xz
aXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMZW51bSBm
b3JtYXQsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCB2b2lk
KiBkYXRhKSBvdmVycmlkZTsKIAotICAgIHZvaWQgdGV4SW1hZ2UzRFJvYnVzdEFOR0xFKEdDR0xl
bnVtIHRhcmdldCwgaW50IGxldmVsLCBpbnQgaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0
aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBpbnQgYm9yZGVyLCBHQ0dMZW51
bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCB2b2lkICpw
aXhlbHMpIG92ZXJyaWRlOwotICAgIHZvaWQgdGV4U3ViSW1hZ2UzRFJvYnVzdEFOR0xFKEdDR0xl
bnVtIHRhcmdldCwgaW50IGxldmVsLCBpbnQgeG9mZnNldCwgaW50IHlvZmZzZXQsIGludCB6b2Zm
c2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwg
R0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3Qg
dm9pZCAqcGl4ZWxzKSBvdmVycmlkZTsKKyAgICB2b2lkIHRleEltYWdlM0RSb2J1c3RBTkdMRShH
Q0dMZW51bSB0YXJnZXQsIGludCBsZXZlbCwgaW50IGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkg
d2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgaW50IGJvcmRlciwgR0NH
TGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gcGl4
ZWxzKSBvdmVycmlkZTsKKyAgICB2b2lkIHRleFN1YkltYWdlM0RSb2J1c3RBTkdMRShHQ0dMZW51
bSB0YXJnZXQsIGludCBsZXZlbCwgaW50IHhvZmZzZXQsIGludCB5b2Zmc2V0LCBpbnQgem9mZnNl
dCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdD
R0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IHBp
eGVscykgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRRdWVyeWl2Um9idXN0QU5HTEUoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVu
Z3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0UXVlcnlPYmplY3R1
aXZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZT
aXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFtcykgb3ZlcnJpZGU7CiAgICAg
dm9pZCBnZXRCdWZmZXJQb2ludGVydlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVu
dW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgdm9pZCAqKnBh
cmFtcykgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmNwcAppbmRleCBkMjhm
NGEwMzFlYmRjNDgzODc1ZDM5ODQ4N2Q1Nzg3NDhmZGU0N2U3Li4zNmMzZWYzOGY5OGI5OWFmMDEx
NTA2OTkxNDI3YmFjZWZjYmI4YWMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5jcHAK
QEAgLTE4MCw3ICsxODAsNyBAQCB2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTEVTOjpiaW5kVmVydGV4
QXJyYXlPRVMoUGxhdGZvcm1HTE9iamVjdCBhcnJheSkKICAgICAgICAgbV9jb250ZXh0LT5zeW50
aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CiB9CiAKLXZvaWQgRXh0ZW5zaW9u
c0dMT3BlbkdMRVM6OmRyYXdCdWZmZXJzRVhUKEdDR0xzaXplaSAvKiBuICovLCBjb25zdCBHQ0dM
ZW51bSogLyogYnVmcyAqLykKK3ZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMRVM6OmRyYXdCdWZmZXJz
RVhUKEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVtPiAvKiBidWZzICovKQogewogICAgIC8vIEZJWE1F
OiBpbXBsZW1lbnQgdGhlIHN1cHBvcnQuCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xP
cGVuR0xFUy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVu
c2lvbnNHTE9wZW5HTEVTLmgKaW5kZXggYzc0ODI1YzgxZWFkMGE3NDYwYWVhMWRhZjFjOWFlMTgz
NzAyOTM5Ni4uMDE3YTQ1YjczOThkMDk5MmVkMTQ3NjdmMDc2N2UwNGI0NjQxNjI4MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNH
TE9wZW5HTEVTLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Blbmds
L0V4dGVuc2lvbnNHTE9wZW5HTEVTLmgKQEAgLTg1LDcgKzg1LDcgQEAgcHVibGljOgogICAgIHZv
aWQgZGVsZXRlVmVydGV4QXJyYXlPRVMoUGxhdGZvcm1HTE9iamVjdCkgb3ZlcnJpZGU7CiAgICAg
R0NHTGJvb2xlYW4gaXNWZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybUdMT2JqZWN0KSBvdmVycmlkZTsK
ICAgICB2b2lkIGJpbmRWZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybUdMT2JqZWN0KSBvdmVycmlkZTsK
LSAgICB2b2lkIGRyYXdCdWZmZXJzRVhUKEdDR0xzaXplaSwgY29uc3QgR0NHTGVudW0qKSBvdmVy
cmlkZTsKKyAgICB2b2lkIGRyYXdCdWZmZXJzRVhUKEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVtPikg
b3ZlcnJpZGU7CiAKICAgICB2b2lkIGRyYXdBcnJheXNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwg
R0NHTGludCBmaXJzdCwgR0NHTHNpemVpIGNvdW50LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSBvdmVy
cmlkZTsKICAgICB2b2lkIGRyYXdFbGVtZW50c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dM
c2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIGxvbmcgbG9uZyBvZmZzZXQsIEdDR0xzaXplaSBw
cmltY291bnQpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaAppbmRl
eCAwOTkyNjc4YjhkYzFlMTgzZDk4MjU5Yjc3MzE1YzM2MTIxNzAxMzBmLi41NDEzNDZmZDFmODUz
ZDQ1YmUzMjNhNzJmMmVmMjM3ODAzOTIwMTc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0wuaApAQCAtMTE5LDkgKzExOSw2IEBAIHB1YmxpYzoKICAgICAvLyBXaXRoIG11bHRpc2Ft
cGxpbmcgb24sIGJsaXQgZnJvbSBtdWx0aXNhbXBsZUZCTyB0byByZWd1bGFyIEZCTy4KICAgICB2
b2lkIHByZXBhcmVUZXh0dXJlKCk7CiAKLSAgICAvLyBFcXVpdmFsZW50IHRvIDo6Z2xUZXhJbWFn
ZTJEKCkuIEFsbG93cyBwaXhlbHM9PTAgd2l0aCBubyBhbGxvY2F0aW9uLgotICAgIHZvaWQgdGV4
SW1hZ2UyRERpcmVjdChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGlu
dGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQg
Ym9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIGNvbnN0IHZvaWQqIHBpeGVs
cyk7Ci0KICAgICAvLyBHZXQgYW4gYXR0cmlidXRlIGxvY2F0aW9uIHdpdGhvdXQgY2hlY2tpbmcg
dGhlIG5hbWUgLT4gbWFuZ2xlZG5hbWUgbWFwcGluZy4KICAgICBpbnQgZ2V0QXR0cmliTG9jYXRp
b25EaXJlY3QoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBjb25zdCBTdHJpbmcmIG5hbWUpOwog
CkBAIC0xMjksNiArMTI2LDkgQEAgcHVibGljOgogICAgIHZvaWQgY29tcGlsZVNoYWRlckRpcmVj
dChQbGF0Zm9ybUdMT2JqZWN0KTsKIAogI2lmICFVU0UoQU5HTEUpCisgICAgLy8gRXF1aXZhbGVu
dCB0byA6OmdsVGV4SW1hZ2UyRCgpLiBBbGxvd3MgcGl4ZWxzPT0wIHdpdGggbm8gYWxsb2NhdGlv
bi4KKyAgICB2b2lkIHRleEltYWdlMkREaXJlY3QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxl
dmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkg
aGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBj
b25zdCB2b2lkKiBwaXhlbHMpOworCiAgICAgLy8gSGVscGVyIHRvIHRleEltYWdlMkQgd2l0aCBw
aXhlbD09MCBjYXNlOiBwaXhlbHMgYXJlIGluaXRpYWxpemVkIHRvIDAuCiAgICAgLy8gUmV0dXJu
IHRydWUgaWYgbm8gR0wgZXJyb3IgaXMgc3ludGhlc2l6ZWQuCiAgICAgLy8gQnkgZGVmYXVsdCwg
YWxpZ25tZW50IGlzIDQsIHRoZSBPcGVuR0wgZGVmYXVsdCBzZXR0aW5nLgpAQCAtMTU1LDggKzE1
NSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGJsZW5kRnVuY1NlcGFyYXRlKEdDR0xlbnVtIHNyY1JH
QiwgR0NHTGVudW0gZHN0UkdCLCBHQ0dMZW51bSBzcmNBbHBoYSwgR0NHTGVudW0gZHN0QWxwaGEp
IGZpbmFsOwogCiAgICAgdm9pZCBidWZmZXJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVp
cHRyIHNpemUsIEdDR0xlbnVtIHVzYWdlKSBmaW5hbDsKLSAgICB2b2lkIGJ1ZmZlckRhdGEoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWlwdHIgc2l6ZSwgY29uc3Qgdm9pZCogZGF0YSwgR0NHTGVu
dW0gdXNhZ2UpIGZpbmFsOwotICAgIHZvaWQgYnVmZmVyU3ViRGF0YShHQ0dMZW51bSB0YXJnZXQs
IEdDR0xpbnRwdHIgb2Zmc2V0LCBHQ0dMc2l6ZWlwdHIgc2l6ZSwgY29uc3Qgdm9pZCogZGF0YSkg
ZmluYWw7CisgICAgdm9pZCBidWZmZXJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTFNwYW48Y29u
c3QgR0NHTHZvaWQ+IGRhdGEsIEdDR0xlbnVtIHVzYWdlKSBmaW5hbDsKKyAgICB2b2lkIGJ1ZmZl
clN1YkRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50cHRyIG9mZnNldCwgR0NHTFNwYW48Y29u
c3QgR0NHTHZvaWQ+IGRhdGEpIGZpbmFsOwogCiAgICAgR0NHTGVudW0gY2hlY2tGcmFtZWJ1ZmZl
clN0YXR1cyhHQ0dMZW51bSB0YXJnZXQpIGZpbmFsOwogICAgIHZvaWQgY2xlYXIoR0NHTGJpdGZp
ZWxkIG1hc2spIGZpbmFsOwpAQCAtMjUzLDMwICsyNTMsMzAgQEAgcHVibGljOgogICAgIHZvaWQg
c3RlbmNpbE9wKEdDR0xlbnVtIGZhaWwsIEdDR0xlbnVtIHpmYWlsLCBHQ0dMZW51bSB6cGFzcykg
ZmluYWw7CiAgICAgdm9pZCBzdGVuY2lsT3BTZXBhcmF0ZShHQ0dMZW51bSBmYWNlLCBHQ0dMZW51
bSBmYWlsLCBHQ0dMZW51bSB6ZmFpbCwgR0NHTGVudW0genBhc3MpIGZpbmFsOwogCi0gICAgYm9v
bCB0ZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50
ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBi
b3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgY29uc3Qgdm9pZCogcGl4ZWxz
KSBmaW5hbDsKKyAgICBib29sIHRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxl
dmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkg
aGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBH
Q0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gcGl4ZWxzKSBmaW5hbDsKICAgICB2b2lkIHRleFBhcmFt
ZXRlcmYoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGZsb2F0IHBhcmFtKSBm
aW5hbDsKICAgICB2b2lkIHRleFBhcmFtZXRlcmkoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBw
bmFtZSwgR0NHTGludCBwYXJhbSkgZmluYWw7Ci0gICAgdm9pZCB0ZXhTdWJJbWFnZTJEKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZz
ZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBH
Q0dMZW51bSB0eXBlLCBjb25zdCB2b2lkKiBwaXhlbHMpIGZpbmFsOworICAgIHZvaWQgdGV4U3Vi
SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwg
R0NHTGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xl
bnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IHBpeGVs
cykgZmluYWw7CiAKICAgICB2b2lkIHVuaWZvcm0xZihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMZmxv
YXQgeCkgZmluYWw7Ci0gICAgdm9pZCB1bmlmb3JtMWZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xz
aXplaSwgY29uc3QgR0NHTGZsb2F0KiB2KSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm0xZnYoR0NH
TGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiB2KSBmaW5hbDsKICAgICB2
b2lkIHVuaWZvcm0xaShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMaW50IHgpIGZpbmFsOwotICAgIHZv
aWQgdW5pZm9ybTFpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWksIGNvbnN0IEdDR0xpbnQq
IHYpIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybTFpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bh
bjxjb25zdCBHQ0dMaW50PiB2KSBmaW5hbDsKICAgICB2b2lkIHVuaWZvcm0yZihHQ0dMaW50IGxv
Y2F0aW9uLCBHQ0dMZmxvYXQgeCwgR0NHTGZsb2F0IHkpIGZpbmFsOwotICAgIHZvaWQgdW5pZm9y
bTJmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWksIGNvbnN0IEdDR0xmbG9hdCogdikgZmlu
YWw7CisgICAgdm9pZCB1bmlmb3JtMmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0
IEdDR0xmbG9hdD4gdikgZmluYWw7CiAgICAgdm9pZCB1bmlmb3JtMmkoR0NHTGludCBsb2NhdGlv
biwgR0NHTGludCB4LCBHQ0dMaW50IHkpIGZpbmFsOwotICAgIHZvaWQgdW5pZm9ybTJpdihHQ0dM
aW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWksIGNvbnN0IEdDR0xpbnQqIHYpIGZpbmFsOworICAgIHZv
aWQgdW5pZm9ybTJpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50PiB2
KSBmaW5hbDsKICAgICB2b2lkIHVuaWZvcm0zZihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMZmxvYXQg
eCwgR0NHTGZsb2F0IHksIEdDR0xmbG9hdCB6KSBmaW5hbDsKLSAgICB2b2lkIHVuaWZvcm0zZnYo
R0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpLCBjb25zdCBHQ0dMZmxvYXQqIHYpIGZpbmFsOwor
ICAgIHZvaWQgdW5pZm9ybTNmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dM
ZmxvYXQ+IHYpIGZpbmFsOwogICAgIHZvaWQgdW5pZm9ybTNpKEdDR0xpbnQgbG9jYXRpb24sIEdD
R0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMaW50IHopIGZpbmFsOwotICAgIHZvaWQgdW5pZm9ybTNp
dihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWksIGNvbnN0IEdDR0xpbnQqIHYpIGZpbmFsOwor
ICAgIHZvaWQgdW5pZm9ybTNpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dM
aW50PiB2KSBmaW5hbDsKICAgICB2b2lkIHVuaWZvcm00ZihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dM
ZmxvYXQgeCwgR0NHTGZsb2F0IHksIEdDR0xmbG9hdCB6LCBHQ0dMZmxvYXQgdykgZmluYWw7Ci0g
ICAgdm9pZCB1bmlmb3JtNGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSwgY29uc3QgR0NH
TGZsb2F0KiB2KSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm00ZnYoR0NHTGludCBsb2NhdGlvbiwg
R0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiB2KSBmaW5hbDsKICAgICB2b2lkIHVuaWZvcm00aShH
Q0dMaW50IGxvY2F0aW9uLCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTGludCB6LCBHQ0dMaW50
IHcpIGZpbmFsOwotICAgIHZvaWQgdW5pZm9ybTRpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6
ZWksIGNvbnN0IEdDR0xpbnQqIHYpIGZpbmFsOwotICAgIHZvaWQgdW5pZm9ybU1hdHJpeDJmdihH
Q0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWksIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3Qg
R0NHTGZsb2F0KiB2YWx1ZSkgZmluYWw7Ci0gICAgdm9pZCB1bmlmb3JtTWF0cml4M2Z2KEdDR0xp
bnQgbG9jYXRpb24sIEdDR0xzaXplaSwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHQ0dM
ZmxvYXQqIHZhbHVlKSBmaW5hbDsKLSAgICB2b2lkIHVuaWZvcm1NYXRyaXg0ZnYoR0NHTGludCBs
b2NhdGlvbiwgR0NHTHNpemVpLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9h
dCogdmFsdWUpIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybTRpdihHQ0dMaW50IGxvY2F0aW9uLCBH
Q0dMU3Bhbjxjb25zdCBHQ0dMaW50PiB2KSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm1NYXRyaXgy
ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25z
dCBHQ0dMZmxvYXQ+IHZhbHVlKSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm1NYXRyaXgzZnYoR0NH
TGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dM
ZmxvYXQ+IHZhbHVlKSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm1NYXRyaXg0ZnYoR0NHTGludCBs
b2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+
IHZhbHVlKSBmaW5hbDsKIAogICAgIHZvaWQgdXNlUHJvZ3JhbShQbGF0Zm9ybUdMT2JqZWN0KSBm
aW5hbDsKICAgICB2b2lkIHZhbGlkYXRlUHJvZ3JhbShQbGF0Zm9ybUdMT2JqZWN0KSBmaW5hbDsK
QEAgLTI4NiwxMyArMjg2LDEzIEBAIHB1YmxpYzoKICNlbmRpZgogCiAgICAgdm9pZCB2ZXJ0ZXhB
dHRyaWIxZihHQ0dMdWludCBpbmRleCwgR0NHTGZsb2F0IHgpIGZpbmFsOwotICAgIHZvaWQgdmVy
dGV4QXR0cmliMWZ2KEdDR0x1aW50IGluZGV4LCBjb25zdCBHQ0dMZmxvYXQqIHZhbHVlcykgZmlu
YWw7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWIxZnYoR0NHTHVpbnQgaW5kZXgsIEdDR0xTcGFuPGNv
bnN0IEdDR0xmbG9hdCwgMT4gdmFsdWVzKSBmaW5hbDsKICAgICB2b2lkIHZlcnRleEF0dHJpYjJm
KEdDR0x1aW50IGluZGV4LCBHQ0dMZmxvYXQgeCwgR0NHTGZsb2F0IHkpIGZpbmFsOwotICAgIHZv
aWQgdmVydGV4QXR0cmliMmZ2KEdDR0x1aW50IGluZGV4LCBjb25zdCBHQ0dMZmxvYXQqIHZhbHVl
cykgZmluYWw7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWIyZnYoR0NHTHVpbnQgaW5kZXgsIEdDR0xT
cGFuPGNvbnN0IEdDR0xmbG9hdCwgMj4gdmFsdWVzKSBmaW5hbDsKICAgICB2b2lkIHZlcnRleEF0
dHJpYjNmKEdDR0x1aW50IGluZGV4LCBHQ0dMZmxvYXQgeCwgR0NHTGZsb2F0IHksIEdDR0xmbG9h
dCB6KSBmaW5hbDsKLSAgICB2b2lkIHZlcnRleEF0dHJpYjNmdihHQ0dMdWludCBpbmRleCwgY29u
c3QgR0NHTGZsb2F0KiB2YWx1ZXMpIGZpbmFsOworICAgIHZvaWQgdmVydGV4QXR0cmliM2Z2KEdD
R0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQsIDM+IHZhbHVlcykgZmluYWw7
CiAgICAgdm9pZCB2ZXJ0ZXhBdHRyaWI0ZihHQ0dMdWludCBpbmRleCwgR0NHTGZsb2F0IHgsIEdD
R0xmbG9hdCB5LCBHQ0dMZmxvYXQgeiwgR0NHTGZsb2F0IHcpIGZpbmFsOwotICAgIHZvaWQgdmVy
dGV4QXR0cmliNGZ2KEdDR0x1aW50IGluZGV4LCBjb25zdCBHQ0dMZmxvYXQqIHZhbHVlcykgZmlu
YWw7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWI0ZnYoR0NHTHVpbnQgaW5kZXgsIEdDR0xTcGFuPGNv
bnN0IEdDR0xmbG9hdCwgND4gdmFsdWVzKSBmaW5hbDsKICAgICB2b2lkIHZlcnRleEF0dHJpYlBv
aW50ZXIoR0NHTHVpbnQgaW5kZXgsIEdDR0xpbnQgc2l6ZSwgR0NHTGVudW0gdHlwZSwgR0NHTGJv
b2xlYW4gbm9ybWFsaXplZCwgR0NHTHNpemVpIHN0cmlkZSwgR0NHTGludHB0ciBvZmZzZXQpIGZp
bmFsOwogCiAgICAgdm9pZCB2aWV3cG9ydChHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVp
IHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KSBmaW5hbDsKQEAgLTMyMyw4ICszMjMsOCBAQCBwdWJs
aWM6CiAKICAgICB2b2lkIGJsaXRGcmFtZWJ1ZmZlcihHQ0dMaW50IHNyY1gwLCBHQ0dMaW50IHNy
Y1kwLCBHQ0dMaW50IHNyY1gxLCBHQ0dMaW50IHNyY1kxLCBHQ0dMaW50IGRzdFgwLCBHQ0dMaW50
IGRzdFkwLCBHQ0dMaW50IGRzdFgxLCBHQ0dMaW50IGRzdFkxLCBHQ0dMYml0ZmllbGQgbWFzaywg
R0NHTGVudW0gZmlsdGVyKSBmaW5hbDsKICAgICB2b2lkIGZyYW1lYnVmZmVyVGV4dHVyZUxheWVy
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gYXR0YWNobWVudCwgUGxhdGZvcm1HTE9iamVjdCB0
ZXh0dXJlLCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IGxheWVyKSBmaW5hbDsKLSAgICB2b2lkIGlu
dmFsaWRhdGVGcmFtZWJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaSBudW1BdHRhY2ht
ZW50cywgY29uc3QgR0NHTGVudW0qIGF0dGFjaG1lbnRzKSBmaW5hbDsKLSAgICB2b2lkIGludmFs
aWRhdGVTdWJGcmFtZWJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaSBudW1BdHRhY2ht
ZW50cywgY29uc3QgR0NHTGVudW0qIGF0dGFjaG1lbnRzLCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwg
R0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KSBmaW5hbDsKKyAgICB2b2lkIGludmFs
aWRhdGVGcmFtZWJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQsIEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVt
PiBhdHRhY2htZW50cykgZmluYWw7CisgICAgdm9pZCBpbnZhbGlkYXRlU3ViRnJhbWVidWZmZXIo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4gYXR0YWNobWVudHMsIEdD
R0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpIGZp
bmFsOwogICAgIHZvaWQgcmVhZEJ1ZmZlcihHQ0dMZW51bSBzcmMpIGZpbmFsOwogCiAgICAgLy8g
Z2V0SW50ZXJuYWxGb3JtYXRQYXJhbWV0ZXIKQEAgLTM0MiwyOCArMzQyLDI4IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHVuaWZvcm0ydWkoR0NHTGludCBsb2NhdGlvbiwgR0NHTHVpbnQgdjAsIEdDR0x1
aW50IHYxKSBmaW5hbDsKICAgICB2b2lkIHVuaWZvcm0zdWkoR0NHTGludCBsb2NhdGlvbiwgR0NH
THVpbnQgdjAsIEdDR0x1aW50IHYxLCBHQ0dMdWludCB2MikgZmluYWw7CiAgICAgdm9pZCB1bmlm
b3JtNHVpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0x1aW50IHYwLCBHQ0dMdWludCB2MSwgR0NHTHVp
bnQgdjIsIEdDR0x1aW50IHYzKSBmaW5hbDsKLSAgICB2b2lkIHVuaWZvcm0xdWl2KEdDR0xpbnQg
bG9jYXRpb24sIGNvbnN0IEdDR0x1aW50KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1
aW50IHNyY0xlbmd0aCkgZmluYWw7Ci0gICAgdm9pZCB1bmlmb3JtMnVpdihHQ0dMaW50IGxvY2F0
aW9uLCBjb25zdCBHQ0dMdWludCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBz
cmNMZW5ndGgpIGZpbmFsOwotICAgIHZvaWQgdW5pZm9ybTN1aXYoR0NHTGludCBsb2NhdGlvbiwg
Y29uc3QgR0NHTHVpbnQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVu
Z3RoKSBmaW5hbDsKLSAgICB2b2lkIHVuaWZvcm00dWl2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0
IEdDR0x1aW50KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkg
ZmluYWw7Ci0gICAgdm9pZCB1bmlmb3JtTWF0cml4MngzZnYoR0NHTGludCBsb2NhdGlvbiwgR0NH
TGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNyY09m
ZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKSBmaW5hbDsKLSAgICB2b2lkIHVuaWZvcm1NYXRyaXgz
eDJmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xm
bG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpIGZpbmFs
OwotICAgIHZvaWQgdW5pZm9ybU1hdHJpeDJ4NGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29s
ZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQs
IEdDR0x1aW50IHNyY0xlbmd0aCkgZmluYWw7Ci0gICAgdm9pZCB1bmlmb3JtTWF0cml4NHgyZnYo
R0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHQ0dMZmxvYXQq
IGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKSBmaW5hbDsKLSAg
ICB2b2lkIHVuaWZvcm1NYXRyaXgzeDRmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0
cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dM
dWludCBzcmNMZW5ndGgpIGZpbmFsOwotICAgIHZvaWQgdW5pZm9ybU1hdHJpeDR4M2Z2KEdDR0xp
bnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiBkYXRh
LCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkgZmluYWw7CisgICAgdm9p
ZCB1bmlmb3JtMXVpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdWludD4p
IGZpbmFsOworICAgIHZvaWQgdW5pZm9ybTJ1aXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48
Y29uc3QgR0NHTHVpbnQ+KSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm0zdWl2KEdDR0xpbnQgbG9j
YXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0x1aW50PikgZmluYWw7CisgICAgdm9pZCB1bmlmb3Jt
NHVpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdWludD4pIGZpbmFsOwor
ICAgIHZvaWQgdW5pZm9ybU1hdHJpeDJ4M2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFu
IHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiBkYXRhKSBmaW5hbDsKKyAgICB2
b2lkIHVuaWZvcm1NYXRyaXgzeDJmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFu
c3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gZGF0YSkgZmluYWw7CisgICAgdm9pZCB1
bmlmb3JtTWF0cml4Mng0ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3Nl
LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEpIGZpbmFsOworICAgIHZvaWQgdW5pZm9y
bU1hdHJpeDR4MmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NH
TFNwYW48Y29uc3QgR0NHTGZsb2F0PiBkYXRhKSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm1NYXRy
aXgzeDRmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFu
PGNvbnN0IEdDR0xmbG9hdD4gZGF0YSkgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtTWF0cml4NHgz
ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25z
dCBHQ0dMZmxvYXQ+IGRhdGEpIGZpbmFsOwogICAgIHZvaWQgdmVydGV4QXR0cmliSTRpKEdDR0x1
aW50IGluZGV4LCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTGludCB6LCBHQ0dMaW50IHcpIGZp
bmFsOwotICAgIHZvaWQgdmVydGV4QXR0cmliSTRpdihHQ0dMdWludCBpbmRleCwgY29uc3QgR0NH
TGludCogdmFsdWVzKSBmaW5hbDsKKyAgICB2b2lkIHZlcnRleEF0dHJpYkk0aXYoR0NHTHVpbnQg
aW5kZXgsIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQsIDQ+IHZhbHVlcykgZmluYWw7CiAgICAgdm9p
ZCB2ZXJ0ZXhBdHRyaWJJNHVpKEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCB4LCBHQ0dMdWludCB5
LCBHQ0dMdWludCB6LCBHQ0dMdWludCB3KSBmaW5hbDsKLSAgICB2b2lkIHZlcnRleEF0dHJpYkk0
dWl2KEdDR0x1aW50IGluZGV4LCBjb25zdCBHQ0dMdWludCogdmFsdWVzKSBmaW5hbDsKKyAgICB2
b2lkIHZlcnRleEF0dHJpYkk0dWl2KEdDR0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dM
dWludCwgND4gdmFsdWVzKSBmaW5hbDsKICAgICB2b2lkIHZlcnRleEF0dHJpYklQb2ludGVyKEdD
R0x1aW50IGluZGV4LCBHQ0dMaW50IHNpemUsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBzdHJp
ZGUsIEdDR0xpbnRwdHIgb2Zmc2V0KSBmaW5hbDsKIAogICAgIHZvaWQgZHJhd1JhbmdlRWxlbWVu
dHMoR0NHTGVudW0gbW9kZSwgR0NHTHVpbnQgc3RhcnQsIEdDR0x1aW50IGVuZCwgR0NHTHNpemVp
IGNvdW50LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCkgZmluYWw7CiAKLSAgICB2
b2lkIGRyYXdCdWZmZXJzKEdDR0xzaXplaSBuLCBjb25zdCBHQ0dMZW51bSogYnVmcykgZmluYWw7
Ci0gICAgdm9pZCBjbGVhckJ1ZmZlcml2KEdDR0xlbnVtIGJ1ZmZlciwgR0NHTGludCBkcmF3YnVm
ZmVyLCBjb25zdCBHQ0dMaW50KiB2YWx1ZXMsIEdDR0x1aW50IHNyY09mZnNldCkgZmluYWw7Ci0g
ICAgdm9pZCBjbGVhckJ1ZmZlcnVpdihHQ0dMZW51bSBidWZmZXIsIEdDR0xpbnQgZHJhd2J1ZmZl
ciwgY29uc3QgR0NHTHVpbnQqIHZhbHVlcywgR0NHTHVpbnQgc3JjT2Zmc2V0KSBmaW5hbDsKLSAg
ICB2b2lkIGNsZWFyQnVmZmVyZnYoR0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50IGRyYXdidWZmZXIs
IGNvbnN0IEdDR0xmbG9hdCogdmFsdWVzLCBHQ0dMdWludCBzcmNPZmZzZXQpIGZpbmFsOworICAg
IHZvaWQgZHJhd0J1ZmZlcnMoR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+IGJ1ZnMpIGZpbmFsOwor
ICAgIHZvaWQgY2xlYXJCdWZmZXJpdihHQ0dMZW51bSBidWZmZXIsIEdDR0xpbnQgZHJhd2J1ZmZl
ciwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gdmFsdWVzKSBmaW5hbDsKKyAgICB2b2lkIGNsZWFy
QnVmZmVydWl2KEdDR0xlbnVtIGJ1ZmZlciwgR0NHTGludCBkcmF3YnVmZmVyLCBHQ0dMU3Bhbjxj
b25zdCBHQ0dMdWludD4gdmFsdWVzKSBmaW5hbDsKKyAgICB2b2lkIGNsZWFyQnVmZmVyZnYoR0NH
TGVudW0gYnVmZmVyLCBHQ0dMaW50IGRyYXdidWZmZXIsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9h
dD4gdmFsdWVzKSBmaW5hbDsKICAgICB2b2lkIGNsZWFyQnVmZmVyZmkoR0NHTGVudW0gYnVmZmVy
LCBHQ0dMaW50IGRyYXdidWZmZXIsIEdDR0xmbG9hdCBkZXB0aCwgR0NHTGludCBzdGVuY2lsKSBm
aW5hbDsKIAogICAgIFBsYXRmb3JtR0xPYmplY3QgY3JlYXRlUXVlcnkoKSBmaW5hbDsKQEAgLTQy
NCwxOSArNDI0LDYgQEAgcHVibGljOgogICAgIHZvaWQgY29tcHJlc3NlZFRleFN1YkltYWdlMkQo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQg
eW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3Jt
YXQsIGNvbnN0IHZvaWQqIHNyY0RhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3Jj
TGVuZ3RoT3ZlcnJpZGUpOwogI2VuZGlmCiAKLSAgICB2b2lkIHVuaWZvcm0xZnYoR0NHTGludCBs
b2NhdGlvbiwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1
aW50IHNyY0xlbmd0aCkgZmluYWw7Ci0gICAgdm9pZCB1bmlmb3JtMmZ2KEdDR0xpbnQgbG9jYXRp
b24sIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBz
cmNMZW5ndGgpIGZpbmFsOwotICAgIHZvaWQgdW5pZm9ybTNmdihHQ0dMaW50IGxvY2F0aW9uLCBj
b25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVu
Z3RoKSBmaW5hbDsKLSAgICB2b2lkIHVuaWZvcm00ZnYoR0NHTGludCBsb2NhdGlvbiwgY29uc3Qg
R0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkg
ZmluYWw7Ci0KLSAgICB2b2lkIHVuaWZvcm0xaXYoR0NHTGludCBsb2NhdGlvbiwgY29uc3QgR0NH
TGludCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpIGZpbmFs
OwotICAgIHZvaWQgdW5pZm9ybTJpdihHQ0dMaW50IGxvY2F0aW9uLCBjb25zdCBHQ0dMaW50KiBk
YXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkgZmluYWw7Ci0gICAg
dm9pZCB1bmlmb3JtM2l2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0xpbnQqIGRhdGEsIEdD
R0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKSBmaW5hbDsKLSAgICB2b2lkIHVu
aWZvcm00aXYoR0NHTGludCBsb2NhdGlvbiwgY29uc3QgR0NHTGludCogZGF0YSwgR0NHTHVpbnQg
c3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpIGZpbmFsOwotCi0gICAgdm9pZCB1bmlmb3Jt
TWF0cml4MmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3Qg
R0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkg
ZmluYWw7Ci0gICAgdm9pZCB1bmlmb3JtTWF0cml4M2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xi
b29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZz
ZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkgZmluYWw7Ci0gICAgdm9pZCB1bmlmb3JtTWF0cml4NGZ2
KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0
KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkgZmluYWw7CiAg
ICAgdm9pZCBnZXRBY3RpdmVVbmlmb3JtQmxvY2tpdihHQ0dMdWludCBwcm9ncmFtLCBHQ0dMdWlu
dCB1bmlmb3JtQmxvY2tJbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xpbnQ+IHBh
cmFtcykgZmluYWw7CiAKICNpZiAhVVNFKEFOR0xFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29tbW9u
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0Nv
bnRleHRHTE9wZW5HTENvbW1vbi5jcHAKaW5kZXggYWJiN2UyNWEwNmYwODVjY2VhY2ZmNWFiNmU4
MjA0NTdjZTlhMmQ5My4uZWJiM2Y5YzFhMjNlZDk0YTZiODlmNGU1MzRlNzVhMWVjMGEzM2E3OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBo
aWNzQ29udGV4dEdMT3BlbkdMQ29tbW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb21tb24uY3BwCkBAIC01
NTIsMjAgKzU1MiwyMCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpidWZmZXJEYXRh
KEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpcHRyIHNpemUsIEdDRwogICAgIDo6Z2xCdWZmZXJE
YXRhKHRhcmdldCwgc2l6ZSwgMCwgdXNhZ2UpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpidWZmZXJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpcHRyIHNpemUsIGNv
bnN0IHZvaWQqIGRhdGEsIEdDR0xlbnVtIHVzYWdlKQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6YnVmZmVyRGF0YShHQ0dMZW51bSB0YXJnZXQsIEdDR0xTcGFuPGNvbnN0IHZvaWQ+IGRh
dGEsIEdDR0xlbnVtIHVzYWdlKQogewogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIDo6Z2xCdWZmZXJEYXRhKHRhcmdldCwgc2l6ZSwgZGF0YSwg
dXNhZ2UpOworICAgIDo6Z2xCdWZmZXJEYXRhKHRhcmdldCwgZGF0YS5idWZTaXplLCBkYXRhLmRh
dGEsIHVzYWdlKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6YnVmZmVyU3Vi
RGF0YShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnRwdHIgb2Zmc2V0LCBHQ0dMc2l6ZWlwdHIgc2l6
ZSwgY29uc3Qgdm9pZCogZGF0YSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmJ1ZmZl
clN1YkRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50cHRyIG9mZnNldCwgR0NHTFNwYW48Y29u
c3QgR0NHTHZvaWQ+IGRhdGEpCiB7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgOjpnbEJ1ZmZlclN1YkRhdGEodGFyZ2V0LCBvZmZzZXQsIHNp
emUsIGRhdGEpOworICAgIDo6Z2xCdWZmZXJTdWJEYXRhKHRhcmdldCwgb2Zmc2V0LCBkYXRhLmJ1
ZlNpemUsIGRhdGEuZGF0YSk7CiB9CiAKIEdDR0xlbnVtIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpjaGVja0ZyYW1lYnVmZmVyU3RhdHVzKEdDR0xlbnVtIHRhcmdldCkKQEAgLTE0MTUsMTIgKzE0
MTUsMTIgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTFmKEdDR0xpbnQg
bG9jYXRpb24sIEdDR0xmbG9hdCB2MCkKICAgICA6OmdsVW5pZm9ybTFmKGxvY2F0aW9uLCB2MCk7
CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0xZnYoR0NHTGludCBs
b2NhdGlvbiwgR0NHTHNpemVpIHNpemUsIGNvbnN0IEdDR0xmbG9hdCogYXJyYXkpCit2b2lkIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMWZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xT
cGFuPGNvbnN0IEdDR0xmbG9hdD4gYXJyYXkpCiB7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJl
bnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgOjpnbFVuaWZvcm0xZnYobG9jYXRpb24sIHNp
emUsIGFycmF5KTsKKyAgICA6OmdsVW5pZm9ybTFmdihsb2NhdGlvbiwgYXJyYXkuYnVmU2l6ZSwg
YXJyYXkpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMmYoR0NH
TGludCBsb2NhdGlvbiwgR0NHTGZsb2F0IHYwLCBHQ0dMZmxvYXQgdjEpCkBAIC0xNDMxLDEzICsx
NDMxLDEzIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0yZihHQ0dMaW50
IGxvY2F0aW9uLCBHQ0dMZmxvYXQgdjAsIEdDR0xmbG9hCiAgICAgOjpnbFVuaWZvcm0yZihsb2Nh
dGlvbiwgdjAsIHYxKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9y
bTJmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgc2l6ZSwgY29uc3QgR0NHTGZsb2F0KiBh
cnJheSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0yZnYoR0NHTGludCBs
b2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiBhcnJheSkKIHsKLSAgICAvLyBGSVhN
RTogbGVuZ3RoIG5lZWRzIHRvIGJlIGEgbXVsdGlwbGUgb2YgMi4KKyAgICBBU1NFUlQoIShhcnJh
eS5idWZTaXplICUgMikpOwogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIDo6Z2xVbmlmb3JtMmZ2KGxvY2F0aW9uLCBzaXplLCBhcnJheSk7Cisg
ICAgOjpnbFVuaWZvcm0yZnYobG9jYXRpb24sIGFycmF5LmJ1ZlNpemUgLyAyLCBhcnJheSk7CiB9
CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0zZihHQ0dMaW50IGxvY2F0
aW9uLCBHQ0dMZmxvYXQgdjAsIEdDR0xmbG9hdCB2MSwgR0NHTGZsb2F0IHYyKQpAQCAtMTQ0OCwx
MyArMTQ0OCwxMyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtM2YoR0NH
TGludCBsb2NhdGlvbiwgR0NHTGZsb2F0IHYwLCBHQ0dMZmxvYQogICAgIDo6Z2xVbmlmb3JtM2Yo
bG9jYXRpb24sIHYwLCB2MSwgdjIpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
Ojp1bmlmb3JtM2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBzaXplLCBjb25zdCBHQ0dM
ZmxvYXQqIGFycmF5KQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTNmdihH
Q0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGFycmF5KQogewotICAg
IC8vIEZJWE1FOiBsZW5ndGggbmVlZHMgdG8gYmUgYSBtdWx0aXBsZSBvZiAzLgorICAgIEFTU0VS
VCghKGFycmF5LmJ1ZlNpemUgJSAzKSk7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgOjpnbFVuaWZvcm0zZnYobG9jYXRpb24sIHNpemUsIGFy
cmF5KTsKKyAgICA6OmdsVW5pZm9ybTNmdihsb2NhdGlvbiwgYXJyYXkuYnVmU2l6ZSAvIDMsIGFy
cmF5KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTRmKEdDR0xp
bnQgbG9jYXRpb24sIEdDR0xmbG9hdCB2MCwgR0NHTGZsb2F0IHYxLCBHQ0dMZmxvYXQgdjIsIEdD
R0xmbG9hdCB2MykKQEAgLTE0NjUsMTMgKzE0NjUsMTMgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6dW5pZm9ybTRmKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xmbG9hdCB2MCwgR0NHTGZs
b2EKICAgICA6OmdsVW5pZm9ybTRmKGxvY2F0aW9uLCB2MCwgdjEsIHYyLCB2Myk7CiB9CiAKLXZv
aWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm00ZnYoR0NHTGludCBsb2NhdGlvbiwg
R0NHTHNpemVpIHNpemUsIGNvbnN0IEdDR0xmbG9hdCogYXJyYXkpCit2b2lkIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjp1bmlmb3JtNGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0
IEdDR0xmbG9hdD4gYXJyYXkpCiB7Ci0gICAgLy8gRklYTUU6IGxlbmd0aCBuZWVkcyB0byBiZSBh
IG11bHRpcGxlIG9mIDQuCisgICAgQVNTRVJUKCEoYXJyYXkuYnVmU2l6ZSAlIDQpKTsKICAgICBp
ZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICA6OmdsVW5p
Zm9ybTRmdihsb2NhdGlvbiwgc2l6ZSwgYXJyYXkpOworICAgIDo6Z2xVbmlmb3JtNGZ2KGxvY2F0
aW9uLCBhcnJheS5idWZTaXplIC8gNCwgYXJyYXkpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjp1bmlmb3JtMWkoR0NHTGludCBsb2NhdGlvbiwgR0NHTGludCB2MCkKQEAgLTE0
ODIsMTIgKzE0ODIsMTIgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTFp
KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xpbnQgdjApCiAgICAgOjpnbFVuaWZvcm0xaShsb2NhdGlv
biwgdjApOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMWl2KEdD
R0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBzaXplLCBjb25zdCBHQ0dMaW50KiBhcnJheSkKK3Zv
aWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0xaXYoR0NHTGludCBsb2NhdGlvbiwg
R0NHTFNwYW48Y29uc3QgR0NHTGludD4gYXJyYXkpCiB7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1
cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgOjpnbFVuaWZvcm0xaXYobG9jYXRpb24s
IHNpemUsIGFycmF5KTsKKyAgICA6OmdsVW5pZm9ybTFpdihsb2NhdGlvbiwgYXJyYXkuYnVmU2l6
ZSwgYXJyYXkpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMmko
R0NHTGludCBsb2NhdGlvbiwgR0NHTGludCB2MCwgR0NHTGludCB2MSkKQEAgLTE0OTgsMTMgKzE0
OTgsMTMgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTJpKEdDR0xpbnQg
bG9jYXRpb24sIEdDR0xpbnQgdjAsIEdDR0xpbnQgdjEKICAgICA6OmdsVW5pZm9ybTJpKGxvY2F0
aW9uLCB2MCwgdjEpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3Jt
Mml2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBzaXplLCBjb25zdCBHQ0dMaW50KiBhcnJh
eSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0yaXYoR0NHTGludCBsb2Nh
dGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gYXJyYXkpCiB7Ci0gICAgLy8gRklYTUU6IGxl
bmd0aCBuZWVkcyB0byBiZSBhIG11bHRpcGxlIG9mIDIuCisgICAgQVNTRVJUKCEoYXJyYXkuYnVm
U2l6ZSAlIDIpKTsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1
cm47CiAKLSAgICA6OmdsVW5pZm9ybTJpdihsb2NhdGlvbiwgc2l6ZSwgYXJyYXkpOworICAgIDo6
Z2xVbmlmb3JtMml2KGxvY2F0aW9uLCBhcnJheS5idWZTaXplIC8gMiwgYXJyYXkpOwogfQogCiB2
b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtM2koR0NHTGludCBsb2NhdGlvbiwg
R0NHTGludCB2MCwgR0NHTGludCB2MSwgR0NHTGludCB2MikKQEAgLTE1MTUsMTMgKzE1MTUsMTMg
QEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTNpKEdDR0xpbnQgbG9jYXRp
b24sIEdDR0xpbnQgdjAsIEdDR0xpbnQgdjEKICAgICA6OmdsVW5pZm9ybTNpKGxvY2F0aW9uLCB2
MCwgdjEsIHYyKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTNp
dihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgc2l6ZSwgY29uc3QgR0NHTGludCogYXJyYXkp
Cit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtM2l2KEdDR0xpbnQgbG9jYXRp
b24sIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+IGFycmF5KQogewotICAgIC8vIEZJWE1FOiBsZW5n
dGggbmVlZHMgdG8gYmUgYSBtdWx0aXBsZSBvZiAzLgorICAgIEFTU0VSVCghKGFycmF5LmJ1ZlNp
emUgJSAzKSk7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgOjpnbFVuaWZvcm0zaXYobG9jYXRpb24sIHNpemUsIGFycmF5KTsKKyAgICA6Omds
VW5pZm9ybTNpdihsb2NhdGlvbiwgYXJyYXkuYnVmU2l6ZSAvIDMsIGFycmF5KTsKIH0KIAogdm9p
ZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTRpKEdDR0xpbnQgbG9jYXRpb24sIEdD
R0xpbnQgdjAsIEdDR0xpbnQgdjEsIEdDR0xpbnQgdjIsIEdDR0xpbnQgdjMpCkBAIC0xNTMyLDQw
ICsxNTMyLDQwIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm00aShHQ0dM
aW50IGxvY2F0aW9uLCBHQ0dMaW50IHYwLCBHQ0dMaW50IHYxCiAgICAgOjpnbFVuaWZvcm00aShs
b2NhdGlvbiwgdjAsIHYxLCB2MiwgdjMpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjp1bmlmb3JtNGl2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBzaXplLCBjb25zdCBH
Q0dMaW50KiBhcnJheSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm00aXYo
R0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gYXJyYXkpCiB7Ci0gICAg
Ly8gRklYTUU6IGxlbmd0aCBuZWVkcyB0byBiZSBhIG11bHRpcGxlIG9mIDQuCisgICAgQVNTRVJU
KCEoYXJyYXkuYnVmU2l6ZSAlIDQpKTsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQog
ICAgICAgICByZXR1cm47CiAKLSAgICA6OmdsVW5pZm9ybTRpdihsb2NhdGlvbiwgc2l6ZSwgYXJy
YXkpOworICAgIDo6Z2xVbmlmb3JtNGl2KGxvY2F0aW9uLCBhcnJheS5idWZTaXplIC8gNCwgYXJy
YXkpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4MmZ2
KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBzaXplLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2Us
IGNvbnN0IEdDR0xmbG9hdCogYXJyYXkpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1
bmlmb3JtTWF0cml4MmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwg
R0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiBhcnJheSkKIHsKLSAgICAvLyBGSVhNRTogbGVuZ3Ro
IG5lZWRzIHRvIGJlIGEgbXVsdGlwbGUgb2YgNC4KKyAgICBBU1NFUlQoIShhcnJheS5idWZTaXpl
ICUgNCkpOwogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIDo6Z2xVbmlmb3JtTWF0cml4MmZ2KGxvY2F0aW9uLCBzaXplLCB0cmFuc3Bvc2UsIGFy
cmF5KTsKKyAgICA6OmdsVW5pZm9ybU1hdHJpeDJmdihsb2NhdGlvbiwgYXJyYXkuYnVmU2l6ZSAv
IDQsIHRyYW5zcG9zZSwgYXJyYXkpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
Ojp1bmlmb3JtTWF0cml4M2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBzaXplLCBHQ0dM
Ym9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogYXJyYXkpCit2b2lkIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4M2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xi
b29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiBhcnJheSkKIHsKLSAg
ICAvLyBGSVhNRTogbGVuZ3RoIG5lZWRzIHRvIGJlIGEgbXVsdGlwbGUgb2YgOS4KKyAgICBBU1NF
UlQoIShhcnJheS5idWZTaXplICUgOSkpOwogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkp
CiAgICAgICAgIHJldHVybjsKIAotICAgIDo6Z2xVbmlmb3JtTWF0cml4M2Z2KGxvY2F0aW9uLCBz
aXplLCB0cmFuc3Bvc2UsIGFycmF5KTsKKyAgICA6OmdsVW5pZm9ybU1hdHJpeDNmdihsb2NhdGlv
biwgYXJyYXkuYnVmU2l6ZSAvIDksIHRyYW5zcG9zZSwgYXJyYXkpOwogfQogCi12b2lkIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4NGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdD
R0xzaXplaSBzaXplLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogYXJy
YXkpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4NGZ2KEdDR0xp
bnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZs
b2F0PiBhcnJheSkKIHsKLSAgICAvLyBGSVhNRTogbGVuZ3RoIG5lZWRzIHRvIGJlIGEgbXVsdGlw
bGUgb2YgMTYuCisgICAgQVNTRVJUKCEoYXJyYXkuYnVmU2l6ZSAlIDE2KSk7CiAgICAgaWYgKCFt
YWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgOjpnbFVuaWZvcm1N
YXRyaXg0ZnYobG9jYXRpb24sIHNpemUsIHRyYW5zcG9zZSwgYXJyYXkpOworICAgIDo6Z2xVbmlm
b3JtTWF0cml4NGZ2KGxvY2F0aW9uLCBhcnJheS5idWZTaXplIC8gMTYsIHRyYW5zcG9zZSwgYXJy
YXkpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1c2VQcm9ncmFtKFBsYXRm
b3JtR0xPYmplY3QgcHJvZ3JhbSkKQEAgLTE1OTQsNyArMTU5NCw3IEBAIHZvaWQgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYjFmKEdDR0x1aW50IGluZGV4LCBHQ0dMZmxvYXQg
djApCiAgICAgOjpnbFZlcnRleEF0dHJpYjFmKGluZGV4LCB2MCk7CiB9CiAKLXZvaWQgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYjFmdihHQ0dMdWludCBpbmRleCwgY29uc3Qg
R0NHTGZsb2F0KiBhcnJheSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZlcnRleEF0
dHJpYjFmdihHQ0dMdWludCBpbmRleCwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiBhcnJheSkK
IHsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CkBAIC0x
NjEwLDcgKzE2MTAsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2ZXJ0ZXhBdHRy
aWIyZihHQ0dMdWludCBpbmRleCwgR0NHTGZsb2F0IHYwLCBHQ0dMZgogICAgIDo6Z2xWZXJ0ZXhB
dHRyaWIyZihpbmRleCwgdjAsIHYxKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6dmVydGV4QXR0cmliMmZ2KEdDR0x1aW50IGluZGV4LCBjb25zdCBHQ0dMZmxvYXQqIGFycmF5
KQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliMmZ2KEdDR0x1aW50
IGluZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGFycmF5KQogewogICAgIGlmICghbWFr
ZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTE2MjYsNyArMTYyNiw3IEBA
IHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYjNmKEdDR0x1aW50IGlu
ZGV4LCBHQ0dMZmxvYXQgdjAsIEdDR0xmCiAgICAgOjpnbFZlcnRleEF0dHJpYjNmKGluZGV4LCB2
MCwgdjEsIHYyKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0
cmliM2Z2KEdDR0x1aW50IGluZGV4LCBjb25zdCBHQ0dMZmxvYXQqIGFycmF5KQordm9pZCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliM2Z2KEdDR0x1aW50IGluZGV4LCBHQ0dM
U3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGFycmF5KQogewogICAgIGlmICghbWFrZUNvbnRleHRDdXJy
ZW50KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTE2NDIsNyArMTY0Miw3IEBAIHZvaWQgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYjRmKEdDR0x1aW50IGluZGV4LCBHQ0dMZmxv
YXQgdjAsIEdDR0xmCiAgICAgOjpnbFZlcnRleEF0dHJpYjRmKGluZGV4LCB2MCwgdjEsIHYyLCB2
Myk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYjRmdihH
Q0dMdWludCBpbmRleCwgY29uc3QgR0NHTGZsb2F0KiBhcnJheSkKK3ZvaWQgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYjRmdihHQ0dMdWludCBpbmRleCwgR0NHTFNwYW48Y29u
c3QgR0NHTGZsb2F0PiBhcnJheSkKIHsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQog
ICAgICAgICByZXR1cm47CkBAIC0yMzk1LDE3ICsyMzk1LDE1IEBAIHZvaWQgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OmZyYW1lYnVmZmVyVGV4dHVyZUxheWVyKEdDR0xlbnVtIHRhcmdldCwgR0NH
TGVudW0KICAgICBVTlVTRURfUEFSQU0obGF5ZXIpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjppbnZhbGlkYXRlRnJhbWVidWZmZXIoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6
ZWkgbnVtQXR0YWNobWVudHMsIGNvbnN0IEdDR0xlbnVtKiBhdHRhY2htZW50cykKK3ZvaWQgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OmludmFsaWRhdGVGcmFtZWJ1ZmZlcihHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVtPiBhdHRhY2htZW50cykKIHsKICAgICBVTlVTRURf
UEFSQU0odGFyZ2V0KTsKLSAgICBVTlVTRURfUEFSQU0obnVtQXR0YWNobWVudHMpOwogICAgIFVO
VVNFRF9QQVJBTShhdHRhY2htZW50cyk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OmludmFsaWRhdGVTdWJGcmFtZWJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaSBu
dW1BdHRhY2htZW50cywgY29uc3QgR0NHTGVudW0qIGF0dGFjaG1lbnRzLCBHQ0dMaW50IHgsIEdD
R0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KQordm9pZCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6aW52YWxpZGF0ZVN1YkZyYW1lYnVmZmVyKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+IGF0dGFjaG1lbnRzLCBHQ0dMaW50IHgsIEdDR0xp
bnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KQogewogICAgIFVOVVNFRF9Q
QVJBTSh0YXJnZXQpOwotICAgIFVOVVNFRF9QQVJBTShudW1BdHRhY2htZW50cyk7CiAgICAgVU5V
U0VEX1BBUkFNKGF0dGFjaG1lbnRzKTsKICAgICBVTlVTRURfUEFSQU0oeCk7CiAgICAgVU5VU0VE
X1BBUkFNKHkpOwpAQCAtMjUyOSw5MCArMjUyNyw3MCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjp1bmlmb3JtNHVpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0x1aW50IHYwLCBHQ0dMdWlu
dAogICAgIFVOVVNFRF9QQVJBTSh2Myk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OnVuaWZvcm0xdWl2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0x1aW50KiBkYXRhLCBH
Q0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKK3ZvaWQgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OnVuaWZvcm0xdWl2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0
IEdDR0x1aW50PiBkYXRhKQogewogICAgIFVOVVNFRF9QQVJBTShsb2NhdGlvbik7CiAgICAgVU5V
U0VEX1BBUkFNKGRhdGEpOwotICAgIFVOVVNFRF9QQVJBTShzcmNPZmZzZXQpOwotICAgIFVOVVNF
RF9QQVJBTShzcmNMZW5ndGgpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1
bmlmb3JtMnVpdihHQ0dMaW50IGxvY2F0aW9uLCBjb25zdCBHQ0dMdWludCogZGF0YSwgR0NHTHVp
bnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjp1bmlmb3JtMnVpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dM
dWludD4gZGF0YSkKIHsKICAgICBVTlVTRURfUEFSQU0obG9jYXRpb24pOwogICAgIFVOVVNFRF9Q
QVJBTShkYXRhKTsKLSAgICBVTlVTRURfUEFSQU0oc3JjT2Zmc2V0KTsKLSAgICBVTlVTRURfUEFS
QU0oc3JjTGVuZ3RoKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9y
bTN1aXYoR0NHTGludCBsb2NhdGlvbiwgY29uc3QgR0NHTHVpbnQqIGRhdGEsIEdDR0x1aW50IHNy
Y09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6dW5pZm9ybTN1aXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTHVpbnQ+
IGRhdGEpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGxvY2F0aW9uKTsKICAgICBVTlVTRURfUEFSQU0o
ZGF0YSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY09mZnNldCk7Ci0gICAgVU5VU0VEX1BBUkFNKHNy
Y0xlbmd0aCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm00dWl2
KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0x1aW50KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZz
ZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVu
aWZvcm00dWl2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0x1aW50PiBkYXRh
KQogewogICAgIFVOVVNFRF9QQVJBTShsb2NhdGlvbik7CiAgICAgVU5VU0VEX1BBUkFNKGRhdGEp
OwotICAgIFVOVVNFRF9QQVJBTShzcmNPZmZzZXQpOwotICAgIFVOVVNFRF9QQVJBTShzcmNMZW5n
dGgpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4Mngz
ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHQ0dMZmxv
YXQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQordm9pZCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybU1hdHJpeDJ4M2Z2KEdDR0xpbnQgbG9jYXRp
b24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiBkYXRh
KQogewogICAgIFVOVVNFRF9QQVJBTShsb2NhdGlvbik7CiAgICAgVU5VU0VEX1BBUkFNKHRyYW5z
cG9zZSk7CiAgICAgVU5VU0VEX1BBUkFNKGRhdGEpOwotICAgIFVOVVNFRF9QQVJBTShzcmNPZmZz
ZXQpOwotICAgIFVOVVNFRF9QQVJBTShzcmNMZW5ndGgpOwogfQogCi12b2lkIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4M3gyZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJv
b2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNl
dCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5p
Zm9ybU1hdHJpeDN4MmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwg
R0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiBkYXRhKQogewogICAgIFVOVVNFRF9QQVJBTShsb2Nh
dGlvbik7CiAgICAgVU5VU0VEX1BBUkFNKHRyYW5zcG9zZSk7CiAgICAgVU5VU0VEX1BBUkFNKGRh
dGEpOwotICAgIFVOVVNFRF9QQVJBTShzcmNPZmZzZXQpOwotICAgIFVOVVNFRF9QQVJBTShzcmNM
ZW5ndGgpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4
Mng0ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHQ0dM
ZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQordm9p
ZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybU1hdHJpeDJ4NGZ2KEdDR0xpbnQgbG9j
YXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiBk
YXRhKQogewogICAgIFVOVVNFRF9QQVJBTShsb2NhdGlvbik7CiAgICAgVU5VU0VEX1BBUkFNKHRy
YW5zcG9zZSk7CiAgICAgVU5VU0VEX1BBUkFNKGRhdGEpOwotICAgIFVOVVNFRF9QQVJBTShzcmNP
ZmZzZXQpOwotICAgIFVOVVNFRF9QQVJBTShzcmNMZW5ndGgpOwogfQogCi12b2lkIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4NHgyZnYoR0NHTGludCBsb2NhdGlvbiwgR0NH
TGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNyY09m
ZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
dW5pZm9ybU1hdHJpeDR4MmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9z
ZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiBkYXRhKQogewogICAgIFVOVVNFRF9QQVJBTShs
b2NhdGlvbik7CiAgICAgVU5VU0VEX1BBUkFNKHRyYW5zcG9zZSk7CiAgICAgVU5VU0VEX1BBUkFN
KGRhdGEpOwotICAgIFVOVVNFRF9QQVJBTShzcmNPZmZzZXQpOwotICAgIFVOVVNFRF9QQVJBTShz
cmNMZW5ndGgpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0
cml4M3g0ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBH
Q0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQor
dm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybU1hdHJpeDN4NGZ2KEdDR0xpbnQg
bG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0
PiBkYXRhKQogewogICAgIFVOVVNFRF9QQVJBTShsb2NhdGlvbik7CiAgICAgVU5VU0VEX1BBUkFN
KHRyYW5zcG9zZSk7CiAgICAgVU5VU0VEX1BBUkFNKGRhdGEpOwotICAgIFVOVVNFRF9QQVJBTShz
cmNPZmZzZXQpOwotICAgIFVOVVNFRF9QQVJBTShzcmNMZW5ndGgpOwogfQogCi12b2lkIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4NHgzZnYoR0NHTGludCBsb2NhdGlvbiwg
R0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNy
Y09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6dW5pZm9ybU1hdHJpeDR4M2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5z
cG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiBkYXRhKQogewogICAgIFVOVVNFRF9QQVJB
TShsb2NhdGlvbik7CiAgICAgVU5VU0VEX1BBUkFNKHRyYW5zcG9zZSk7CiAgICAgVU5VU0VEX1BB
UkFNKGRhdGEpOwotICAgIFVOVVNFRF9QQVJBTShzcmNPZmZzZXQpOwotICAgIFVOVVNFRF9QQVJB
TShzcmNMZW5ndGgpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2ZXJ0ZXhB
dHRyaWJJNGkoR0NHTHVpbnQgaW5kZXgsIEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMaW50IHos
IEdDR0xpbnQgdykKQEAgLTI2MjQsNyArMjYwMiw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OnZlcnRleEF0dHJpYkk0aShHQ0dMdWludCBpbmRleCwgR0NHTGludCB4LCBHQ0dMaW50
CiAgICAgVU5VU0VEX1BBUkFNKHcpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
Ojp2ZXJ0ZXhBdHRyaWJJNGl2KEdDR0x1aW50IGluZGV4LCBjb25zdCBHQ0dMaW50KiB2YWx1ZXMp
Cit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2ZXJ0ZXhBdHRyaWJJNGl2KEdDR0x1aW50
IGluZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50PiB2YWx1ZXMpCiB7CiAgICAgVU5VU0VEX1BB
UkFNKGluZGV4KTsKICAgICBVTlVTRURfUEFSQU0odmFsdWVzKTsKQEAgLTI2MzksNyArMjYxNyw3
IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYkk0dWkoR0NHTHVp
bnQgaW5kZXgsIEdDR0x1aW50IHgsIEdDR0x1CiAgICAgVU5VU0VEX1BBUkFNKHcpOwogfQogCi12
b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2ZXJ0ZXhBdHRyaWJJNHVpdihHQ0dMdWludCBp
bmRleCwgY29uc3QgR0NHTHVpbnQqIHZhbHVlcykKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OnZlcnRleEF0dHJpYkk0dWl2KEdDR0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dM
dWludD4gdmFsdWVzKQogewogICAgIFVOVVNFRF9QQVJBTShpbmRleCk7CiAgICAgVU5VU0VEX1BB
UkFNKHZhbHVlcyk7CkBAIC0yNjY0LDM0ICsyNjQyLDMwIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmRyYXdSYW5nZUVsZW1lbnRzKEdDR0xlbnVtIG1vZGUsIEdDR0x1aW50IHN0YXJ0
LCBHCiAgICAgVU5VU0VEX1BBUkFNKG9mZnNldCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmRyYXdCdWZmZXJzKEdDR0xzaXplaSBuLCBjb25zdCBHQ0dMZW51bSogYnVmcykK
K3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmRyYXdCdWZmZXJzKEdDR0xTcGFuPGNvbnN0
IEdDR0xlbnVtPiBidWZzKQogewotICAgIFVOVVNFRF9QQVJBTShuKTsKICAgICBVTlVTRURfUEFS
QU0oYnVmcyk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNsZWFyQnVmZmVy
aXYoR0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50IGRyYXdidWZmZXIsIGNvbnN0IEdDR0xpbnQqIHZh
bHVlcywgR0NHTHVpbnQgc3JjT2Zmc2V0KQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
Y2xlYXJCdWZmZXJpdihHQ0dMZW51bSBidWZmZXIsIEdDR0xpbnQgZHJhd2J1ZmZlciwgR0NHTFNw
YW48Y29uc3QgR0NHTGludD4gdmFsdWVzKQogewogICAgIFVOVVNFRF9QQVJBTShidWZmZXIpOwog
ICAgIFVOVVNFRF9QQVJBTShkcmF3YnVmZmVyKTsKICAgICBVTlVTRURfUEFSQU0odmFsdWVzKTsK
LSAgICBVTlVTRURfUEFSQU0oc3JjT2Zmc2V0KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6Y2xlYXJCdWZmZXJ1aXYoR0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50IGRyYXdidWZm
ZXIsIGNvbnN0IEdDR0x1aW50KiB2YWx1ZXMsIEdDR0x1aW50IHNyY09mZnNldCkKK3ZvaWQgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OmNsZWFyQnVmZmVydWl2KEdDR0xlbnVtIGJ1ZmZlciwgR0NH
TGludCBkcmF3YnVmZmVyLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdWludD4gdmFsdWVzKQogewogICAg
IFVOVVNFRF9QQVJBTShidWZmZXIpOwogICAgIFVOVVNFRF9QQVJBTShkcmF3YnVmZmVyKTsKICAg
ICBVTlVTRURfUEFSQU0odmFsdWVzKTsKLSAgICBVTlVTRURfUEFSQU0oc3JjT2Zmc2V0KTsKIH0K
IAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y2xlYXJCdWZmZXJmdihHQ0dMZW51bSBi
dWZmZXIsIEdDR0xpbnQgZHJhd2J1ZmZlciwgY29uc3QgR0NHTGZsb2F0KiB2YWx1ZXMsIEdDR0x1
aW50IHNyY09mZnNldCkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNsZWFyQnVmZmVy
ZnYoR0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50IGRyYXdidWZmZXIsIEdDR0xTcGFuPGNvbnN0IEdD
R0xmbG9hdD4gdmFsdWVzKQogewogICAgIFVOVVNFRF9QQVJBTShidWZmZXIpOwogICAgIFVOVVNF
RF9QQVJBTShkcmF3YnVmZmVyKTsKICAgICBVTlVTRURfUEFSQU0odmFsdWVzKTsKLSAgICBVTlVT
RURfUEFSQU0oc3JjT2Zmc2V0KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
Y2xlYXJCdWZmZXJmaShHQ0dMZW51bSBidWZmZXIsIEdDR0xpbnQgZHJhd2J1ZmZlciwgR0NHTGZs
b2F0IGRlcHRoLCBHQ0dMaW50IHN0ZW5jaWwpCkBAIC0zMDIxLDk2ICsyOTk1LDYgQEAgdm9pZCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y29tcHJlc3NlZFRleFN1YkltYWdlMkQoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMaW50IGwKICAgICBVTlVTRURfUEFSQU0oc3JjTGVuZ3RoT3ZlcnJpZGUpOwog
fQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMWZ2KEdDR0xpbnQgbG9j
YXRpb24sIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWlu
dCBzcmNMZW5ndGgpCi17Ci0gICAgVU5VU0VEX1BBUkFNKGxvY2F0aW9uKTsKLSAgICBVTlVTRURf
UEFSQU0oZGF0YSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY09mZnNldCk7Ci0gICAgVU5VU0VEX1BB
UkFNKHNyY0xlbmd0aCk7Ci19Ci0KLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZv
cm0yZnYoR0NHTGludCBsb2NhdGlvbiwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBz
cmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKLXsKLSAgICBVTlVTRURfUEFSQU0obG9jYXRp
b24pOwotICAgIFVOVVNFRF9QQVJBTShkYXRhKTsKLSAgICBVTlVTRURfUEFSQU0oc3JjT2Zmc2V0
KTsKLSAgICBVTlVTRURfUEFSQU0oc3JjTGVuZ3RoKTsKLX0KLQotdm9pZCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6dW5pZm9ybTNmdihHQ0dMaW50IGxvY2F0aW9uLCBjb25zdCBHQ0dMZmxvYXQq
IGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQotewotICAgIFVO
VVNFRF9QQVJBTShsb2NhdGlvbik7Ci0gICAgVU5VU0VEX1BBUkFNKGRhdGEpOwotICAgIFVOVVNF
RF9QQVJBTShzcmNPZmZzZXQpOwotICAgIFVOVVNFRF9QQVJBTShzcmNMZW5ndGgpOwotfQotCi12
b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtNGZ2KEdDR0xpbnQgbG9jYXRpb24s
IGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNM
ZW5ndGgpCi17Ci0gICAgVU5VU0VEX1BBUkFNKGxvY2F0aW9uKTsKLSAgICBVTlVTRURfUEFSQU0o
ZGF0YSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY09mZnNldCk7Ci0gICAgVU5VU0VEX1BBUkFNKHNy
Y0xlbmd0aCk7Ci19Ci0KLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0xaXYo
R0NHTGludCBsb2NhdGlvbiwgY29uc3QgR0NHTGludCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0
LCBHQ0dMdWludCBzcmNMZW5ndGgpCi17Ci0gICAgVU5VU0VEX1BBUkFNKGxvY2F0aW9uKTsKLSAg
ICBVTlVTRURfUEFSQU0oZGF0YSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY09mZnNldCk7Ci0gICAg
VU5VU0VEX1BBUkFNKHNyY0xlbmd0aCk7Ci19Ci0KLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OnVuaWZvcm0yaXYoR0NHTGludCBsb2NhdGlvbiwgY29uc3QgR0NHTGludCogZGF0YSwgR0NH
THVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCi17Ci0gICAgVU5VU0VEX1BBUkFN
KGxvY2F0aW9uKTsKLSAgICBVTlVTRURfUEFSQU0oZGF0YSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNy
Y09mZnNldCk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY0xlbmd0aCk7Ci19Ci0KLXZvaWQgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0zaXYoR0NHTGludCBsb2NhdGlvbiwgY29uc3QgR0NH
TGludCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCi17Ci0g
ICAgVU5VU0VEX1BBUkFNKGxvY2F0aW9uKTsKLSAgICBVTlVTRURfUEFSQU0oZGF0YSk7Ci0gICAg
VU5VU0VEX1BBUkFNKHNyY09mZnNldCk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY0xlbmd0aCk7Ci19
Ci0KLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm00aXYoR0NHTGludCBsb2Nh
dGlvbiwgY29uc3QgR0NHTGludCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBz
cmNMZW5ndGgpCi17Ci0gICAgVU5VU0VEX1BBUkFNKGxvY2F0aW9uKTsKLSAgICBVTlVTRURfUEFS
QU0oZGF0YSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY09mZnNldCk7Ci0gICAgVU5VU0VEX1BBUkFN
KHNyY0xlbmd0aCk7Ci19Ci0KLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1N
YXRyaXgyZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBH
Q0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQot
ewotICAgIFVOVVNFRF9QQVJBTShsb2NhdGlvbik7Ci0gICAgVU5VU0VEX1BBUkFNKHRyYW5zcG9z
ZSk7Ci0gICAgVU5VU0VEX1BBUkFNKGRhdGEpOwotICAgIFVOVVNFRF9QQVJBTShzcmNPZmZzZXQp
OwotICAgIFVOVVNFRF9QQVJBTShzcmNMZW5ndGgpOwotfQotCi12b2lkIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4M2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFu
IHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdD
R0x1aW50IHNyY0xlbmd0aCkKLXsKLSAgICBVTlVTRURfUEFSQU0obG9jYXRpb24pOwotICAgIFVO
VVNFRF9QQVJBTSh0cmFuc3Bvc2UpOwotICAgIFVOVVNFRF9QQVJBTShkYXRhKTsKLSAgICBVTlVT
RURfUEFSQU0oc3JjT2Zmc2V0KTsKLSAgICBVTlVTRURfUEFSQU0oc3JjTGVuZ3RoKTsKLX0KLQot
dm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybU1hdHJpeDRmdihHQ0dMaW50IGxv
Y2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NH
THVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCi17Ci0gICAgVU5VU0VEX1BBUkFN
KGxvY2F0aW9uKTsKLSAgICBVTlVTRURfUEFSQU0odHJhbnNwb3NlKTsKLSAgICBVTlVTRURfUEFS
QU0oZGF0YSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY09mZnNldCk7Ci0gICAgVU5VU0VEX1BBUkFN
KHNyY0xlbmd0aCk7Ci19CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRQaXhl
bHMoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdo
dCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCkKIHsK
</data>
<flag name="commit-queue"
          id="431826"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>414833</attachid>
            <date>2020-11-24 05:40:06 -0800</date>
            <delta_ts>2020-11-24 05:48:25 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219256-20201124154003.patch</filename>
            <type>text/plain</type>
            <size>178438</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwMTY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzIzYWI2YjRlNmM0NDFj
MDYzZWM1Mzg0YzZmOTA5NDdiZDFhNDY5ZC4uYmZhNDFlODE2MTVkMDI2NzBlNmY1YzIyMjY5NjRl
ZDMwNGYyODUyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyNiBAQAorMjAyMC0xMS0yMyAgS2lt
bW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIEdyYXBoaWNzQ29u
dGV4dEdMIHNob3VsZCBoYXZlIHJvYnVzdCBtdWx0aXZhbHVlIHNldHRlcnMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxOTI1NgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlcGxhY2UgYnVmU2l6ZSwgcG9p
bnRlciBwYWlycyBhbmQgcGxhaW4gcG9pbnRlcnMgaW4gR3JhcGhpY3NDb250ZXh0R0wKKyAgICAg
ICAgd2l0aCBHQ0dMU3Bhbi4gVGhpcyBtYWtlcyBpdCBlYXNpZXIgdG8gdW5kZXJzdGFuZCBob3cg
bWFueSB2YWx1ZXMgdGhlcmUKKyAgICAgICAgYXJlIHBvaW50ZWQgYnkgdGhlIHBvaW50ZXIuIFRo
aXMgaXMgbmVlZGVkIGZvciBzaW1wbGVyIGltcGxlbWVudGF0aW9uIG9mIEdQVQorICAgICAgICBw
cm9jZXNzIElQQywgd2hlcmUgdGhlIElQQyBsYXllciBkb2VzIG5vdCBuZWVkIHRvIGludGVycHJl
dCB0aGUgT3BlbkdMCisgICAgICAgIHByb3BlcnRpZXMuCisgICAgICAgIAorICAgICAgICBJbiBX
ZWJHTCBpbXBsZW1lbnRhdGlvbiwgY2hhbmdlcyB0aGUgdmFsaWRhdGlvbiBmdW5jdGlvbnMgdG8g
cmV0dXJuCisgICAgICAgIHRoZSBtZW1vcnkgcmVmZXJlbmNlIHRoYXQgd2lsbCBiZSB0b3VjaGVk
IGJ5IHRoZSB2YWxpZCBmdW5jdGlvbiBjYWxsLgorICAgICAgICBPbiB2YWxpZGF0aW9uIGZhaWx1
cmUsIG51bGxvcHQgd2lsbCBiZSByZXR1cm5lZC4KKyAgICAgICAgCisgICAgICAgIE5vIG5ldyB0
ZXN0cywgYSByZWZhY3Rvci4KKworICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmlu
Z0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6
aW52YWxpZGF0ZUZyYW1lYnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmlu
Z0NvbnRleHQ6OmludmFsaWRhdGVTdWJGcmFtZWJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtMXVpdik6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtMnVpdik6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtM3Vpdik6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtNHVpdik6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtTWF0cml4MngzZnYpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybU1hdHJpeDN4MmZ2KToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm1NYXRyaXgyeDRmdik6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtTWF0cml4
NHgyZnYpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9y
bU1hdHJpeDN4NGZ2KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6
OnVuaWZvcm1NYXRyaXg0eDNmdik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdD
b250ZXh0Ojp2ZXJ0ZXhBdHRyaWJJNGl2KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRl
cmluZ0NvbnRleHQ6OnZlcnRleEF0dHJpYkk0dWl2KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdM
MlJlbmRlcmluZ0NvbnRleHQ6OmRyYXdCdWZmZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdM
MlJlbmRlcmluZ0NvbnRleHQ6OmNsZWFyQnVmZmVyaXYpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
R0wyUmVuZGVyaW5nQ29udGV4dDo6Y2xlYXJCdWZmZXJ1aXYpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Y2xlYXJCdWZmZXJmdik6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp2YWxpZGF0ZUNsZWFyQnVmZmVyKToKKyAgICAgICAg
KFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm0xZnYpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTJmdik6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtM2Z2KToKKyAgICAgICAgKFdl
YkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm00ZnYpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTFpdik6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtMml2KToKKyAgICAgICAgKFdlYkNv
cmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm0zaXYpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTRpdik6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtTWF0cml4MmZ2KToKKyAgICAgICAgKFdl
YkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm1NYXRyaXgzZnYpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybU1hdHJpeDRmdik6Cisg
ICAgICAgICogaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5oOgorICAgICAgICAq
IGh0bWwvY2FudmFzL1dlYkdMRHJhd0J1ZmZlcnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
R0xEcmF3QnVmZmVyczo6ZHJhd0J1ZmZlcnNXRUJHTCk6CisgICAgICAgICogaHRtbC9jYW52YXMv
V2ViR0xGcmFtZWJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTEZyYW1lYnVmZmVy
OjpkcmF3QnVmZmVyc0lmTmVjZXNzYXJ5KToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2U6OmJ1ZmZlckRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6YnVmZmVyU3ViRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtMWZ2KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm0yZnYpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybTNmdik6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtNGZ2KToKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm0xaXYpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybTJpdik6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtM2l2KToKKyAgICAgICAgKFdl
YkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm00aXYpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybU1hdHJpeDJmdik6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtTWF0cml4
M2Z2KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZv
cm1NYXRyaXg0ZnYpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZTo6dmFsaWRhdGVVbmlmb3JtTWF0cml4UGFyYW1ldGVycyk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2ZXJ0ZXhBdHRyaWJmdkltcGwpOgorICAgICAgICAq
IGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaDoKKyAgICAgICAgKFdlYkNv
cmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0V4dGVuc2lvbnNHTC5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlc0dMLmg6CisgICAgICAgIChHQ0dMU3Bhbjo6R0NHTFNw
YW4pOgorICAgICAgICAoc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgpOgorICAgICAg
ICAobWFrZUdDR0xTcGFuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRl
bnNpb25zR0xBTkdMRS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6
ZHJhd0J1ZmZlcnNFWFQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVu
c2lvbnNHTEFOR0xFLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhp
Y3NDb250ZXh0R0xBTkdMRS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6YnVmZmVyRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6YnVmZmVyU3ViRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6dW5pZm9ybTFmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6dW5pZm9ybTJmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6dW5pZm9ybTNmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6dW5pZm9ybTRmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6dW5pZm9ybTFpdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6dW5pZm9ybTJpdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6dW5pZm9ybTNpdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6dW5pZm9ybTRpdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6dW5pZm9ybU1hdHJpeDJmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybU1hdHJpeDNmdik6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybU1hdHJpeDRmdik6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliMWZ2KToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2ZXJ0ZXhBdHRyaWIyZnYpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYjNmdik6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmli
NGZ2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjppbnZhbGlk
YXRlRnJhbWVidWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OmludmFsaWRhdGVTdWJGcmFtZWJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTF1aXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0ydWl2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtM3Vpdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTR1aXYpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXgyeDNmdik6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybU1hdHJpeDN4MmZ2KToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4Mng0ZnYp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRy
aXg0eDJmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5p
Zm9ybU1hdHJpeDN4NGZ2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjp1bmlmb3JtTWF0cml4NHgzZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYkk0aXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYkk0dWl2KToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpkcmF3QnVmZmVycyk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y2xlYXJCdWZmZXJpdik6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y2xlYXJCdWZmZXJ1aXYpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNsZWFyQnVmZmVyZnYpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2N2L0dyYXBoaWNzQ29udGV4dEdMQ1ZBTkdMRS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTENWQU5HTEU6OmluaXRpYWxpemVVVkNv
bnRleHRPYmplY3RzKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQ1ZBTkdM
RTo6Y29weVBpeGVsQnVmZmVyVG9UZXh0dXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaDoKKwogMjAyMC0xMS0yMiAgQW50dGkg
S29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CiAKICAgICAgICAgW0xGQ11bSW50ZWdyYXRpb25d
IENvbnZlcnQgc29tZSByZW1haW5pbmcgSW5saW5lQm94IGFjY2VzcyB0byB1c2UgaW5saW5lIGl0
ZXJhdG9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5k
ZXJpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRl
cmluZ0NvbnRleHQuY3BwCmluZGV4IDU1YmMxZjhkYjI0OWQzMzgyMmU3ODg5Y2E3ODNmNWJlYzAy
NWEyOTkuLmQzNjliOWZhYTNjNDgwZTNjNDg0NDA5ZWYwNDVhZmQ4NmI1Zjg1ZDUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQu
Y3BwCkBAIC04OTUsNyArODk1LDcgQEAgdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjppbnZh
bGlkYXRlRnJhbWVidWZmZXIoR0NHTGVudW0gdGFyZ2V0LCBjb25zdCBWZWN0b3IKICAgICBWZWN0
b3I8R0NHTGVudW0+IHRyYW5zbGF0ZWRBdHRhY2htZW50cyA9IGF0dGFjaG1lbnRzOwogICAgIGlm
ICghY2hlY2tBbmRUcmFuc2xhdGVBdHRhY2htZW50cygiaW52YWxpZGF0ZUZyYW1lYnVmZmVyIiwg
dGFyZ2V0LCB0cmFuc2xhdGVkQXR0YWNobWVudHMpKQogICAgICAgICByZXR1cm47Ci0gICAgbV9j
b250ZXh0LT5pbnZhbGlkYXRlRnJhbWVidWZmZXIodGFyZ2V0LCB0cmFuc2xhdGVkQXR0YWNobWVu
dHMuc2l6ZSgpLCB0cmFuc2xhdGVkQXR0YWNobWVudHMuZGF0YSgpKTsKKyAgICBtX2NvbnRleHQt
PmludmFsaWRhdGVGcmFtZWJ1ZmZlcih0YXJnZXQsIHRyYW5zbGF0ZWRBdHRhY2htZW50cyk7CiB9
CiAKIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6aW52YWxpZGF0ZVN1YkZyYW1lYnVmZmVy
KEdDR0xlbnVtIHRhcmdldCwgY29uc3QgVmVjdG9yPEdDR0xlbnVtPiYgYXR0YWNobWVudHMsIEdD
R0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpCkBA
IC05MDYsNyArOTA2LDcgQEAgdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjppbnZhbGlkYXRl
U3ViRnJhbWVidWZmZXIoR0NHTGVudW0gdGFyZ2V0LCBjb25zdCBWZWMKICAgICBWZWN0b3I8R0NH
TGVudW0+IHRyYW5zbGF0ZWRBdHRhY2htZW50cyA9IGF0dGFjaG1lbnRzOwogICAgIGlmICghY2hl
Y2tBbmRUcmFuc2xhdGVBdHRhY2htZW50cygiaW52YWxpZGF0ZVN1YkZyYW1lYnVmZmVyIiwgdGFy
Z2V0LCB0cmFuc2xhdGVkQXR0YWNobWVudHMpKQogICAgICAgICByZXR1cm47Ci0gICAgbV9jb250
ZXh0LT5pbnZhbGlkYXRlU3ViRnJhbWVidWZmZXIodGFyZ2V0LCB0cmFuc2xhdGVkQXR0YWNobWVu
dHMuc2l6ZSgpLCB0cmFuc2xhdGVkQXR0YWNobWVudHMuZGF0YSgpLCB4LCB5LCB3aWR0aCwgaGVp
Z2h0KTsKKyAgICBtX2NvbnRleHQtPmludmFsaWRhdGVTdWJGcmFtZWJ1ZmZlcih0YXJnZXQsIHRy
YW5zbGF0ZWRBdHRhY2htZW50cywgeCwgeSwgd2lkdGgsIGhlaWdodCk7CiB9CiAKIHZvaWQgV2Vi
R0wyUmVuZGVyaW5nQ29udGV4dDo6cmVhZEJ1ZmZlcihHQ0dMZW51bSBzcmMpCkBAIC0xMTI5LDcg
KzExMjksNyBAQCB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnRleEltYWdlMkQoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50CiAgICAgaWYgKCF2YWxpZGF0ZVRleEZ1
bmMoInRleEltYWdlMkQiLCBUZXhJbWFnZUZ1bmN0aW9uVHlwZTo6VGV4SW1hZ2UsIFNvdXJjZVVu
cGFja0J1ZmZlciwgdGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQs
IDEsIGJvcmRlciwgZm9ybWF0LCB0eXBlLCAwLCAwLCAwKSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkudGV4SW1hZ2UyRFJvYnVzdEFOR0xFKHRhcmdl
dCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIsIGZvcm1hdCwg
dHlwZSwgMCwgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ob2Zmc2V0KSk7CisgICAgbV9jb250ZXh0
LT50ZXhJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0
LCBib3JkZXIsIGZvcm1hdCwgdHlwZSwgb2Zmc2V0KTsKIH0KIAogRXhjZXB0aW9uT3I8dm9pZD4g
V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xp
bnQgbGV2ZWwsIEdDR0xpbnQgaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNp
emVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlw
ZSwgVGV4SW1hZ2VTb3VyY2UmJiBzb3VyY2UpCkBAIC0xMTczLDcgKzExNzMsNyBAQCB2b2lkIFdl
YkdMMlJlbmRlcmluZ0NvbnRleHQ6OnRleEltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50
IGxldmVsLCBHQ0dMaW50CiAgICAgaWYgKCF2YWxpZGF0ZVRleEZ1bmMoInRleEltYWdlM0QiLCBU
ZXhJbWFnZUZ1bmN0aW9uVHlwZTo6VGV4SW1hZ2UsIFNvdXJjZVVucGFja0J1ZmZlciwgdGFyZ2V0
LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBib3JkZXIsIGZv
cm1hdCwgdHlwZSwgMCwgMCwgMCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fY29udGV4dC0+
Z2V0RXh0ZW5zaW9ucygpLnRleEltYWdlM0RSb2J1c3RBTkdMRSh0YXJnZXQsIGxldmVsLCBpbnRl
cm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGJvcmRlciwgZm9ybWF0LCB0eXBlLCAw
LCByZWludGVycHJldF9jYXN0PHZvaWQqPihvZmZzZXQpKTsKKyAgICBtX2NvbnRleHQtPmdldEV4
dGVuc2lvbnMoKS50ZXhJbWFnZTNEUm9idXN0QU5HTEUodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxm
b3JtYXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBib3JkZXIsIGZvcm1hdCwgdHlwZSwgIHN0YXRp
Y19jYXN0PGludHB0cl90PihvZmZzZXQpKTsKIH0KIAogRXhjZXB0aW9uT3I8dm9pZD4gV2ViR0wy
UmVuZGVyaW5nQ29udGV4dDo6dGV4SW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2
ZWwsIEdDR0xpbnQgaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhl
aWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMaW50IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0LCBH
Q0dMZW51bSB0eXBlLCBUZXhJbWFnZVNvdXJjZSYmIHNvdXJjZSkKQEAgLTEyNTksNyArMTI1OSw3
IEBAIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0
YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpCiAgICAgaWYgKCF2YWxpZGF0ZVRleEZ1bmMoInRl
eFN1YkltYWdlMkQiLCBUZXhJbWFnZUZ1bmN0aW9uVHlwZTo6VGV4U3ViSW1hZ2UsIFNvdXJjZVVu
cGFja0J1ZmZlciwgdGFyZ2V0LCBsZXZlbCwgMCwgd2lkdGgsIGhlaWdodCwgMSwgMCwgZm9ybWF0
LCB0eXBlLCB4b2Zmc2V0LCB5b2Zmc2V0LCAwKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9j
b250ZXh0LT5nZXRFeHRlbnNpb25zKCkudGV4U3ViSW1hZ2UyRFJvYnVzdEFOR0xFKHRhcmdldCwg
bGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgMCwg
cmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ob2Zmc2V0KSk7CisgICAgbV9jb250ZXh0LT5nZXRFeHRl
bnNpb25zKCkudGV4U3ViSW1hZ2UyRFJvYnVzdEFOR0xFKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQs
IHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgb2Zmc2V0KTsKIH0KIAogRXhj
ZXB0aW9uT3I8dm9pZD4gV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dGV4U3ViSW1hZ2UyRChHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zm
c2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwg
R0NHTGVudW0gdHlwZSwgVGV4SW1hZ2VTb3VyY2UmJiBzb3VyY2UpCkBAIC0xMzAzLDcgKzEzMDMs
NyBAQCB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnRleFN1YkltYWdlM0QoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaQogICAgIGlmICghdmFsaWRhdGVUZXhGdW5jKCJ0
ZXhTdWJJbWFnZTNEIiwgVGV4SW1hZ2VGdW5jdGlvblR5cGU6OlRleFN1YkltYWdlLCBTb3VyY2VV
bnBhY2tCdWZmZXIsIHRhcmdldCwgbGV2ZWwsIDAsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCAwLCBm
b3JtYXQsIHR5cGUsIHhvZmZzZXQsIHlvZmZzZXQsIHpvZmZzZXQpKQogICAgICAgICByZXR1cm47
CiAKLSAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS50ZXhTdWJJbWFnZTNEUm9idXN0QU5H
TEUodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgem9mZnNldCwgd2lkdGgsIGhlaWdo
dCwgZGVwdGgsIGZvcm1hdCwgdHlwZSwgMCwgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ob2Zmc2V0
KSk7CisgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkudGV4U3ViSW1hZ2UzRFJvYnVzdEFO
R0xFKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHpvZmZzZXQsIHdpZHRoLCBoZWln
aHQsIGRlcHRoLCBmb3JtYXQsIHR5cGUsIHN0YXRpY19jYXN0PGludHB0cl90PihvZmZzZXQpKTsK
IH0KIAogdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp0ZXhTdWJJbWFnZTNEKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQs
IEdDR0xpbnQgem9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dM
c2l6ZWkgZGVwdGgsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgUmVmUHRyPEFycmF5
QnVmZmVyVmlldz4mJiBzcmNEYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQpCkBAIC0xMzcyLDcgKzEz
NzIsNyBAQCB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmNvbXByZXNzZWRUZXhJbWFnZTJE
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbAogICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5z
aW9ucygpLmNvbXByZXNzZWRUZXhJbWFnZTJEUm9idXN0QU5HTEUoCiAgICAgICAgIHRhcmdldCwg
bGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwKICAgICAgICAgaGVpZ2h0LCBib3JkZXIsIGlt
YWdlU2l6ZSwKLSAgICAgICAgMCwgcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4ob2Zmc2V0KSk7
CisgICAgICAgIHN0YXRpY19jYXN0PGludHB0cl90PihvZmZzZXQpKTsKIH0KIAogdm9pZCBXZWJH
TDJSZW5kZXJpbmdDb250ZXh0Ojpjb21wcmVzc2VkVGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQs
IEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgs
IEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBBcnJheUJ1ZmZlclZpZXcmIHNyY0Rh
dGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoT3ZlcnJpZGUpCkBAIC0x
MzkzLDcgKzEzOTMsNyBAQCB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmNvbXByZXNzZWRU
ZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbAogICAgIG1fY29udGV4dC0+
Z2V0RXh0ZW5zaW9ucygpLmNvbXByZXNzZWRUZXhJbWFnZTJEUm9idXN0QU5HTEUoCiAgICAgICAg
IHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LAogICAgICAgICBi
b3JkZXIsIHNsaWNlLT5ieXRlTGVuZ3RoKCksCi0gICAgICAgIHNsaWNlLT5ieXRlTGVuZ3RoKCks
IHNsaWNlLT5iYXNlQWRkcmVzcygpKTsKKyAgICAgICAgbWFrZUdDR0xTcGFuKHNsaWNlLT5iYXNl
QWRkcmVzcygpLCBzbGljZS0+Ynl0ZUxlbmd0aCgpKSk7CiB9CiAKIHZvaWQgV2ViR0wyUmVuZGVy
aW5nQ29udGV4dDo6Y29tcHJlc3NlZFRleEltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50
IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6
ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMc2l6ZWkgaW1h
Z2VTaXplLCBHQ0dMaW50NjQgb2Zmc2V0KQpAQCAtMTQxMSw3ICsxNDExLDcgQEAgdm9pZCBXZWJH
TDJSZW5kZXJpbmdDb250ZXh0Ojpjb21wcmVzc2VkVGV4SW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQs
IEdDR0xpbnQgbGV2ZWwKICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5jb21wcmVzc2Vk
VGV4SW1hZ2UzRFJvYnVzdEFOR0xFKAogICAgICAgICB0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZv
cm1hdCwgd2lkdGgsCiAgICAgICAgIGhlaWdodCwgZGVwdGgsIGJvcmRlciwgaW1hZ2VTaXplLAot
ICAgICAgICAwLCByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihvZmZzZXQpKTsKKyAgICAgICAg
c3RhdGljX2Nhc3Q8aW50cHRyX3Q+KG9mZnNldCkpOwogfQogCiB2b2lkIFdlYkdMMlJlbmRlcmlu
Z0NvbnRleHQ6OmNvbXByZXNzZWRUZXhJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBs
ZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVp
IGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMaW50IGJvcmRlciwgQXJyYXlCdWZmZXJWaWV3
JiBzcmNEYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aE92ZXJyaWRl
KQpAQCAtMTQzMiw3ICsxNDMyLDcgQEAgdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojpjb21w
cmVzc2VkVGV4SW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwKICAgICBtX2Nv
bnRleHQtPmdldEV4dGVuc2lvbnMoKS5jb21wcmVzc2VkVGV4SW1hZ2UzRFJvYnVzdEFOR0xFKAog
ICAgICAgICB0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwKICAg
ICAgICAgZGVwdGgsIGJvcmRlciwgc2xpY2UtPmJ5dGVMZW5ndGgoKSwKLSAgICAgICAgc2xpY2Ut
PmJ5dGVMZW5ndGgoKSwgc2xpY2UtPmJhc2VBZGRyZXNzKCkpOworICAgICAgICBtYWtlR0NHTFNw
YW4oc2xpY2UtPmJhc2VBZGRyZXNzKCksIHNsaWNlLT5ieXRlTGVuZ3RoKCkpKTsKIH0KIAogdm9p
ZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojpjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChHQ0dMZW51
bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0
LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgQXJy
YXlCdWZmZXJWaWV3JiBzcmNEYXRhKQpAQCAtMTQ2Myw3ICsxNDYzLDcgQEAgdm9pZCBXZWJHTDJS
ZW5kZXJpbmdDb250ZXh0Ojpjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQs
IEdDR0xpbnQgbGUKICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5jb21wcmVzc2VkVGV4
U3ViSW1hZ2UyRFJvYnVzdEFOR0xFKAogICAgICAgICB0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5
b2Zmc2V0LAogICAgICAgICB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIGltYWdlU2l6ZSwKLSAgICAg
ICAgMCwgcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4ob2Zmc2V0KSk7CisgICAgICAgIG9mZnNl
dCk7CiB9CiAKIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Y29tcHJlc3NlZFRleFN1Yklt
YWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdD
R0xpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51
bSBmb3JtYXQsIEFycmF5QnVmZmVyVmlldyYgc3JjRGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBH
Q0dMdWludCBzcmNMZW5ndGhPdmVycmlkZSkKQEAgLTE0ODQsNyArMTQ4NCw3IEBAIHZvaWQgV2Vi
R0wyUmVuZGVyaW5nQ29udGV4dDo6Y29tcHJlc3NlZFRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMaW50IGxlCiAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuY29tcHJlc3Nl
ZFRleFN1YkltYWdlMkRSb2J1c3RBTkdMRSgKICAgICAgICAgdGFyZ2V0LCBsZXZlbCwgeG9mZnNl
dCwgeW9mZnNldCwKICAgICAgICAgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCBzbGljZS0+Ynl0ZUxl
bmd0aCgpLAotICAgICAgICBzbGljZS0+Ynl0ZUxlbmd0aCgpLCBzbGljZS0+YmFzZUFkZHJlc3Mo
KSk7CisgICAgICAgIG1ha2VHQ0dMU3BhbihzbGljZS0+YmFzZUFkZHJlc3MoKSwgc2xpY2UtPmJ5
dGVMZW5ndGgoKSkpOwogfQogCiB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmNvbXByZXNz
ZWRUZXhTdWJJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4
b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xpbnQgem9mZnNldCwgR0NHTHNpemVpIHdpZHRo
LCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xlbnVtIGZvcm1hdCwgR0NH
THNpemVpIGltYWdlU2l6ZSwgR0NHTGludDY0IG9mZnNldCkKQEAgLTE1MDIsNyArMTUwMiw3IEBA
IHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Y29tcHJlc3NlZFRleFN1YkltYWdlM0QoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxlCiAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCku
Y29tcHJlc3NlZFRleFN1YkltYWdlM0RSb2J1c3RBTkdMRSgKICAgICAgICAgdGFyZ2V0LCBsZXZl
bCwgeG9mZnNldCwgeW9mZnNldCwgem9mZnNldCwKICAgICAgICAgd2lkdGgsIGhlaWdodCwgZGVw
dGgsIGZvcm1hdCwgaW1hZ2VTaXplLAotICAgICAgICAwLCByZWludGVycHJldF9jYXN0PHVpbnQ4
X3QqPihvZmZzZXQpKTsKKyAgICAgICAgc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KG9mZnNldCkpOwog
fQogCiB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmNvbXByZXNzZWRUZXhTdWJJbWFnZTNE
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50
IHlvZmZzZXQsIEdDR0xpbnQgem9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVp
Z2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xlbnVtIGZvcm1hdCwgQXJyYXlCdWZmZXJWaWV3JiBz
cmNEYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aE92ZXJyaWRlKQpA
QCAtMTUyMyw3ICsxNTIzLDcgQEAgdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojpjb21wcmVz
c2VkVGV4U3ViSW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGUKICAgICBtX2NvbnRl
eHQtPmdldEV4dGVuc2lvbnMoKS5jb21wcmVzc2VkVGV4U3ViSW1hZ2UzRFJvYnVzdEFOR0xFKAog
ICAgICAgICB0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB6b2Zmc2V0LAogICAgICAg
ICB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgZm9ybWF0LCBzbGljZS0+Ynl0ZUxlbmd0aCgpLAotICAg
ICAgICBzbGljZS0+Ynl0ZUxlbmd0aCgpLCBzbGljZS0+YmFzZUFkZHJlc3MoKSk7CisgICAgICAg
IG1ha2VHQ0dMU3BhbihzbGljZS0+YmFzZUFkZHJlc3MoKSwgc2xpY2UtPmJ5dGVMZW5ndGgoKSkp
OwogfQogCiBHQ0dMaW50IFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldEZyYWdEYXRhTG9jYXRp
b24oV2ViR0xQcm9ncmFtJiBwcm9ncmFtLCBjb25zdCBTdHJpbmcmIG5hbWUpCkBAIC0xNTYzLDcy
ICsxNTYzLDEwMiBAQCB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm00dWkoV2Vi
R0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBHQ0dMdWludAogCiB2b2lkIFdlYkdMMlJlbmRl
cmluZ0NvbnRleHQ6OnVuaWZvcm0xdWl2KFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwg
VWludDMyTGlzdCYmIHZhbHVlLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0
aCkKIHsKLSAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVVuaWZv
cm1QYXJhbWV0ZXJzKCJ1bmlmb3JtMXVpdiIsIGxvY2F0aW9uLCB2YWx1ZSwgMSwgc3JjT2Zmc2V0
LCBzcmNMZW5ndGgpKQorICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCisgICAgICAg
IHJldHVybjsKKyAgICBhdXRvIGRhdGEgPSB2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKCJ1bmlm
b3JtMXVpdiIsIGxvY2F0aW9uLCB2YWx1ZSwgMSwgc3JjT2Zmc2V0LCBzcmNMZW5ndGgpOworICAg
IGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuOwotICAgIG1fY29udGV4dC0+dW5pZm9ybTF1aXYo
bG9jYXRpb24tPmxvY2F0aW9uKCksIHZhbHVlLmRhdGEoKSwgc3JjT2Zmc2V0LCBzcmNMZW5ndGgg
PyBzcmNMZW5ndGggOiAodmFsdWUubGVuZ3RoKCkgLSBzcmNPZmZzZXQpKTsKKyAgICBtX2NvbnRl
eHQtPnVuaWZvcm0xdWl2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCBkYXRhLnZhbHVlKCkpOwogfQog
CiB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm0ydWl2KFdlYkdMVW5pZm9ybUxv
Y2F0aW9uKiBsb2NhdGlvbiwgVWludDMyTGlzdCYmIHZhbHVlLCBHQ0dMdWludCBzcmNPZmZzZXQs
IEdDR0x1aW50IHNyY0xlbmd0aCkKIHsKLSAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygp
IHx8ICF2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKCJ1bmlmb3JtMnVpdiIsIGxvY2F0aW9uLCB2
YWx1ZSwgMiwgc3JjT2Zmc2V0LCBzcmNMZW5ndGgpKQorICAgIGlmIChpc0NvbnRleHRMb3N0T3JQ
ZW5kaW5nKCkpCisgICAgICAgIHJldHVybjsKKyAgICBhdXRvIGRhdGEgPSB2YWxpZGF0ZVVuaWZv
cm1QYXJhbWV0ZXJzKCJ1bmlmb3JtMnVpdiIsIGxvY2F0aW9uLCB2YWx1ZSwgMiwgc3JjT2Zmc2V0
LCBzcmNMZW5ndGgpOworICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuOwotICAgIG1fY29u
dGV4dC0+dW5pZm9ybTJ1aXYobG9jYXRpb24tPmxvY2F0aW9uKCksIHZhbHVlLmRhdGEoKSwgc3Jj
T2Zmc2V0LCAoc3JjTGVuZ3RoID8gc3JjTGVuZ3RoIDogdmFsdWUubGVuZ3RoKCkgLSBzcmNPZmZz
ZXQpIC8gMik7CisgICAgbV9jb250ZXh0LT51bmlmb3JtMnVpdihsb2NhdGlvbi0+bG9jYXRpb24o
KSwgZGF0YS52YWx1ZSgpKTsKIH0KIAogdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlm
b3JtM3VpdihXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIFVpbnQzMkxpc3QmJiB2YWx1
ZSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCiB7Ci0gICAgaWYgKGlz
Q29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycygidW5p
Zm9ybTN1aXYiLCBsb2NhdGlvbiwgdmFsdWUsIDMsIHNyY09mZnNldCwgc3JjTGVuZ3RoKSkKKyAg
ICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpKQorICAgICAgICByZXR1cm47CisgICAgYXV0
byBkYXRhID0gdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycygidW5pZm9ybTN1aXYiLCBsb2NhdGlv
biwgdmFsdWUsIDMsIHNyY09mZnNldCwgc3JjTGVuZ3RoKTsKKyAgICBpZiAoIWRhdGEpCiAgICAg
ICAgIHJldHVybjsKLSAgICBtX2NvbnRleHQtPnVuaWZvcm0zdWl2KGxvY2F0aW9uLT5sb2NhdGlv
bigpLCB2YWx1ZS5kYXRhKCksIHNyY09mZnNldCwgKHNyY0xlbmd0aCA/IHNyY0xlbmd0aCA6IHZh
bHVlLmxlbmd0aCgpIC0gc3JjT2Zmc2V0KSAvIDMpOworICAgIG1fY29udGV4dC0+dW5pZm9ybTN1
aXYobG9jYXRpb24tPmxvY2F0aW9uKCksIGRhdGEudmFsdWUoKSk7CiB9CiAKIHZvaWQgV2ViR0wy
UmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTR1aXYoV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0
aW9uLCBVaW50MzJMaXN0JiYgdmFsdWUsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3Jj
TGVuZ3RoKQogewotICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRl
VW5pZm9ybVBhcmFtZXRlcnMoInVuaWZvcm00dWl2IiwgbG9jYXRpb24sIHZhbHVlLCA0LCBzcmNP
ZmZzZXQsIHNyY0xlbmd0aCkpCisgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSkKKyAg
ICAgICAgcmV0dXJuOworICAgIGF1dG8gZGF0YSA9IHZhbGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMo
InVuaWZvcm00dWl2IiwgbG9jYXRpb24sIHZhbHVlLCA0LCBzcmNPZmZzZXQsIHNyY0xlbmd0aCk7
CisgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm47Ci0gICAgbV9jb250ZXh0LT51bmlmb3Jt
NHVpdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgdmFsdWUuZGF0YSgpLCBzcmNPZmZzZXQsIChzcmNM
ZW5ndGggPyBzcmNMZW5ndGggOiB2YWx1ZS5sZW5ndGgoKSAtIHNyY09mZnNldCkgLyA0KTsKKyAg
ICBtX2NvbnRleHQtPnVuaWZvcm00dWl2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCBkYXRhLnZhbHVl
KCkpOwogfQogCiB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm1NYXRyaXgyeDNm
dihXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwg
RmxvYXQzMkxpc3QmJiB2LCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkK
IHsKLSAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVVuaWZvcm1N
YXRyaXhQYXJhbWV0ZXJzKCJ1bmlmb3JtTWF0cml4MngzZnYiLCBsb2NhdGlvbiwgdHJhbnNwb3Nl
LCB2LCA2LCBzcmNPZmZzZXQsIHNyY0xlbmd0aCkpCisgICAgaWYgKGlzQ29udGV4dExvc3RPclBl
bmRpbmcoKSkKKyAgICAgICAgcmV0dXJuOworICAgIGF1dG8gZGF0YSA9IHZhbGlkYXRlVW5pZm9y
bU1hdHJpeFBhcmFtZXRlcnMoInVuaWZvcm1NYXRyaXgyeDNmdiIsIGxvY2F0aW9uLCB0cmFuc3Bv
c2UsIHYsIDYsIHNyY09mZnNldCwgc3JjTGVuZ3RoKTsKKyAgICBpZiAoIWRhdGEpCiAgICAgICAg
IHJldHVybjsKLSAgICBtX2NvbnRleHQtPnVuaWZvcm1NYXRyaXgyeDNmdihsb2NhdGlvbi0+bG9j
YXRpb24oKSwgdHJhbnNwb3NlLCB2LmRhdGEoKSwgc3JjT2Zmc2V0LCAoc3JjTGVuZ3RoID8gc3Jj
TGVuZ3RoIDogdi5sZW5ndGgoKSAtIHNyY09mZnNldCkgLyA2KTsKKyAgICBtX2NvbnRleHQtPnVu
aWZvcm1NYXRyaXgyeDNmdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgdHJhbnNwb3NlLCBkYXRhLnZh
bHVlKCkpOwogfQogCiB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm1NYXRyaXgz
eDJmdihXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9z
ZSwgRmxvYXQzMkxpc3QmJiB2LCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0
aCkKIHsKLSAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVVuaWZv
cm1NYXRyaXhQYXJhbWV0ZXJzKCJ1bmlmb3JtTWF0cml4M3gyZnYiLCBsb2NhdGlvbiwgdHJhbnNw
b3NlLCB2LCA2LCBzcmNPZmZzZXQsIHNyY0xlbmd0aCkpCisgICAgaWYgKGlzQ29udGV4dExvc3RP
clBlbmRpbmcoKSkKKyAgICAgICAgcmV0dXJuOworICAgIGF1dG8gZGF0YSA9IHZhbGlkYXRlVW5p
Zm9ybU1hdHJpeFBhcmFtZXRlcnMoInVuaWZvcm1NYXRyaXgzeDJmdiIsIGxvY2F0aW9uLCB0cmFu
c3Bvc2UsIHYsIDYsIHNyY09mZnNldCwgc3JjTGVuZ3RoKTsKKyAgICBpZiAoIWRhdGEpCiAgICAg
ICAgIHJldHVybjsKLSAgICBtX2NvbnRleHQtPnVuaWZvcm1NYXRyaXgzeDJmdihsb2NhdGlvbi0+
bG9jYXRpb24oKSwgdHJhbnNwb3NlLCB2LmRhdGEoKSwgc3JjT2Zmc2V0LCAoc3JjTGVuZ3RoID8g
c3JjTGVuZ3RoIDogdi5sZW5ndGgoKSAtIHNyY09mZnNldCkgLyA2KTsKKyAgICBtX2NvbnRleHQt
PnVuaWZvcm1NYXRyaXgzeDJmdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgdHJhbnNwb3NlLCBkYXRh
LnZhbHVlKCkpOwogfQogCiB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm1NYXRy
aXgyeDRmdihXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5z
cG9zZSwgRmxvYXQzMkxpc3QmJiB2LCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xl
bmd0aCkKIHsKLSAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVVu
aWZvcm1NYXRyaXhQYXJhbWV0ZXJzKCJ1bmlmb3JtTWF0cml4Mng0ZnYiLCBsb2NhdGlvbiwgdHJh
bnNwb3NlLCB2LCA4LCBzcmNPZmZzZXQsIHNyY0xlbmd0aCkpCisgICAgaWYgKGlzQ29udGV4dExv
c3RPclBlbmRpbmcoKSkKKyAgICAgICAgcmV0dXJuOworICAgIGF1dG8gZGF0YSA9IHZhbGlkYXRl
VW5pZm9ybU1hdHJpeFBhcmFtZXRlcnMoInVuaWZvcm1NYXRyaXgyeDRmdiIsIGxvY2F0aW9uLCB0
cmFuc3Bvc2UsIHYsIDgsIHNyY09mZnNldCwgc3JjTGVuZ3RoKTsKKyAgICBpZiAoIWRhdGEpCiAg
ICAgICAgIHJldHVybjsKLSAgICBtX2NvbnRleHQtPnVuaWZvcm1NYXRyaXgyeDRmdihsb2NhdGlv
bi0+bG9jYXRpb24oKSwgdHJhbnNwb3NlLCB2LmRhdGEoKSwgc3JjT2Zmc2V0LCAoc3JjTGVuZ3Ro
ID8gc3JjTGVuZ3RoIDogdi5sZW5ndGgoKSAtIHNyY09mZnNldCkgLyA4KTsKKyAgICBtX2NvbnRl
eHQtPnVuaWZvcm1NYXRyaXgyeDRmdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgdHJhbnNwb3NlLCBk
YXRhLnZhbHVlKCkpOwogfQogCiB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm1N
YXRyaXg0eDJmdihXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEdDR0xib29sZWFuIHRy
YW5zcG9zZSwgRmxvYXQzMkxpc3QmJiB2LCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNy
Y0xlbmd0aCkKIHsKLSAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0
ZVVuaWZvcm1NYXRyaXhQYXJhbWV0ZXJzKCJ1bmlmb3JtTWF0cml4NHgyZnYiLCBsb2NhdGlvbiwg
dHJhbnNwb3NlLCB2LCA4LCBzcmNPZmZzZXQsIHNyY0xlbmd0aCkpCisgICAgaWYgKGlzQ29udGV4
dExvc3RPclBlbmRpbmcoKSkKICAgICAgICAgcmV0dXJuOwotICAgIG1fY29udGV4dC0+dW5pZm9y
bU1hdHJpeDR4MmZ2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCB0cmFuc3Bvc2UsIHYuZGF0YSgpLCBz
cmNPZmZzZXQsIChzcmNMZW5ndGggPyBzcmNMZW5ndGggOiB2Lmxlbmd0aCgpIC0gc3JjT2Zmc2V0
KSAvIDgpOworICAgIGF1dG8gZGF0YSA9IHZhbGlkYXRlVW5pZm9ybU1hdHJpeFBhcmFtZXRlcnMo
InVuaWZvcm1NYXRyaXg0eDJmdiIsIGxvY2F0aW9uLCB0cmFuc3Bvc2UsIHYsIDgsIHNyY09mZnNl
dCwgc3JjTGVuZ3RoKTsKKyAgICBpZiAoIWRhdGEpCisgICAgICAgIHJldHVybjsKKyAgICBtX2Nv
bnRleHQtPnVuaWZvcm1NYXRyaXg0eDJmdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgdHJhbnNwb3Nl
LCBkYXRhLnZhbHVlKCkpOwogfQogCiB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZv
cm1NYXRyaXgzeDRmdihXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEdDR0xib29sZWFu
IHRyYW5zcG9zZSwgRmxvYXQzMkxpc3QmJiB2LCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50
IHNyY0xlbmd0aCkKIHsKLSAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxp
ZGF0ZVVuaWZvcm1NYXRyaXhQYXJhbWV0ZXJzKCJ1bmlmb3JtTWF0cml4M3g0ZnYiLCBsb2NhdGlv
biwgdHJhbnNwb3NlLCB2LCAxMiwgc3JjT2Zmc2V0LCBzcmNMZW5ndGgpKQorICAgIGlmIChpc0Nv
bnRleHRMb3N0T3JQZW5kaW5nKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBtX2NvbnRleHQtPnVu
aWZvcm1NYXRyaXgzeDRmdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgdHJhbnNwb3NlLCB2LmRhdGEo
KSwgc3JjT2Zmc2V0LCAoc3JjTGVuZ3RoID8gc3JjTGVuZ3RoIDogdi5sZW5ndGgoKSAtIHNyY09m
ZnNldCkgLyAxMik7CisgICAgYXV0byBkYXRhID0gdmFsaWRhdGVVbmlmb3JtTWF0cml4UGFyYW1l
dGVycygidW5pZm9ybU1hdHJpeDN4NGZ2IiwgbG9jYXRpb24sIHRyYW5zcG9zZSwgdiwgMTIsIHNy
Y09mZnNldCwgc3JjTGVuZ3RoKTsKKyAgICBpZiAoIWRhdGEpCisgICAgICAgIHJldHVybjsKKyAg
ICBtX2NvbnRleHQtPnVuaWZvcm1NYXRyaXgzeDRmdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgdHJh
bnNwb3NlLCBkYXRhLnZhbHVlKCkpOwogfQogCiB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6
OnVuaWZvcm1NYXRyaXg0eDNmdihXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEdDR0xi
b29sZWFuIHRyYW5zcG9zZSwgRmxvYXQzMkxpc3QmJiB2LCBHQ0dMdWludCBzcmNPZmZzZXQsIEdD
R0x1aW50IHNyY0xlbmd0aCkKIHsKLSAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8
ICF2YWxpZGF0ZVVuaWZvcm1NYXRyaXhQYXJhbWV0ZXJzKCJ1bmlmb3JtTWF0cml4NHgzZnYiLCBs
b2NhdGlvbiwgdHJhbnNwb3NlLCB2LCAxMiwgc3JjT2Zmc2V0LCBzcmNMZW5ndGgpKQorICAgIGlm
IChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBtX2NvbnRl
eHQtPnVuaWZvcm1NYXRyaXg0eDNmdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgdHJhbnNwb3NlLCB2
LmRhdGEoKSwgc3JjT2Zmc2V0LCAoc3JjTGVuZ3RoID8gc3JjTGVuZ3RoIDogdi5sZW5ndGgoKSAt
IHNyY09mZnNldCkgLyAxMik7CisgICAgYXV0byBkYXRhID0gdmFsaWRhdGVVbmlmb3JtTWF0cml4
UGFyYW1ldGVycygidW5pZm9ybU1hdHJpeDR4M2Z2IiwgbG9jYXRpb24sIHRyYW5zcG9zZSwgdiwg
MTIsIHNyY09mZnNldCwgc3JjTGVuZ3RoKTsKKyAgICBpZiAoIWRhdGEpCisgICAgICAgIHJldHVy
bjsKKyAgICBtX2NvbnRleHQtPnVuaWZvcm1NYXRyaXg0eDNmdihsb2NhdGlvbi0+bG9jYXRpb24o
KSwgdHJhbnNwb3NlLCBkYXRhLnZhbHVlKCkpOwogfQogCiB2b2lkIFdlYkdMMlJlbmRlcmluZ0Nv
bnRleHQ6OnZlcnRleEF0dHJpYkk0aShHQ0dMdWludCBpbmRleCwgR0NHTGludCB4LCBHQ0dMaW50
IHksIEdDR0xpbnQgeiwgR0NHTGludCB3KQpAQCAtMTY2NCw3ICsxNjk0LDcgQEAgdm9pZCBXZWJH
TDJSZW5kZXJpbmdDb250ZXh0Ojp2ZXJ0ZXhBdHRyaWJJNGl2KEdDR0x1aW50IGluZGV4LCBJbnQz
Mkxpc3QmJiBsaXN0KQogICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRH
TDo6SU5WQUxJRF9WQUxVRSwgInZlcnRleEF0dHJpYkk0aXYiLCAiaW5kZXggb3V0IG9mIHJhbmdl
Iik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgbV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWJJ
NGl2KGluZGV4LCBkYXRhKTsKKyAgICBtX2NvbnRleHQtPnZlcnRleEF0dHJpYkk0aXYoaW5kZXgs
IG1ha2VHQ0dMU3Bhbjw0PihkYXRhKSk7CiAgICAgbV92ZXJ0ZXhBdHRyaWJWYWx1ZVtpbmRleF0u
dHlwZSA9IEdyYXBoaWNzQ29udGV4dEdMOjpJTlQ7CiAgICAgbWVtY3B5KG1fdmVydGV4QXR0cmli
VmFsdWVbaW5kZXhdLmlWYWx1ZSwgZGF0YSwgc2l6ZW9mKG1fdmVydGV4QXR0cmliVmFsdWVbaW5k
ZXhdLmlWYWx1ZSkpOwogfQpAQCAtMTcwMiw3ICsxNzMyLDcgQEAgdm9pZCBXZWJHTDJSZW5kZXJp
bmdDb250ZXh0Ojp2ZXJ0ZXhBdHRyaWJJNHVpdihHQ0dMdWludCBpbmRleCwgVWludDMyTGlzdCYm
IGxpc3QKICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFM
SURfVkFMVUUsICJ2ZXJ0ZXhBdHRyaWJJNHVpdiIsICJpbmRleCBvdXQgb2YgcmFuZ2UiKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBtX2NvbnRleHQtPnZlcnRleEF0dHJpYkk0dWl2KGlu
ZGV4LCBkYXRhKTsKKyAgICBtX2NvbnRleHQtPnZlcnRleEF0dHJpYkk0dWl2KGluZGV4LCBtYWtl
R0NHTFNwYW48ND4oZGF0YSkpOwogICAgIG1fdmVydGV4QXR0cmliVmFsdWVbaW5kZXhdLnR5cGUg
PSBHcmFwaGljc0NvbnRleHRHTDo6VU5TSUdORURfSU5UOwogICAgIG1lbWNweShtX3ZlcnRleEF0
dHJpYlZhbHVlW2luZGV4XS51aVZhbHVlLCBkYXRhLCBzaXplb2YobV92ZXJ0ZXhBdHRyaWJWYWx1
ZVtpbmRleF0udWlWYWx1ZSkpOwogfQpAQCAtMTc2Myw4ICsxNzkzLDggQEAgdm9pZCBXZWJHTDJS
ZW5kZXJpbmdDb250ZXh0OjpkcmF3QnVmZmVycyhjb25zdCBWZWN0b3I8R0NHTGVudW0+JiBidWZm
ZXJzKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIC8vIEJlY2F1c2Ug
dGhlIGJhY2tidWZmZXIgaXMgc2ltdWxhdGVkIG9uIGFsbCBjdXJyZW50IFdlYktpdCBwb3J0cywg
d2UgbmVlZCB0byBjaGFuZ2UgQkFDSyB0byBDT0xPUl9BVFRBQ0hNRU5UMC4KLSAgICAgICAgR0NH
TGVudW0gdmFsdWUgPSAoYnVmc1swXSA9PSBHcmFwaGljc0NvbnRleHRHTDo6QkFDSykgPyBHcmFw
aGljc0NvbnRleHRHTDo6Q09MT1JfQVRUQUNITUVOVDAgOiBHcmFwaGljc0NvbnRleHRHTDo6Tk9O
RTsKLSAgICAgICAgbV9jb250ZXh0LT5kcmF3QnVmZmVycygxLCAmdmFsdWUpOworICAgICAgICBH
Q0dMZW51bSB2YWx1ZVsxXSB7IChidWZzWzBdID09IEdyYXBoaWNzQ29udGV4dEdMOjpCQUNLKSA/
IEdyYXBoaWNzQ29udGV4dEdMOjpDT0xPUl9BVFRBQ0hNRU5UMCA6IEdyYXBoaWNzQ29udGV4dEdM
OjpOT05FIH07CisgICAgICAgIG1fY29udGV4dC0+ZHJhd0J1ZmZlcnModmFsdWUpOwogICAgICAg
ICBzZXRCYWNrRHJhd0J1ZmZlcihidWZzWzBdKTsKICAgICB9IGVsc2UgewogICAgICAgICBpZiAo
biA+IGdldE1heERyYXdCdWZmZXJzKCkpIHsKQEAgLTE3ODMsMjggKzE4MTMsMzYgQEAgdm9pZCBX
ZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpkcmF3QnVmZmVycyhjb25zdCBWZWN0b3I8R0NHTGVudW0+
JiBidWZmZXJzKQogCiB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmNsZWFyQnVmZmVyaXYo
R0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50IGRyYXdidWZmZXIsIEludDMyTGlzdCYmIHZhbHVlcywg
R0NHTHVpbnQgc3JjT2Zmc2V0KQogewotICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkg
fHwgIXZhbGlkYXRlQ2xlYXJCdWZmZXIoImNsZWFyQnVmZmVyaXYiLCBidWZmZXIsIHZhbHVlcy5s
ZW5ndGgoKSwgc3JjT2Zmc2V0KSkKKyAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpKQor
ICAgICAgICByZXR1cm47CisgICAgYXV0byBkYXRhID0gdmFsaWRhdGVDbGVhckJ1ZmZlcigiY2xl
YXJCdWZmZXJpdiIsIGJ1ZmZlciwgdmFsdWVzLCBzcmNPZmZzZXQpOworICAgIGlmICghZGF0YSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9jb250ZXh0LT5jbGVhckJ1ZmZlcml2KGJ1ZmZlciwg
ZHJhd2J1ZmZlciwgdmFsdWVzLmRhdGEoKSwgc3JjT2Zmc2V0KTsKKyAgICBtX2NvbnRleHQtPmNs
ZWFyQnVmZmVyaXYoYnVmZmVyLCBkcmF3YnVmZmVyLCBkYXRhLnZhbHVlKCkpOwogICAgIHVwZGF0
ZUJ1ZmZlcnNUb0F1dG9DbGVhcihDbGVhckJ1ZmZlckNhbGxlcjo6Q2xlYXJCdWZmZXJpdiwgYnVm
ZmVyLCBkcmF3YnVmZmVyKTsKIH0KIAogdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpjbGVh
ckJ1ZmZlcnVpdihHQ0dMZW51bSBidWZmZXIsIEdDR0xpbnQgZHJhd2J1ZmZlciwgVWludDMyTGlz
dCYmIHZhbHVlcywgR0NHTHVpbnQgc3JjT2Zmc2V0KQogewotICAgIGlmIChpc0NvbnRleHRMb3N0
T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlQ2xlYXJCdWZmZXIoImNsZWFyQnVmZmVydWl2IiwgYnVm
ZmVyLCB2YWx1ZXMubGVuZ3RoKCksIHNyY09mZnNldCkpCisgICAgaWYgKGlzQ29udGV4dExvc3RP
clBlbmRpbmcoKSkKICAgICAgICAgcmV0dXJuOwotCi0gICAgbV9jb250ZXh0LT5jbGVhckJ1ZmZl
cnVpdihidWZmZXIsIGRyYXdidWZmZXIsIHZhbHVlcy5kYXRhKCksIHNyY09mZnNldCk7CisgICAg
YXV0byBkYXRhID0gdmFsaWRhdGVDbGVhckJ1ZmZlcigiY2xlYXJCdWZmZXJ1aXYiLCBidWZmZXIs
IHZhbHVlcywgc3JjT2Zmc2V0KTsKKyAgICBpZiAoIWRhdGEpCisgICAgICAgIHJldHVybjsKKyAg
ICBtX2NvbnRleHQtPmNsZWFyQnVmZmVydWl2KGJ1ZmZlciwgZHJhd2J1ZmZlciwgZGF0YS52YWx1
ZSgpKTsKICAgICB1cGRhdGVCdWZmZXJzVG9BdXRvQ2xlYXIoQ2xlYXJCdWZmZXJDYWxsZXI6OkNs
ZWFyQnVmZmVydWl2LCBidWZmZXIsIGRyYXdidWZmZXIpOwogfQogCiB2b2lkIFdlYkdMMlJlbmRl
cmluZ0NvbnRleHQ6OmNsZWFyQnVmZmVyZnYoR0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50IGRyYXdi
dWZmZXIsIEZsb2F0MzJMaXN0JiYgdmFsdWVzLCBHQ0dMdWludCBzcmNPZmZzZXQpCiB7Ci0gICAg
aWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVDbGVhckJ1ZmZlcigiY2xl
YXJCdWZmZXJmdiIsIGJ1ZmZlciwgdmFsdWVzLmxlbmd0aCgpLCBzcmNPZmZzZXQpKQorICAgIGlm
IChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCisgICAgICAgIHJldHVybjsKKyAgICBhdXRvIGRh
dGEgPSB2YWxpZGF0ZUNsZWFyQnVmZmVyKCJjbGVhckJ1ZmZlcmZ2IiwgYnVmZmVyLCB2YWx1ZXMs
IHNyY09mZnNldCk7CisgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2Nv
bnRleHQtPmNsZWFyQnVmZmVyZnYoYnVmZmVyLCBkcmF3YnVmZmVyLCB2YWx1ZXMuZGF0YSgpLCBz
cmNPZmZzZXQpOworICAgIG1fY29udGV4dC0+Y2xlYXJCdWZmZXJmdihidWZmZXIsIGRyYXdidWZm
ZXIsIGRhdGEudmFsdWUoKSk7CiAgICAgLy8gY2xlYXJCdWZmZXJpdiBhbmQgY2xlYXJCdWZmZXJ1
aXYgd2lsbCBjdXJyZW50bHkgZ2VuZXJhdGUgYW4gZXJyb3IKICAgICAvLyBpZiB0aGV5J3JlIGNh
bGxlZCBhZ2FpbnN0IHRoZSBkZWZhdWx0IGJhY2sgYnVmZmVyLiBJZiBzdXBwb3J0IGZvcgogICAg
IC8vIGV4dGVuZGVkIGNhbnZhcyBjb2xvciBzcGFjZXMgaXMgYWRkZWQsIHRoaXMgY2FsbCBtaWdo
dCBuZWVkIHRvIGJlCkBAIC0zMzcyLDExMCArMzQxMCwxNDQgQEAgYm9vbCBXZWJHTDJSZW5kZXJp
bmdDb250ZXh0Ojp2YWxpZGF0ZUNhcGFiaWxpdHkoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBH
Q0dMZW4KICAgICB9CiB9CiAKLWJvb2wgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dmFsaWRhdGVD
bGVhckJ1ZmZlcihjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIEdDR0xlbnVtIGJ1ZmZlciwgc2l6
ZV90IHNpemUsIEdDR0x1aW50IHNyY09mZnNldCkKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVu
YW1lIFR5cGVkQXJyYXlUeXBlPgorT3B0aW9uYWw8R0NHTFNwYW48Y29uc3QgVD4+IFdlYkdMMlJl
bmRlcmluZ0NvbnRleHQ6OnZhbGlkYXRlQ2xlYXJCdWZmZXIoY29uc3QgY2hhciogZnVuY3Rpb25O
YW1lLCBHQ0dMZW51bSBidWZmZXIsIFR5cGVkTGlzdDxUeXBlZEFycmF5VHlwZSwgVD4mIHZhbHVl
cywgR0NHTHVpbnQgc3JjT2Zmc2V0KQogewotICAgIENoZWNrZWQ8R0NHTHNpemVpLCBSZWNvcmRP
dmVyZmxvdz4gY2hlY2tlZFNpemUoc2l6ZSk7CisgICAgQ2hlY2tlZDxHQ0dMc2l6ZWksIFJlY29y
ZE92ZXJmbG93PiBjaGVja2VkU2l6ZSh2YWx1ZXMubGVuZ3RoKCkpOwogICAgIGNoZWNrZWRTaXpl
IC09IHNyY09mZnNldDsKICAgICBpZiAoY2hlY2tlZFNpemUuaGFzT3ZlcmZsb3dlZCgpKSB7CiAg
ICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX1ZBTFVF
LCBmdW5jdGlvbk5hbWUsICJpbnZhbGlkIGFycmF5IHNpemUgLyBzcmNPZmZzZXQiKTsKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4geyB9OwogICAgIH0KICAgICBzd2l0Y2gg
KGJ1ZmZlcikgewogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTE9SOgogICAgICAgICBp
ZiAoY2hlY2tlZFNpemUudW5zYWZlR2V0KCkgPCA0KSB7CiAgICAgICAgICAgICBzeW50aGVzaXpl
R0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9WQUxVRSwgZnVuY3Rpb25OYW1lLCAi
aW52YWxpZCBhcnJheSBzaXplIC8gc3JjT2Zmc2V0Iik7Ci0gICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgICAgICByZXR1cm4geyB9OwogICAgICAgICB9Ci0gICAgICAgIGJyZWFrOwor
ICAgICAgICByZXR1cm4gbWFrZUdDR0xTcGFuKHZhbHVlcy5kYXRhKCkgKyBzcmNPZmZzZXQsIDQp
OwogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkRFUFRIOgogICAgIGNhc2UgR3JhcGhpY3ND
b250ZXh0R0w6OlNURU5DSUw6CiAgICAgICAgIGlmIChjaGVja2VkU2l6ZS51bnNhZmVHZXQoKSA8
IDEpIHsKICAgICAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJ
TlZBTElEX1ZBTFVFLCBmdW5jdGlvbk5hbWUsICJpbnZhbGlkIGFycmF5IHNpemUgLyBzcmNPZmZz
ZXQiKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIHJldHVybiB7IH07
CiAgICAgICAgIH0KLSAgICAgICAgYnJlYWs7CisgICAgICAgIHJldHVybiBtYWtlR0NHTFNwYW4o
dmFsdWVzLmRhdGEoKSArIHNyY09mZnNldCwgMSk7CisKICAgICBkZWZhdWx0OgogICAgICAgICBz
eW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9FTlVNLCBmdW5jdGlv
bk5hbWUsICJpbnZhbGlkIGJ1ZmZlciIpOwotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
IHJldHVybiB7IH07CiAgICAgfQotICAgIHJldHVybiB0cnVlOwogfQogCiB2b2lkIFdlYkdMMlJl
bmRlcmluZ0NvbnRleHQ6OnVuaWZvcm0xZnYoV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9u
LCBGbG9hdDMyTGlzdCBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0
aCkKIHsKLSAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVVuaWZv
cm1QYXJhbWV0ZXJzKCJ1bmlmb3JtMWZ2IiwgbG9jYXRpb24sIGRhdGEsIDEsIHNyY09mZnNldCwg
c3JjTGVuZ3RoKSkKKyAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpKQogICAgICAgICBy
ZXR1cm47Ci0gICAgbV9jb250ZXh0LT51bmlmb3JtMWZ2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCBk
YXRhLmRhdGEoKSwgc3JjT2Zmc2V0LCBzcmNMZW5ndGggPyBzcmNMZW5ndGggOiAoZGF0YS5sZW5n
dGgoKSAtIHNyY09mZnNldCkpOworICAgIGF1dG8gcmVzdWx0ID0gdmFsaWRhdGVVbmlmb3JtUGFy
YW1ldGVycygidW5pZm9ybTFmdiIsIGxvY2F0aW9uLCBkYXRhLCAxLCBzcmNPZmZzZXQsIHNyY0xl
bmd0aCk7CisgICAgaWYgKCFyZXN1bHQpCisgICAgICAgIHJldHVybjsKKyAgICBtX2NvbnRleHQt
PnVuaWZvcm0xZnYobG9jYXRpb24tPmxvY2F0aW9uKCksIHJlc3VsdC52YWx1ZSgpKTsKIH0KIAog
dm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtMmZ2KFdlYkdMVW5pZm9ybUxvY2F0
aW9uKiBsb2NhdGlvbiwgRmxvYXQzMkxpc3QgZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dM
dWludCBzcmNMZW5ndGgpCiB7Ci0gICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAh
dmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycygidW5pZm9ybTJmdiIsIGxvY2F0aW9uLCBkYXRhLCAy
LCBzcmNPZmZzZXQsIHNyY0xlbmd0aCkpCisgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmco
KSkKICAgICAgICAgcmV0dXJuOwotICAgIG1fY29udGV4dC0+dW5pZm9ybTJmdihsb2NhdGlvbi0+
bG9jYXRpb24oKSwgZGF0YS5kYXRhKCksIHNyY09mZnNldCwgKHNyY0xlbmd0aCA/IHNyY0xlbmd0
aCA6IGRhdGEubGVuZ3RoKCkgLSBzcmNPZmZzZXQpIC8gMik7CisgICAgYXV0byByZXN1bHQgPSB2
YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKCJ1bmlmb3JtMmZ2IiwgbG9jYXRpb24sIGRhdGEsIDIs
IHNyY09mZnNldCwgc3JjTGVuZ3RoKTsKKyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgcmV0dXJu
OworICAgIG1fY29udGV4dC0+dW5pZm9ybTJmdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgcmVzdWx0
LnZhbHVlKCkpOwogfQogCiB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm0zZnYo
V2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBGbG9hdDMyTGlzdCBkYXRhLCBHQ0dMdWlu
dCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKIHsKLSAgICBpZiAoaXNDb250ZXh0TG9z
dE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKCJ1bmlmb3JtM2Z2Iiwg
bG9jYXRpb24sIGRhdGEsIDMsIHNyY09mZnNldCwgc3JjTGVuZ3RoKSkKKyAgICBpZiAoaXNDb250
ZXh0TG9zdE9yUGVuZGluZygpKQogICAgICAgICByZXR1cm47Ci0gICAgbV9jb250ZXh0LT51bmlm
b3JtM2Z2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCBkYXRhLmRhdGEoKSwgc3JjT2Zmc2V0LCAoc3Jj
TGVuZ3RoID8gc3JjTGVuZ3RoIDogZGF0YS5sZW5ndGgoKSAtIHNyY09mZnNldCkgLyAzKTsKKyAg
ICBhdXRvIHJlc3VsdCA9IHZhbGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMoInVuaWZvcm0zZnYiLCBs
b2NhdGlvbiwgZGF0YSwgMywgc3JjT2Zmc2V0LCBzcmNMZW5ndGgpOworICAgIGlmICghcmVzdWx0
KQorICAgICAgICByZXR1cm47CisgICAgbV9jb250ZXh0LT51bmlmb3JtM2Z2KGxvY2F0aW9uLT5s
b2NhdGlvbigpLCByZXN1bHQudmFsdWUoKSk7CiB9CiAKIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29u
dGV4dDo6dW5pZm9ybTRmdihXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEZsb2F0MzJM
aXN0IGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQogewotICAg
IGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlVW5pZm9ybVBhcmFtZXRl
cnMoInVuaWZvcm00ZnYiLCBsb2NhdGlvbiwgZGF0YSwgNCwgc3JjT2Zmc2V0LCBzcmNMZW5ndGgp
KQorICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCisgICAgICAgIHJldHVybjsKKyAg
ICBhdXRvIHJlc3VsdCA9IHZhbGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMoInVuaWZvcm00ZnYiLCBs
b2NhdGlvbiwgZGF0YSwgNCwgc3JjT2Zmc2V0LCBzcmNMZW5ndGgpOworICAgIGlmICghcmVzdWx0
KQogICAgICAgICByZXR1cm47Ci0gICAgbV9jb250ZXh0LT51bmlmb3JtNGZ2KGxvY2F0aW9uLT5s
b2NhdGlvbigpLCBkYXRhLmRhdGEoKSwgc3JjT2Zmc2V0LCAoc3JjTGVuZ3RoID8gc3JjTGVuZ3Ro
IDogZGF0YS5sZW5ndGgoKSAtIHNyY09mZnNldCkgLyA0KTsKKyAgICBtX2NvbnRleHQtPnVuaWZv
cm00ZnYobG9jYXRpb24tPmxvY2F0aW9uKCksIHJlc3VsdC52YWx1ZSgpKTsKIH0KIAogdm9pZCBX
ZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtMWl2KFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBs
b2NhdGlvbiwgSW50MzJMaXN0IGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3Jj
TGVuZ3RoKQogewotICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRl
VW5pZm9ybVBhcmFtZXRlcnMoInVuaWZvcm0xaXYiLCBsb2NhdGlvbiwgZGF0YSwgMSwgc3JjT2Zm
c2V0LCBzcmNMZW5ndGgpKQorICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCisgICAg
ICAgIHJldHVybjsKKyAgICBhdXRvIHJlc3VsdCA9IHZhbGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMo
InVuaWZvcm0xaXYiLCBsb2NhdGlvbiwgZGF0YSwgMSwgc3JjT2Zmc2V0LCBzcmNMZW5ndGgpOwor
ICAgIGlmICghcmVzdWx0KQogICAgICAgICByZXR1cm47Ci0gICAgbV9jb250ZXh0LT51bmlmb3Jt
MWl2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCBkYXRhLmRhdGEoKSwgc3JjT2Zmc2V0LCBzcmNMZW5n
dGggPyBzcmNMZW5ndGggOiAoZGF0YS5sZW5ndGgoKSAtIHNyY09mZnNldCkpOworICAgIG1fY29u
dGV4dC0+dW5pZm9ybTFpdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgcmVzdWx0LnZhbHVlKCkpOwog
fQogCiB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm0yaXYoV2ViR0xVbmlmb3Jt
TG9jYXRpb24qIGxvY2F0aW9uLCBJbnQzMkxpc3QgZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBH
Q0dMdWludCBzcmNMZW5ndGgpCiB7Ci0gICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8
fCAhdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycygidW5pZm9ybTJpdiIsIGxvY2F0aW9uLCBkYXRh
LCAyLCBzcmNPZmZzZXQsIHNyY0xlbmd0aCkpCisgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRp
bmcoKSkKKyAgICAgICAgcmV0dXJuOworICAgIGF1dG8gcmVzdWx0ID0gdmFsaWRhdGVVbmlmb3Jt
UGFyYW1ldGVycygidW5pZm9ybTJpdiIsIGxvY2F0aW9uLCBkYXRhLCAyLCBzcmNPZmZzZXQsIHNy
Y0xlbmd0aCk7CisgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgIHJldHVybjsKLSAgICBtX2NvbnRl
eHQtPnVuaWZvcm0yaXYobG9jYXRpb24tPmxvY2F0aW9uKCksIGRhdGEuZGF0YSgpLCBzcmNPZmZz
ZXQsIChzcmNMZW5ndGggPyBzcmNMZW5ndGggOiBkYXRhLmxlbmd0aCgpIC0gc3JjT2Zmc2V0KSAv
IDIpOworICAgIG1fY29udGV4dC0+dW5pZm9ybTJpdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgcmVz
dWx0LnZhbHVlKCkpOwogfQogCiB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm0z
aXYoV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBJbnQzMkxpc3QgZGF0YSwgR0NHTHVp
bnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCiB7Ci0gICAgaWYgKGlzQ29udGV4dExv
c3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycygidW5pZm9ybTNpdiIs
IGxvY2F0aW9uLCBkYXRhLCAzLCBzcmNPZmZzZXQsIHNyY0xlbmd0aCkpCisgICAgaWYgKGlzQ29u
dGV4dExvc3RPclBlbmRpbmcoKSkKKyAgICAgICAgcmV0dXJuOworICAgIGF1dG8gcmVzdWx0ID0g
dmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycygidW5pZm9ybTNpdiIsIGxvY2F0aW9uLCBkYXRhLCAz
LCBzcmNPZmZzZXQsIHNyY0xlbmd0aCk7CisgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgIHJldHVy
bjsKLSAgICBtX2NvbnRleHQtPnVuaWZvcm0zaXYobG9jYXRpb24tPmxvY2F0aW9uKCksIGRhdGEu
ZGF0YSgpLCBzcmNPZmZzZXQsIChzcmNMZW5ndGggPyBzcmNMZW5ndGggOiBkYXRhLmxlbmd0aCgp
IC0gc3JjT2Zmc2V0KSAvIDMpOworICAgIG1fY29udGV4dC0+dW5pZm9ybTNpdihsb2NhdGlvbi0+
bG9jYXRpb24oKSwgcmVzdWx0LnZhbHVlKCkpOwogfQogCiB2b2lkIFdlYkdMMlJlbmRlcmluZ0Nv
bnRleHQ6OnVuaWZvcm00aXYoV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBJbnQzMkxp
c3QgZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCiB7Ci0gICAg
aWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVy
cygidW5pZm9ybTRpdiIsIGxvY2F0aW9uLCBkYXRhLCA0LCBzcmNPZmZzZXQsIHNyY0xlbmd0aCkp
CisgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSkKICAgICAgICAgcmV0dXJuOwotICAg
IG1fY29udGV4dC0+dW5pZm9ybTRpdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgZGF0YS5kYXRhKCks
IHNyY09mZnNldCwgKHNyY0xlbmd0aCA/IHNyY0xlbmd0aCA6IGRhdGEubGVuZ3RoKCkgLSBzcmNP
ZmZzZXQpIC8gNCk7CisgICAgYXV0byByZXN1bHQgPSB2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJz
KCJ1bmlmb3JtNGl2IiwgbG9jYXRpb24sIGRhdGEsIDQsIHNyY09mZnNldCwgc3JjTGVuZ3RoKTsK
KyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgcmV0dXJuOworICAgIG1fY29udGV4dC0+dW5pZm9y
bTRpdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgcmVzdWx0LnZhbHVlKCkpOwogfQogCiB2b2lkIFdl
YkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm1NYXRyaXgyZnYoV2ViR0xVbmlmb3JtTG9jYXRp
b24qIGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEZsb2F0MzJMaXN0IGRhdGEsIEdD
R0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQogewotICAgIGlmIChpc0NvbnRl
eHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlVW5pZm9ybU1hdHJpeFBhcmFtZXRlcnMoInVu
aWZvcm1NYXRyaXgyZnYiLCBsb2NhdGlvbiwgdHJhbnNwb3NlLCBkYXRhLCAyKjIsIHNyY09mZnNl
dCwgc3JjTGVuZ3RoKSkKKyAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpKQogICAgICAg
ICByZXR1cm47Ci0gICAgbV9jb250ZXh0LT51bmlmb3JtTWF0cml4MmZ2KGxvY2F0aW9uLT5sb2Nh
dGlvbigpLCB0cmFuc3Bvc2UsIGRhdGEuZGF0YSgpLCBzcmNPZmZzZXQsIChzcmNMZW5ndGggPyBz
cmNMZW5ndGggOiBkYXRhLmxlbmd0aCgpIC0gc3JjT2Zmc2V0KSAvICgyKjIpKTsKKyAgICBhdXRv
IHJlc3VsdCA9IHZhbGlkYXRlVW5pZm9ybU1hdHJpeFBhcmFtZXRlcnMoInVuaWZvcm1NYXRyaXgy
ZnYiLCBsb2NhdGlvbiwgdHJhbnNwb3NlLCBkYXRhLCAyKjIsIHNyY09mZnNldCwgc3JjTGVuZ3Ro
KTsKKyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgcmV0dXJuOworICAgIG1fY29udGV4dC0+dW5p
Zm9ybU1hdHJpeDJmdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgdHJhbnNwb3NlLCByZXN1bHQudmFs
dWUoKSk7CiB9CiAKIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybU1hdHJpeDNm
dihXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwg
RmxvYXQzMkxpc3QgZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgp
CiB7Ci0gICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVVbmlmb3Jt
TWF0cml4UGFyYW1ldGVycygidW5pZm9ybU1hdHJpeDNmdiIsIGxvY2F0aW9uLCB0cmFuc3Bvc2Us
IGRhdGEsIDMqMywgc3JjT2Zmc2V0LCBzcmNMZW5ndGgpKQorICAgIGlmIChpc0NvbnRleHRMb3N0
T3JQZW5kaW5nKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBtX2NvbnRleHQtPnVuaWZvcm1NYXRy
aXgzZnYobG9jYXRpb24tPmxvY2F0aW9uKCksIHRyYW5zcG9zZSwgZGF0YS5kYXRhKCksIHNyY09m
ZnNldCwgKHNyY0xlbmd0aCA/IHNyY0xlbmd0aCA6IGRhdGEubGVuZ3RoKCkgLSBzcmNPZmZzZXQp
IC8gKDMqMykpOworICAgIGF1dG8gcmVzdWx0ID0gdmFsaWRhdGVVbmlmb3JtTWF0cml4UGFyYW1l
dGVycygidW5pZm9ybU1hdHJpeDNmdiIsIGxvY2F0aW9uLCB0cmFuc3Bvc2UsIGRhdGEsIDMqMywg
c3JjT2Zmc2V0LCBzcmNMZW5ndGgpOworICAgIGlmICghcmVzdWx0KQorICAgICAgICByZXR1cm47
CisgICAgbV9jb250ZXh0LT51bmlmb3JtTWF0cml4M2Z2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCB0
cmFuc3Bvc2UsIHJlc3VsdC52YWx1ZSgpKTsKIH0KIAogdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250
ZXh0Ojp1bmlmb3JtTWF0cml4NGZ2KFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgR0NH
TGJvb2xlYW4gdHJhbnNwb3NlLCBGbG9hdDMyTGlzdCBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQs
IEdDR0x1aW50IHNyY0xlbmd0aCkKIHsKLSAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygp
IHx8ICF2YWxpZGF0ZVVuaWZvcm1NYXRyaXhQYXJhbWV0ZXJzKCJ1bmlmb3JtTWF0cml4NGZ2Iiwg
bG9jYXRpb24sIHRyYW5zcG9zZSwgZGF0YSwgNCo0LCBzcmNPZmZzZXQsIHNyY0xlbmd0aCkpCisg
ICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSkKKyAgICAgICAgcmV0dXJuOworICAgIGF1
dG8gcmVzdWx0ID0gdmFsaWRhdGVVbmlmb3JtTWF0cml4UGFyYW1ldGVycygidW5pZm9ybU1hdHJp
eDRmdiIsIGxvY2F0aW9uLCB0cmFuc3Bvc2UsIGRhdGEsIDQqNCwgc3JjT2Zmc2V0LCBzcmNMZW5n
dGgpOworICAgIGlmICghcmVzdWx0KQogICAgICAgICByZXR1cm47Ci0gICAgbV9jb250ZXh0LT51
bmlmb3JtTWF0cml4NGZ2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCB0cmFuc3Bvc2UsIGRhdGEuZGF0
YSgpLCBzcmNPZmZzZXQsIChzcmNMZW5ndGggPyBzcmNMZW5ndGggOiBkYXRhLmxlbmd0aCgpIC0g
c3JjT2Zmc2V0KSAvICg0KjQpKTsKKyAgICBtX2NvbnRleHQtPnVuaWZvcm1NYXRyaXg0ZnYobG9j
YXRpb24tPmxvY2F0aW9uKCksIHRyYW5zcG9zZSwgcmVzdWx0LnZhbHVlKCkpOwogfQogCiB2b2lk
IFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnJlYWRQaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHks
IEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dM
ZW51bSB0eXBlLCBBcnJheUJ1ZmZlclZpZXcmIHBpeGVscykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuaAppbmRleCBiOGIwMzZlNDQ3
NmE0ZjE1ZDRlNTA2NzU4YzU3NTkzNWUwYTA2MjRmLi41ZjQ3ZTYxZjBhNDQ0NGEyODhjMWI0NjBm
YjRlMGY3MzY2NzQ2Njc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTDJSZW5kZXJpbmdDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0wyUmVuZGVyaW5nQ29udGV4dC5oCkBAIC0yOTIsNyArMjkyLDggQEAgcHJpdmF0ZToKICAg
ICBib29sIHZhbGlkYXRlSW5kZXhBcnJheUNvbnNlcnZhdGl2ZShHQ0dMZW51bSB0eXBlLCB1bnNp
Z25lZCYgbnVtRWxlbWVudHNSZXF1aXJlZCkgZmluYWw7CiAgICAgYm9vbCB2YWxpZGF0ZUJsZW5k
RXF1YXRpb24oY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBHQ0dMZW51bSBtb2RlKSBmaW5hbDsK
ICAgICBib29sIHZhbGlkYXRlQ2FwYWJpbGl0eShjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIEdD
R0xlbnVtIGNhcCkgZmluYWw7Ci0gICAgYm9vbCB2YWxpZGF0ZUNsZWFyQnVmZmVyKGNvbnN0IGNo
YXIqIGZ1bmN0aW9uTmFtZSwgR0NHTGVudW0gYnVmZmVyLCBzaXplX3QsIEdDR0x1aW50IHNyY09m
ZnNldCk7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVHlwZWRBcnJheVR5cGU+
CisgICAgT3B0aW9uYWw8R0NHTFNwYW48Y29uc3QgVD4+IHZhbGlkYXRlQ2xlYXJCdWZmZXIoY29u
c3QgY2hhciogZnVuY3Rpb25OYW1lLCBHQ0dMZW51bSBidWZmZXIsIFR5cGVkTGlzdDxUeXBlZEFy
cmF5VHlwZSwgVD4mIHZhbHVlcywgR0NHTHVpbnQgc3JjT2Zmc2V0KTsKICAgICBib29sIHZhbGlk
YXRlRnJhbWVidWZmZXJUYXJnZXQoR0NHTGVudW0gdGFyZ2V0KSBmaW5hbDsKICAgICBXZWJHTEZy
YW1lYnVmZmVyKiBnZXRGcmFtZWJ1ZmZlckJpbmRpbmcoR0NHTGVudW0gdGFyZ2V0KSBmaW5hbDsK
ICAgICBXZWJHTEZyYW1lYnVmZmVyKiBnZXRSZWFkRnJhbWVidWZmZXJCaW5kaW5nKCkgZmluYWw7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTERyYXdCdWZmZXJz
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRHJhd0J1ZmZlcnMuY3BwCmlu
ZGV4IDQ5NDE1NmUxZTY1YjYwMjkxOTBkYjdjMWMwMjZhZGY4MDNkZGE4ZDIuLmU1Y2ViNGJkZGNj
NGMwNTFkYjhiOWFhOWNlMDIwODFiZjIyMzA1MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMRHJhd0J1ZmZlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMRHJhd0J1ZmZlcnMuY3BwCkBAIC03NCw4ICs3NCw4IEBAIHZvaWQgV2Vi
R0xEcmF3QnVmZmVyczo6ZHJhd0J1ZmZlcnNXRUJHTChjb25zdCBWZWN0b3I8R0NHTGVudW0+JiBi
dWZmZXJzKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIC8vIEJlY2F1
c2UgdGhlIGJhY2tidWZmZXIgaXMgc2ltdWxhdGVkIG9uIGFsbCBjdXJyZW50IFdlYktpdCBwb3J0
cywgd2UgbmVlZCB0byBjaGFuZ2UgQkFDSyB0byBDT0xPUl9BVFRBQ0hNRU5UMC4KLSAgICAgICAg
R0NHTGVudW0gdmFsdWUgPSAoYnVmc1swXSA9PSBHcmFwaGljc0NvbnRleHRHTDo6QkFDSykgPyBH
cmFwaGljc0NvbnRleHRHTDo6Q09MT1JfQVRUQUNITUVOVDAgOiBHcmFwaGljc0NvbnRleHRHTDo6
Tk9ORTsKLSAgICAgICAgbV9jb250ZXh0LT5ncmFwaGljc0NvbnRleHRHTCgpLT5nZXRFeHRlbnNp
b25zKCkuZHJhd0J1ZmZlcnNFWFQoMSwgJnZhbHVlKTsKKyAgICAgICAgR0NHTGVudW0gdmFsdWVb
MV0geyAoYnVmc1swXSA9PSBHcmFwaGljc0NvbnRleHRHTDo6QkFDSykgPyBHcmFwaGljc0NvbnRl
eHRHTDo6Q09MT1JfQVRUQUNITUVOVDAgOiBHcmFwaGljc0NvbnRleHRHTDo6Tk9ORSB9OworICAg
ICAgICBtX2NvbnRleHQtPmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5kcmF3
QnVmZmVyc0VYVCh2YWx1ZSk7CiAgICAgICAgIG1fY29udGV4dC0+c2V0QmFja0RyYXdCdWZmZXIo
YnVmc1swXSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgaWYgKG4gPiBtX2NvbnRleHQtPmdldE1h
eERyYXdCdWZmZXJzKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMRnJhbWVidWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xG
cmFtZWJ1ZmZlci5jcHAKaW5kZXggMzY1OGVlOGVhYWY3ZjBkYmI4ODYzY2VkNTAyNDI1ZjRmYjRl
MjNhNS4uYjE5OGIzNjZiMTFmMTViMWI4MDNiZDA2M2M3NmM0ZjJjZDhkMTE3OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5jcHAKQEAgLTcwMiwx
MyArNzAyLDEwIEBAIHZvaWQgV2ViR0xGcmFtZWJ1ZmZlcjo6ZHJhd0J1ZmZlcnNJZk5lY2Vzc2Fy
eShib29sIGZvcmNlKQogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGlmIChyZXNl
dCkgewotICAgICAgICAgICAgaWYgKGNvbnRleHQoKS0+aXNXZWJHTDIoKSkgewotICAgICAgICAg
ICAgICAgIGNvbnRleHQoKS0+Z3JhcGhpY3NDb250ZXh0R0woKS0+ZHJhd0J1ZmZlcnMoCi0gICAg
ICAgICAgICAgICAgICAgIG1fZmlsdGVyZWREcmF3QnVmZmVycy5zaXplKCksIG1fZmlsdGVyZWRE
cmF3QnVmZmVycy5kYXRhKCkpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAg
ICBjb250ZXh0KCktPmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5kcmF3QnVm
ZmVyc0VYVCgKLSAgICAgICAgICAgICAgICAgICAgbV9maWx0ZXJlZERyYXdCdWZmZXJzLnNpemUo
KSwgbV9maWx0ZXJlZERyYXdCdWZmZXJzLmRhdGEoKSk7Ci0gICAgICAgICAgICB9CisgICAgICAg
ICAgICBpZiAoY29udGV4dCgpLT5pc1dlYkdMMigpKQorICAgICAgICAgICAgICAgIGNvbnRleHQo
KS0+Z3JhcGhpY3NDb250ZXh0R0woKS0+ZHJhd0J1ZmZlcnMobV9maWx0ZXJlZERyYXdCdWZmZXJz
KTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBjb250ZXh0KCktPmdyYXBoaWNz
Q29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5kcmF3QnVmZmVyc0VYVChtX2ZpbHRlcmVkRHJh
d0J1ZmZlcnMpOwogICAgICAgICB9CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAppbmRleCAxODVl
OGM2MmU2ZmJlMzFmMzEzODhjMGM5ZjgwZDgxY2VlMjRhM2IxLi4yNTRjYzk3YjQxNTU1MzQwMzZm
NWJkMmVhZjg3ZjA2OTYxNDc0NWQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcApAQCAtMTYwMyw3ICsxNjAz
LDcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpidWZmZXJEYXRhKEdDR0xlbnVt
IHRhcmdldCwgT3B0aW9uYWw8QnVmZmVyRGF0YVMKICAgICAgICAgfQogCiAgICAgICAgIG1fY29u
dGV4dC0+bW92ZUVycm9yc1RvU3ludGhldGljRXJyb3JMaXN0KCk7Ci0gICAgICAgIG1fY29udGV4
dC0+YnVmZmVyRGF0YSh0YXJnZXQsIGRhdGEtPmJ5dGVMZW5ndGgoKSwgZGF0YS0+ZGF0YSgpLCB1
c2FnZSk7CisgICAgICAgIG1fY29udGV4dC0+YnVmZmVyRGF0YSh0YXJnZXQsIEdDR0xTcGFuPGNv
bnN0IEdDR0x2b2lkPihkYXRhLT5kYXRhKCksIGRhdGEtPmJ5dGVMZW5ndGgoKSksIHVzYWdlKTsK
ICAgICAgICAgaWYgKG1fY29udGV4dC0+bW92ZUVycm9yc1RvU3ludGhldGljRXJyb3JMaXN0KCkp
IHsKICAgICAgICAgICAgIC8vIFRoZSBidWZmZXJEYXRhIGZ1bmN0aW9uIGZhaWxlZC4gVGVsbCB0
aGUgYnVmZmVyIGl0IGRvZXNuJ3QgaGF2ZSB0aGUgZGF0YSBpdCB0aGlua3MgaXQgZG9lcy4KICAg
ICAgICAgICAgIGJ1ZmZlci0+ZGlzYXNzb2NpYXRlQnVmZmVyRGF0YSgpOwpAQCAtMTYzMCw3ICsx
NjMwLDcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpidWZmZXJTdWJEYXRhKEdD
R0xlbnVtIHRhcmdldCwgbG9uZyBsb25nIG9mZnNldCwKICAgICAgICAgfQogCiAgICAgICAgIG1f
Y29udGV4dC0+bW92ZUVycm9yc1RvU3ludGhldGljRXJyb3JMaXN0KCk7Ci0gICAgICAgIG1fY29u
dGV4dC0+YnVmZmVyU3ViRGF0YSh0YXJnZXQsIHN0YXRpY19jYXN0PEdDR0xpbnRwdHI+KG9mZnNl
dCksIGRhdGEtPmJ5dGVMZW5ndGgoKSwgZGF0YS0+ZGF0YSgpKTsKKyAgICAgICAgbV9jb250ZXh0
LT5idWZmZXJTdWJEYXRhKHRhcmdldCwgc3RhdGljX2Nhc3Q8R0NHTGludHB0cj4ob2Zmc2V0KSwg
R0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+KGRhdGEtPmRhdGEoKSwgZGF0YS0+Ynl0ZUxlbmd0aCgp
KSk7CiAgICAgICAgIGlmIChtX2NvbnRleHQtPm1vdmVFcnJvcnNUb1N5bnRoZXRpY0Vycm9yTGlz
dCgpKSB7CiAgICAgICAgICAgICAvLyBUaGUgYnVmZmVyU3ViRGF0YSBmdW5jdGlvbiBmYWlsZWQu
IFRlbGwgdGhlIGJ1ZmZlciBpdCBkb2Vzbid0IGhhdmUgdGhlIGRhdGEgaXQgdGhpbmtzIGl0IGRv
ZXMuCiAgICAgICAgICAgICBidWZmZXItPmRpc2Fzc29jaWF0ZUJ1ZmZlckRhdGEoKTsKQEAgLTE3
NTcsNyArMTc1Nyw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Y29tcHJlc3Nl
ZFRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxlCiAgICAgaWYgKCF2YWxpZGF0
ZVRleHR1cmUyREJpbmRpbmcoImNvbXByZXNzZWRUZXhJbWFnZTJEIiwgdGFyZ2V0KSkKICAgICAg
ICAgcmV0dXJuOwogICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmNvbXByZXNzZWRUZXhJ
bWFnZTJEUm9idXN0QU5HTEUodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBo
ZWlnaHQsCi0gICAgICAgIGJvcmRlciwgZGF0YS5ieXRlTGVuZ3RoKCksIGRhdGEuYnl0ZUxlbmd0
aCgpLCBkYXRhLmJhc2VBZGRyZXNzKCkpOworICAgICAgICBib3JkZXIsIGRhdGEuYnl0ZUxlbmd0
aCgpLCBtYWtlR0NHTFNwYW4oZGF0YS5iYXNlQWRkcmVzcygpLCBkYXRhLmJ5dGVMZW5ndGgoKSkp
OwogI2Vsc2UKICAgICBpZiAoIXZhbGlkYXRlVGV4RnVuY0xldmVsKCJjb21wcmVzc2VkVGV4SW1h
Z2UyRCIsIHRhcmdldCwgbGV2ZWwpKQogICAgICAgICByZXR1cm47CkBAIC0xODAxLDcgKzE4MDEs
NyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmNvbXByZXNzZWRUZXhTdWJJbWFn
ZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludAogI2lmIFVTRShBTkdMRSkKICAgICBpZiAoIXZh
bGlkYXRlVGV4dHVyZTJEQmluZGluZygiY29tcHJlc3NlZFRleFN1YkltYWdlMkQiLCB0YXJnZXQp
KQogICAgICAgICByZXR1cm47Ci0gICAgZ3JhcGhpY3NDb250ZXh0R0woKS0+Z2V0RXh0ZW5zaW9u
cygpLmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEUm9idXN0QU5HTEUodGFyZ2V0LCBsZXZlbCwgeG9m
ZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCBkYXRhLmJ5dGVMZW5ndGgoKSwg
ZGF0YS5ieXRlTGVuZ3RoKCksIGRhdGEuYmFzZUFkZHJlc3MoKSk7CisgICAgZ3JhcGhpY3NDb250
ZXh0R0woKS0+Z2V0RXh0ZW5zaW9ucygpLmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEUm9idXN0QU5H
TEUodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0
LCBkYXRhLmJ5dGVMZW5ndGgoKSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+KGRhdGEuYmFzZUFk
ZHJlc3MoKSwgZGF0YS5ieXRlTGVuZ3RoKCkpKTsKICNlbHNlCiAgICAgaWYgKCF2YWxpZGF0ZVRl
eEZ1bmNMZXZlbCgiY29tcHJlc3NlZFRleFN1YkltYWdlMkQiLCB0YXJnZXQsIGxldmVsKSkKICAg
ICAgICAgcmV0dXJuOwpAQCAtNDcwOSwxMiArNDcwOSwxMiBAQCBFeGNlcHRpb25Pcjx2b2lkPiBX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp0ZXhJbWFnZVNvdXJjZUhlbHBlcihUZXhJbWFnZUZ1
bmN0aQogICAgICAgICAgICAgaWYgKGZ1bmN0aW9uSUQgPT0gVGV4SW1hZ2VGdW5jdGlvbklEOjpU
ZXhJbWFnZTNEKSB7CiAgICAgICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCku
dGV4SW1hZ2UzRFJvYnVzdEFOR0xFKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LAogICAg
ICAgICAgICAgICAgICAgICBhZGp1c3RlZFNvdXJjZUltYWdlUmVjdC53aWR0aCgpLCBhZGp1c3Rl
ZFNvdXJjZUltYWdlUmVjdC5oZWlnaHQoKSwgZGVwdGgsIDAsCi0gICAgICAgICAgICAgICAgICAg
IGZvcm1hdCwgdHlwZSwgYnl0ZUxlbmd0aCwgbmVlZENvbnZlcnNpb24gPyBkYXRhLmRhdGEoKSA6
IHBpeGVscy0+ZGF0YSgpLT5kYXRhKCkpOworICAgICAgICAgICAgICAgICAgICBmb3JtYXQsIHR5
cGUsIG1ha2VHQ0dMU3BhbihuZWVkQ29udmVyc2lvbiA/IGRhdGEuZGF0YSgpIDogcGl4ZWxzLT5k
YXRhKCktPmRhdGEoKSwgYnl0ZUxlbmd0aCkpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAg
ICAgICAgICAgICBBU1NFUlQoZnVuY3Rpb25JRCA9PSBUZXhJbWFnZUZ1bmN0aW9uSUQ6OlRleFN1
YkltYWdlM0QpOwogICAgICAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnRl
eFN1YkltYWdlM0RSb2J1c3RBTkdMRSh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB6
b2Zmc2V0LAogICAgICAgICAgICAgICAgICAgICBhZGp1c3RlZFNvdXJjZUltYWdlUmVjdC53aWR0
aCgpLCBhZGp1c3RlZFNvdXJjZUltYWdlUmVjdC5oZWlnaHQoKSwgZGVwdGgsCi0gICAgICAgICAg
ICAgICAgICAgIGZvcm1hdCwgdHlwZSwgYnl0ZUxlbmd0aCwgbmVlZENvbnZlcnNpb24gPyBkYXRh
LmRhdGEoKSA6IHBpeGVscy0+ZGF0YSgpLT5kYXRhKCkpOworICAgICAgICAgICAgICAgICAgICBm
b3JtYXQsIHR5cGUsIG1ha2VHQ0dMU3BhbihuZWVkQ29udmVyc2lvbiA/IGRhdGEuZGF0YSgpIDog
cGl4ZWxzLT5kYXRhKCktPmRhdGEoKSwgYnl0ZUxlbmd0aCkpOwogICAgICAgICAgICAgfQogI2Vs
c2UKICAgICAgICAgICAgIC8vIFdlYkdMIDIuMCBpcyBvbmx5IHN1cHBvcnRlZCB3aXRoIHRoZSBB
TkdMRSBiYWNrZW5kLgpAQCAtNDg5NCwxMSArNDg5NCwxMSBAQCB2b2lkIFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2U6OnRleEltYWdlQXJyYXlCdWZmZXJWaWV3SGVscGVyKFRleEltYWdlRnVuY3Rp
b25JRAogICAgIH0KICNpZiBVU0UoQU5HTEUpCiAgICAgaWYgKGZ1bmN0aW9uSUQgPT0gVGV4SW1h
Z2VGdW5jdGlvbklEOjpUZXhJbWFnZTNEKSB7Ci0gICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5z
aW9ucygpLnRleEltYWdlM0RSb2J1c3RBTkdMRSh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1h
dCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGJvcmRlciwgZm9ybWF0LCB0eXBlLCBieXRlTGVuZ3Ro
LCBkYXRhKTsKKyAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkudGV4SW1hZ2UzRFJv
YnVzdEFOR0xFKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBk
ZXB0aCwgYm9yZGVyLCBmb3JtYXQsIHR5cGUsIG1ha2VHQ0dMU3BhbihkYXRhLCBieXRlTGVuZ3Ro
KSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgaWYgKGZ1bmN0aW9uSUQgPT0gVGV4SW1h
Z2VGdW5jdGlvbklEOjpUZXhTdWJJbWFnZTNEKSB7Ci0gICAgICAgIG1fY29udGV4dC0+Z2V0RXh0
ZW5zaW9ucygpLnRleFN1YkltYWdlM0RSb2J1c3RBTkdMRSh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0
LCB5b2Zmc2V0LCB6b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgZm9ybWF0LCB0eXBlLCBi
eXRlTGVuZ3RoLCBkYXRhKTsKKyAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkudGV4
U3ViSW1hZ2UzRFJvYnVzdEFOR0xFKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHpv
ZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBmb3JtYXQsIHR5cGUsIG1ha2VHQ0dMU3Bhbihk
YXRhLCBieXRlTGVuZ3RoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAjZW5kaWYgLy8gVVNF
KEFOR0xFKQpAQCAtNDk3NSwxMiArNDk3NSwxMiBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2U6OnRleEltYWdlSW1wbChUZXhJbWFnZUZ1bmN0aW9uSUQgZnVuY3Rpb25JRCwgR0NHTAog
ICAgICAgICBpZiAoZnVuY3Rpb25JRCA9PSBUZXhJbWFnZUZ1bmN0aW9uSUQ6OlRleEltYWdlM0Qp
IHsKICAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnRleEltYWdlM0RSb2J1
c3RBTkdMRSh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwKICAgICAgICAgICAgICAgICBh
ZGp1c3RlZFNvdXJjZUltYWdlUmVjdC53aWR0aCgpLCBhZGp1c3RlZFNvdXJjZUltYWdlUmVjdC5o
ZWlnaHQoKSwgZGVwdGgsIDAsCi0gICAgICAgICAgICAgICAgZm9ybWF0LCB0eXBlLCBieXRlTGVu
Z3RoLCBuZWVkQ29udmVyc2lvbiA/IGRhdGEuZGF0YSgpIDogaW1hZ2VQaXhlbERhdGEpOworICAg
ICAgICAgICAgICAgIGZvcm1hdCwgdHlwZSwgbWFrZUdDR0xTcGFuKG5lZWRDb252ZXJzaW9uID8g
ZGF0YS5kYXRhKCkgOiBpbWFnZVBpeGVsRGF0YSwgYnl0ZUxlbmd0aCkpOwogICAgICAgICB9IGVs
c2UgewogICAgICAgICAgICAgQVNTRVJUKGZ1bmN0aW9uSUQgPT0gVGV4SW1hZ2VGdW5jdGlvbklE
OjpUZXhTdWJJbWFnZTNEKTsKICAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygp
LnRleFN1YkltYWdlM0RSb2J1c3RBTkdMRSh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0
LCB6b2Zmc2V0LAogICAgICAgICAgICAgICAgIGFkanVzdGVkU291cmNlSW1hZ2VSZWN0LndpZHRo
KCksIGFkanVzdGVkU291cmNlSW1hZ2VSZWN0LmhlaWdodCgpLCBkZXB0aCwKLSAgICAgICAgICAg
ICAgICBmb3JtYXQsIHR5cGUsIGJ5dGVMZW5ndGgsIG5lZWRDb252ZXJzaW9uID8gZGF0YS5kYXRh
KCkgOiBpbWFnZVBpeGVsRGF0YSk7CisgICAgICAgICAgICAgICAgZm9ybWF0LCB0eXBlLCBtYWtl
R0NHTFNwYW4obmVlZENvbnZlcnNpb24gPyBkYXRhLmRhdGEoKSA6IGltYWdlUGl4ZWxEYXRhLCBi
eXRlTGVuZ3RoKSk7CiAgICAgICAgIH0KICNlbHNlCiAgICAgICAgIFVOVVNFRF9QQVJBTSh6b2Zm
c2V0KTsKQEAgLTQ5OTMsNyArNDk5Myw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZTo6dGV4SW1hZ2VJbXBsKFRleEltYWdlRnVuY3Rpb25JRCBmdW5jdGlvbklELCBHQ0dMCiB2b2lk
IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnRleEltYWdlMkRCYXNlKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEdDR0xzaXplaSB3aWR0
aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NH
TGVudW0gdHlwZSwgR0NHTHNpemVpIGJ5dGVMZW5ndGgsIGNvbnN0IHZvaWQqIHBpeGVscykKIHsK
ICNpZiBVU0UoQU5HTEUpCi0gICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkudGV4SW1hZ2Uy
RFJvYnVzdEFOR0xFKHRhcmdldCwgbGV2ZWwsIGludGVybmFsRm9ybWF0LCB3aWR0aCwgaGVpZ2h0
LCBib3JkZXIsIGZvcm1hdCwgdHlwZSwgYnl0ZUxlbmd0aCwgcGl4ZWxzKTsKKyAgICBtX2NvbnRl
eHQtPmdldEV4dGVuc2lvbnMoKS50ZXhJbWFnZTJEUm9idXN0QU5HTEUodGFyZ2V0LCBsZXZlbCwg
aW50ZXJuYWxGb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGJvcmRlciwgZm9ybWF0LCB0eXBlLCBtYWtl
R0NHTFNwYW4ocGl4ZWxzLCBieXRlTGVuZ3RoKSk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShi
eXRlTGVuZ3RoKTsKICAgICAvLyBGSVhNRTogRm9yIG5vdyB3ZSBpZ25vcmUgYW55IGVycm9ycyBy
ZXR1cm5lZC4KQEAgLTUwMjMsNyArNTAyMyw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZTo6dGV4U3ViSW1hZ2UyREJhc2UoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsCiAg
ICAgQVNTRVJUKCFpc0NvbnRleHRMb3N0KCkpOwogI2lmIFVTRShBTkdMRSkKICAgICBVTlVTRURf
UEFSQU0oaW50ZXJuYWxGb3JtYXQpOwotICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnRl
eFN1YkltYWdlMkRSb2J1c3RBTkdMRSh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB3
aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIGJ5dGVMZW5ndGgsIHBpeGVscyk7CisgICAgbV9j
b250ZXh0LT5nZXRFeHRlbnNpb25zKCkudGV4U3ViSW1hZ2UyRFJvYnVzdEFOR0xFKHRhcmdldCwg
bGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgbWFr
ZUdDR0xTcGFuKHBpeGVscywgYnl0ZUxlbmd0aCkpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0o
Ynl0ZUxlbmd0aCk7CiAgICAgQVNTRVJUKHZhbGlkYXRlVGV4RnVuY1BhcmFtZXRlcnMoInRleFN1
YkltYWdlMkQiLCBUZXhJbWFnZUZ1bmN0aW9uVHlwZTo6VGV4U3ViSW1hZ2UsIFNvdXJjZUFycmF5
QnVmZmVyVmlldywgdGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxGb3JtYXQsIHdpZHRoLCBoZWlnaHQs
IDEsIDAsIGZvcm1hdCwgdHlwZSkpOwpAQCAtNTgyNiwxMDAgKzU4MjYsMTI1IEBAIHZvaWQgV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybTRpKGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0
aW9uKiBsb2NhdGlvbiwKIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3Jt
MWZ2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgRmxvYXQzMkxpc3QmJiB2
KQogewotICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlVW5pZm9y
bVBhcmFtZXRlcnMoInVuaWZvcm0xZnYiLCBsb2NhdGlvbiwgdiwgMSwgMCwgdi5sZW5ndGgoKSkp
CisgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSkKICAgICAgICAgcmV0dXJuOwotCi0g
ICAgbV9jb250ZXh0LT51bmlmb3JtMWZ2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCB2Lmxlbmd0aCgp
LCB2LmRhdGEoKSk7CisgICAgYXV0byBkYXRhID0gdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycygi
dW5pZm9ybTFmdiIsIGxvY2F0aW9uLCB2LCAxKTsKKyAgICBpZiAoIWRhdGEpCisgICAgICAgIHJl
dHVybjsKKyAgICBtX2NvbnRleHQtPnVuaWZvcm0xZnYobG9jYXRpb24tPmxvY2F0aW9uKCksIGRh
dGEudmFsdWUoKSk7CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9y
bTJmdihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEZsb2F0MzJMaXN0JiYg
dikKIHsKLSAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVVuaWZv
cm1QYXJhbWV0ZXJzKCJ1bmlmb3JtMmZ2IiwgbG9jYXRpb24sIHYsIDIsIDAsIHYubGVuZ3RoKCkp
KQorICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCiAgICAgICAgIHJldHVybjsKLQot
ICAgIG1fY29udGV4dC0+dW5pZm9ybTJmdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgdi5sZW5ndGgo
KSAvIDIsIHYuZGF0YSgpKTsKKyAgICBhdXRvIGRhdGEgPSB2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0
ZXJzKCJ1bmlmb3JtMmZ2IiwgbG9jYXRpb24sIHYsIDIpOworICAgIGlmICghZGF0YSkKKyAgICAg
ICAgcmV0dXJuOworICAgIG1fY29udGV4dC0+dW5pZm9ybTJmdihsb2NhdGlvbi0+bG9jYXRpb24o
KSwgZGF0YS52YWx1ZSgpKTsKIH0KIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1
bmlmb3JtM2Z2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgRmxvYXQzMkxp
c3QmJiB2KQogewotICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRl
VW5pZm9ybVBhcmFtZXRlcnMoInVuaWZvcm0zZnYiLCBsb2NhdGlvbiwgdiwgMywgMCwgdi5sZW5n
dGgoKSkpCisgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSkKICAgICAgICAgcmV0dXJu
OwotCi0gICAgbV9jb250ZXh0LT51bmlmb3JtM2Z2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCB2Lmxl
bmd0aCgpIC8gMywgdi5kYXRhKCkpOworICAgIGF1dG8gZGF0YSA9IHZhbGlkYXRlVW5pZm9ybVBh
cmFtZXRlcnMoInVuaWZvcm0zZnYiLCBsb2NhdGlvbiwgdiwgMyk7CisgICAgaWYgKCFkYXRhKQor
ICAgICAgICByZXR1cm47CisgICAgbV9jb250ZXh0LT51bmlmb3JtM2Z2KGxvY2F0aW9uLT5sb2Nh
dGlvbigpLCBkYXRhLnZhbHVlKCkpOwogfQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U6OnVuaWZvcm00ZnYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBGbG9h
dDMyTGlzdCYmIHYpCiB7Ci0gICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhdmFs
aWRhdGVVbmlmb3JtUGFyYW1ldGVycygidW5pZm9ybTRmdiIsIGxvY2F0aW9uLCB2LCA0LCAwLCB2
Lmxlbmd0aCgpKSkKKyAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpKQogICAgICAgICBy
ZXR1cm47Ci0KLSAgICBtX2NvbnRleHQtPnVuaWZvcm00ZnYobG9jYXRpb24tPmxvY2F0aW9uKCks
IHYubGVuZ3RoKCkgLyA0LCB2LmRhdGEoKSk7CisgICAgYXV0byBkYXRhID0gdmFsaWRhdGVVbmlm
b3JtUGFyYW1ldGVycygidW5pZm9ybTRmdiIsIGxvY2F0aW9uLCB2LCA0KTsKKyAgICBpZiAoIWRh
dGEpCisgICAgICAgIHJldHVybjsKKyAgICBtX2NvbnRleHQtPnVuaWZvcm00ZnYobG9jYXRpb24t
PmxvY2F0aW9uKCksIGRhdGEudmFsdWUoKSk7CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZTo6dW5pZm9ybTFpdihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24s
IEludDMyTGlzdCYmIHYpCiB7Ci0gICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAh
dmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycygidW5pZm9ybTFpdiIsIGxvY2F0aW9uLCB2LCAxLCAw
LCB2Lmxlbmd0aCgpKSkKKyAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpKQorICAgICAg
ICByZXR1cm47CisgICAgYXV0byByZXN1bHQgPSB2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKCJ1
bmlmb3JtMWl2IiwgbG9jYXRpb24sIHYsIDEpOworICAgIGlmICghcmVzdWx0KQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBhdXRvIGRhdGEgPSB2LmRhdGEoKTsKLSAgICBhdXRvIGxlbmd0aCA9IHYu
bGVuZ3RoKCk7CisgICAgYXV0byBkYXRhID0gcmVzdWx0LnZhbHVlKCk7CiAKICAgICBpZiAobG9j
YXRpb24tPnR5cGUoKSA9PSBHcmFwaGljc0NvbnRleHRHTDo6U0FNUExFUl8yRCB8fCBsb2NhdGlv
bi0+dHlwZSgpID09IEdyYXBoaWNzQ29udGV4dEdMOjpTQU1QTEVSX0NVQkUpIHsKLSAgICAgICAg
Zm9yIChhdXRvIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKKyAgICAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBkYXRhLmJ1ZlNpemU7ICsraSkgewogICAgICAgICAgICAgaWYgKGRhdGFbaV0g
Pj0gc3RhdGljX2Nhc3Q8aW50PihtX3RleHR1cmVVbml0cy5zaXplKCkpKSB7Ci0gICAgICAgICAg
ICAgICAgTE9HKFdlYkdMLCAiVGV4dHVyZSB1bml0IHNpemU9JXp1LCB2WyVkXT0lZC4gTG9jYXRp
b24gdHlwZSA9ICUwNFguIiwgbV90ZXh0dXJlVW5pdHMuc2l6ZSgpLCBpLCBkYXRhW2ldLCBsb2Nh
dGlvbi0+dHlwZSgpKTsKKyAgICAgICAgICAgICAgICBMT0coV2ViR0wsICJUZXh0dXJlIHVuaXQg
c2l6ZT0lenUsIHZbJXp1XT0lZC4gTG9jYXRpb24gdHlwZSA9ICUwNFguIiwgbV90ZXh0dXJlVW5p
dHMuc2l6ZSgpLCBpLCBkYXRhW2ldLCBsb2NhdGlvbi0+dHlwZSgpKTsKICAgICAgICAgICAgICAg
ICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9WQUxVRSwgInVu
aWZvcm0xaXYiLCAiaW52YWxpZCB0ZXh0dXJlIHVuaXQiKTsKICAgICAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBtX2NvbnRleHQtPnVu
aWZvcm0xaXYobG9jYXRpb24tPmxvY2F0aW9uKCksIGxlbmd0aCwgZGF0YSk7CisgICAgbV9jb250
ZXh0LT51bmlmb3JtMWl2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCBkYXRhKTsKIH0KIAogdm9pZCBX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtMml2KGNvbnN0IFdlYkdMVW5pZm9ybUxv
Y2F0aW9uKiBsb2NhdGlvbiwgSW50MzJMaXN0JiYgdikKIHsKLSAgICBpZiAoaXNDb250ZXh0TG9z
dE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKCJ1bmlmb3JtMml2Iiwg
bG9jYXRpb24sIHYsIDIsIDAsIHYubGVuZ3RoKCkpKQorICAgIGlmIChpc0NvbnRleHRMb3N0T3JQ
ZW5kaW5nKCkpCiAgICAgICAgIHJldHVybjsKLQotICAgIG1fY29udGV4dC0+dW5pZm9ybTJpdihs
b2NhdGlvbi0+bG9jYXRpb24oKSwgdi5sZW5ndGgoKSAvIDIsIHYuZGF0YSgpKTsKKyAgICBhdXRv
IGRhdGEgPSB2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKCJ1bmlmb3JtMml2IiwgbG9jYXRpb24s
IHYsIDIpOworICAgIGlmICghZGF0YSkKKyAgICAgICAgcmV0dXJuOworICAgIG1fY29udGV4dC0+
dW5pZm9ybTJpdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgZGF0YS52YWx1ZSgpKTsKIH0KIAogdm9p
ZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtM2l2KGNvbnN0IFdlYkdMVW5pZm9y
bUxvY2F0aW9uKiBsb2NhdGlvbiwgSW50MzJMaXN0JiYgdikKIHsKLSAgICBpZiAoaXNDb250ZXh0
TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKCJ1bmlmb3JtM2l2
IiwgbG9jYXRpb24sIHYsIDMsIDAsIHYubGVuZ3RoKCkpKQorICAgIGlmIChpc0NvbnRleHRMb3N0
T3JQZW5kaW5nKCkpCiAgICAgICAgIHJldHVybjsKLQotICAgIG1fY29udGV4dC0+dW5pZm9ybTNp
dihsb2NhdGlvbi0+bG9jYXRpb24oKSwgdi5sZW5ndGgoKSAvIDMsIHYuZGF0YSgpKTsKKyAgICBh
dXRvIGRhdGEgPSB2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKCJ1bmlmb3JtM2l2IiwgbG9jYXRp
b24sIHYsIDMpOworICAgIGlmICghZGF0YSkKKyAgICAgICAgcmV0dXJuOworICAgIG1fY29udGV4
dC0+dW5pZm9ybTNpdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgZGF0YS52YWx1ZSgpKTsKIH0KIAog
dm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtNGl2KGNvbnN0IFdlYkdMVW5p
Zm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgSW50MzJMaXN0JiYgdikKIHsKLSAgICBpZiAoaXNDb250
ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKCJ1bmlmb3Jt
NGl2IiwgbG9jYXRpb24sIHYsIDQsIDAsIHYubGVuZ3RoKCkpKQorICAgIGlmIChpc0NvbnRleHRM
b3N0T3JQZW5kaW5nKCkpCiAgICAgICAgIHJldHVybjsKLQotICAgIG1fY29udGV4dC0+dW5pZm9y
bTRpdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgdi5sZW5ndGgoKSAvIDQsIHYuZGF0YSgpKTsKKyAg
ICBhdXRvIGRhdGEgPSB2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKCJ1bmlmb3JtNGl2IiwgbG9j
YXRpb24sIHYsIDQpOworICAgIGlmICghZGF0YSkKKyAgICAgICAgcmV0dXJuOworICAgIG1fY29u
dGV4dC0+dW5pZm9ybTRpdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgZGF0YS52YWx1ZSgpKTsKIH0K
IAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtTWF0cml4MmZ2KGNvbnN0
IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBG
bG9hdDMyTGlzdCYmIHYpCiB7Ci0gICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAh
dmFsaWRhdGVVbmlmb3JtTWF0cml4UGFyYW1ldGVycygidW5pZm9ybU1hdHJpeDJmdiIsIGxvY2F0
aW9uLCB0cmFuc3Bvc2UsIHYsIDQsIDAsIHYubGVuZ3RoKCkpKQorICAgIGlmIChpc0NvbnRleHRM
b3N0T3JQZW5kaW5nKCkpCisgICAgICAgIHJldHVybjsKKyAgICBhdXRvIGRhdGEgPSB2YWxpZGF0
ZVVuaWZvcm1NYXRyaXhQYXJhbWV0ZXJzKCJ1bmlmb3JtTWF0cml4MmZ2IiwgbG9jYXRpb24sIHRy
YW5zcG9zZSwgdiwgNCk7CisgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm47Ci0gICAgbV9j
b250ZXh0LT51bmlmb3JtTWF0cml4MmZ2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCB2Lmxlbmd0aCgp
IC8gNCwgdHJhbnNwb3NlLCB2LmRhdGEoKSk7CisgICAgbV9jb250ZXh0LT51bmlmb3JtTWF0cml4
MmZ2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCB0cmFuc3Bvc2UsIGRhdGEudmFsdWUoKSk7CiB9CiAK
IHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybU1hdHJpeDNmdihjb25zdCBX
ZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgRmxv
YXQzMkxpc3QmJiB2KQogewotICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZh
bGlkYXRlVW5pZm9ybU1hdHJpeFBhcmFtZXRlcnMoInVuaWZvcm1NYXRyaXgzZnYiLCBsb2NhdGlv
biwgdHJhbnNwb3NlLCB2LCA5LCAwLCB2Lmxlbmd0aCgpKSkKKyAgICBpZiAoaXNDb250ZXh0TG9z
dE9yUGVuZGluZygpKQorICAgICAgICByZXR1cm47CisgICAgYXV0byBkYXRhID0gdmFsaWRhdGVV
bmlmb3JtTWF0cml4UGFyYW1ldGVycygidW5pZm9ybU1hdHJpeDNmdiIsIGxvY2F0aW9uLCB0cmFu
c3Bvc2UsIHYsIDkpOworICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuOwotICAgIG1fY29u
dGV4dC0+dW5pZm9ybU1hdHJpeDNmdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgdi5sZW5ndGgoKSAv
IDksIHRyYW5zcG9zZSwgdi5kYXRhKCkpOworICAgIG1fY29udGV4dC0+dW5pZm9ybU1hdHJpeDNm
dihsb2NhdGlvbi0+bG9jYXRpb24oKSwgdHJhbnNwb3NlLCBkYXRhLnZhbHVlKCkpOwogfQogCiB2
b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm1NYXRyaXg0ZnYoY29uc3QgV2Vi
R0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEZsb2F0
MzJMaXN0JiYgdikKIHsKLSAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxp
ZGF0ZVVuaWZvcm1NYXRyaXhQYXJhbWV0ZXJzKCJ1bmlmb3JtTWF0cml4NGZ2IiwgbG9jYXRpb24s
IHRyYW5zcG9zZSwgdiwgMTYsIDAsIHYubGVuZ3RoKCkpKQorICAgIGlmIChpc0NvbnRleHRMb3N0
T3JQZW5kaW5nKCkpCisgICAgICAgIHJldHVybjsKKyAgICBhdXRvIGRhdGEgPSB2YWxpZGF0ZVVu
aWZvcm1NYXRyaXhQYXJhbWV0ZXJzKCJ1bmlmb3JtTWF0cml4NGZ2IiwgbG9jYXRpb24sIHRyYW5z
cG9zZSwgdiwgMTYpOworICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuOwotICAgIG1fY29u
dGV4dC0+dW5pZm9ybU1hdHJpeDRmdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgdi5sZW5ndGgoKSAv
IDE2LCB0cmFuc3Bvc2UsIHYuZGF0YSgpKTsKKyAgICBtX2NvbnRleHQtPnVuaWZvcm1NYXRyaXg0
ZnYobG9jYXRpb24tPmxvY2F0aW9uKCksIHRyYW5zcG9zZSwgZGF0YS52YWx1ZSgpKTsKIH0KIAog
dm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1c2VQcm9ncmFtKFdlYkdMUHJvZ3JhbSog
cHJvZ3JhbSkKQEAgLTcwNDcsNjIgKzcwNzIsNDggQEAgYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlOjp2YWxpZGF0ZUNhcGFiaWxpdHkoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBHQ0cK
ICAgICB9CiB9CiAKLWJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmFsaWRhdGVVbmlm
b3JtUGFyYW1ldGVycyhjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIGNvbnN0IFdlYkdMVW5pZm9y
bUxvY2F0aW9uKiBsb2NhdGlvbiwgY29uc3QgRmxvYXQzMkxpc3QmIHYsIEdDR0xzaXplaSByZXF1
aXJlZE1pblNpemUsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQotewot
ICAgIHJldHVybiB2YWxpZGF0ZVVuaWZvcm1NYXRyaXhQYXJhbWV0ZXJzKGZ1bmN0aW9uTmFtZSwg
bG9jYXRpb24sIGZhbHNlLCB2LmRhdGEoKSwgdi5sZW5ndGgoKSwgcmVxdWlyZWRNaW5TaXplLCBz
cmNPZmZzZXQsIHNyY0xlbmd0aCk7Ci19Ci0KLWJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZTo6dmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycyhjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIGNv
bnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgY29uc3QgSW50MzJMaXN0JiB2LCBH
Q0dMc2l6ZWkgcmVxdWlyZWRNaW5TaXplLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNy
Y0xlbmd0aCkKLXsKLSAgICByZXR1cm4gdmFsaWRhdGVVbmlmb3JtTWF0cml4UGFyYW1ldGVycyhm
dW5jdGlvbk5hbWUsIGxvY2F0aW9uLCBmYWxzZSwgdi5kYXRhKCksIHYubGVuZ3RoKCksIHJlcXVp
cmVkTWluU2l6ZSwgc3JjT2Zmc2V0LCBzcmNMZW5ndGgpOwotfQogCi1ib29sIFdlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMoY29uc3QgY2hhciogZnVu
Y3Rpb25OYW1lLCBjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIGNvbnN0IFVp
bnQzMkxpc3QmIHYsIEdDR0xzaXplaSByZXF1aXJlZE1pblNpemUsIEdDR0x1aW50IHNyY09mZnNl
dCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQotewotICAgIHJldHVybiB2YWxpZGF0ZVVuaWZvcm1NYXRy
aXhQYXJhbWV0ZXJzKGZ1bmN0aW9uTmFtZSwgbG9jYXRpb24sIGZhbHNlLCB2LmRhdGEoKSwgdi5s
ZW5ndGgoKSwgcmVxdWlyZWRNaW5TaXplLCBzcmNPZmZzZXQsIHNyY0xlbmd0aCk7Ci19Ci0KLWJv
b2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycyhj
b25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2Nh
dGlvbiwgdm9pZCogdiwgR0NHTHNpemVpIHNpemUsIEdDR0xzaXplaSByZXF1aXJlZE1pblNpemUs
IEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQotewotICAgIHJldHVybiB2
YWxpZGF0ZVVuaWZvcm1NYXRyaXhQYXJhbWV0ZXJzKGZ1bmN0aW9uTmFtZSwgbG9jYXRpb24sIGZh
bHNlLCB2LCBzaXplLCByZXF1aXJlZE1pblNpemUsIHNyY09mZnNldCwgc3JjTGVuZ3RoKTsKLX0K
LQotYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZVVuaWZvcm1NYXRyaXhQ
YXJhbWV0ZXJzKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgY29uc3QgV2ViR0xVbmlmb3JtTG9j
YXRpb24qIGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEZsb2F0MzJMaXN0
JiB2LCBHQ0dMc2l6ZWkgcmVxdWlyZWRNaW5TaXplLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1
aW50IHNyY0xlbmd0aCkKLXsKLSAgICByZXR1cm4gdmFsaWRhdGVVbmlmb3JtTWF0cml4UGFyYW1l
dGVycyhmdW5jdGlvbk5hbWUsIGxvY2F0aW9uLCB0cmFuc3Bvc2UsIHYuZGF0YSgpLCB2Lmxlbmd0
aCgpLCByZXF1aXJlZE1pblNpemUsIHNyY09mZnNldCwgc3JjTGVuZ3RoKTsKLX0KLQotYm9vbCBX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZVVuaWZvcm1NYXRyaXhQYXJhbWV0ZXJz
KGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxv
Y2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IHZvaWQqIHYsIEdDR0xzaXplaSBz
aXplLCBHQ0dMc2l6ZWkgcmVxdWlyZWRNaW5TaXplLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1
aW50IHNyY0xlbmd0aCkKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFR5cGVkTGlzdFR5
cGU+CitPcHRpb25hbDxHQ0dMU3Bhbjxjb25zdCBUPj4gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZTo6dmFsaWRhdGVVbmlmb3JtTWF0cml4UGFyYW1ldGVycyhjb25zdCBjaGFyKiBmdW5jdGlvbk5h
bWUsIGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJh
bnNwb3NlLCBjb25zdCBUeXBlZExpc3Q8VHlwZWRMaXN0VHlwZSwgVD4mIHZhbHVlcywgR0NHTHNp
emVpIHJlcXVpcmVkTWluU2l6ZSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5n
dGgpCiB7CiAgICAgaWYgKCF2YWxpZGF0ZVVuaWZvcm1Mb2NhdGlvbihmdW5jdGlvbk5hbWUsIGxv
Y2F0aW9uKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICghdikgeworICAgICAgICBy
ZXR1cm4geyB9OworICAgIGlmICghdmFsdWVzLmRhdGEoKSkgewogICAgICAgICBzeW50aGVzaXpl
R0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9WQUxVRSwgZnVuY3Rpb25OYW1lLCAi
bm8gYXJyYXkiKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4geyB9Owog
ICAgIH0KICAgICBpZiAodHJhbnNwb3NlICYmICFpc1dlYkdMMigpKSB7CiAgICAgICAgIHN5bnRo
ZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX1ZBTFVFLCBmdW5jdGlvbk5h
bWUsICJ0cmFuc3Bvc2Ugbm90IEZBTFNFIik7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgcmV0dXJuIHsgfTsKICAgICB9Ci0gICAgaWYgKHNyY09mZnNldCA+PSBzdGF0aWNfY2FzdDxH
Q0dMdWludD4oc2l6ZSkpIHsKKyAgICBpZiAoc3JjT2Zmc2V0ID49IHN0YXRpY19jYXN0PEdDR0x1
aW50Pih2YWx1ZXMubGVuZ3RoKCkpKSB7CiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBo
aWNzQ29udGV4dEdMOjpJTlZBTElEX1ZBTFVFLCBmdW5jdGlvbk5hbWUsICJpbnZhbGlkIHNyY09m
ZnNldCIpOwotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiB7IH07CiAgICAg
fQotICAgIEdDR0xzaXplaSBhY3R1YWxTaXplID0gc2l6ZSAtIHNyY09mZnNldDsKKyAgICBHQ0dM
c2l6ZWkgYWN0dWFsU2l6ZSA9IHZhbHVlcy5sZW5ndGgoKSAtIHNyY09mZnNldDsKICAgICBpZiAo
c3JjTGVuZ3RoID4gMCkgewogICAgICAgICBpZiAoc3JjTGVuZ3RoID4gc3RhdGljX2Nhc3Q8R0NH
THVpbnQ+KGFjdHVhbFNpemUpKSB7CiAgICAgICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFw
aGljc0NvbnRleHRHTDo6SU5WQUxJRF9WQUxVRSwgZnVuY3Rpb25OYW1lLCAiaW52YWxpZCBzcmNP
ZmZzZXQgKyBzcmNMZW5ndGgiKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
ICAgIHJldHVybiB7IH07CiAgICAgICAgIH0KICAgICAgICAgYWN0dWFsU2l6ZSA9IHNyY0xlbmd0
aDsKICAgICB9CiAgICAgaWYgKGFjdHVhbFNpemUgPCByZXF1aXJlZE1pblNpemUgfHwgKGFjdHVh
bFNpemUgJSByZXF1aXJlZE1pblNpemUpKSB7CiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdy
YXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX1ZBTFVFLCBmdW5jdGlvbk5hbWUsICJpbnZhbGlkIHNp
emUiKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4geyB9OwogICAgIH0K
LSAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gbWFrZUdDR0xTcGFuKHZhbHVlcy5kYXRhKCkg
KyBzcmNPZmZzZXQsIGFjdHVhbFNpemUpOwogfQogCit0ZW1wbGF0ZQorT3B0aW9uYWw8R0NHTFNw
YW48Y29uc3QgR0NHTHVpbnQ+PiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZVVu
aWZvcm1NYXRyaXhQYXJhbWV0ZXJzPEdDR0x1aW50LCBVaW50MzJBcnJheT4oY29uc3QgY2hhciog
ZnVuY3Rpb25OYW1lLCBjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiosIEdDR0xib29sZWFuIHRy
YW5zcG9zZSwgY29uc3QgVHlwZWRMaXN0PFVpbnQzMkFycmF5LCB1aW50MzJfdD4mIHZhbHVlcywg
R0NHTHNpemVpIHJlcXVpcmVkTWluU2l6ZSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBz
cmNMZW5ndGgpOworCit0ZW1wbGF0ZQorT3B0aW9uYWw8R0NHTFNwYW48Y29uc3QgR0NHTGludD4+
IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlVW5pZm9ybU1hdHJpeFBhcmFtZXRl
cnM8R0NHTGludCwgSW50MzJBcnJheT4oY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBjb25zdCBX
ZWJHTFVuaWZvcm1Mb2NhdGlvbiosIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgVHlwZWRM
aXN0PEludDMyQXJyYXksIGludDMyX3Q+JiB2YWx1ZXMsIEdDR0xzaXplaSByZXF1aXJlZE1pblNp
emUsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKTsKKwordGVtcGxhdGUK
K09wdGlvbmFsPEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4+IFdlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2U6OnZhbGlkYXRlVW5pZm9ybU1hdHJpeFBhcmFtZXRlcnM8R0NHTGZsb2F0LCBGbG9hdDMy
QXJyYXk+KGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRp
b24qLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IFR5cGVkTGlzdDxGbG9hdDMyQXJyYXks
IGZsb2F0PiYgdmFsdWVzLCBHQ0dMc2l6ZWkgcmVxdWlyZWRNaW5TaXplLCBHQ0dMdWludCBzcmNP
ZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCk7CisKIFdlYkdMQnVmZmVyKiBXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlOjp2YWxpZGF0ZUJ1ZmZlckRhdGFQYXJhbWV0ZXJzKGNvbnN0IGNoYXIqIGZ1
bmN0aW9uTmFtZSwgR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSB1c2FnZSkKIHsKICAgICBXZWJH
TEJ1ZmZlciogYnVmZmVyID0gdmFsaWRhdGVCdWZmZXJEYXRhVGFyZ2V0KGZ1bmN0aW9uTmFtZSwg
dGFyZ2V0KTsKQEAgLTcyNDYsMTYgKzcyNTcsMTYgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlOjp2ZXJ0ZXhBdHRyaWJmdkltcGwoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBHQ0cK
ICAgICB7CiAgICAgICAgIHN3aXRjaCAoZXhwZWN0ZWRTaXplKSB7CiAgICAgICAgIGNhc2UgMToK
LSAgICAgICAgICAgIG1fY29udGV4dC0+dmVydGV4QXR0cmliMWZ2KGluZGV4LCBkYXRhKTsKKyAg
ICAgICAgICAgIG1fY29udGV4dC0+dmVydGV4QXR0cmliMWZ2KGluZGV4LCBtYWtlR0NHTFNwYW48
MT4oZGF0YSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgMjoKLSAgICAgICAg
ICAgIG1fY29udGV4dC0+dmVydGV4QXR0cmliMmZ2KGluZGV4LCBkYXRhKTsKKyAgICAgICAgICAg
IG1fY29udGV4dC0+dmVydGV4QXR0cmliMmZ2KGluZGV4LCBtYWtlR0NHTFNwYW48Mj4oZGF0YSkp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgMzoKLSAgICAgICAgICAgIG1fY29u
dGV4dC0+dmVydGV4QXR0cmliM2Z2KGluZGV4LCBkYXRhKTsKKyAgICAgICAgICAgIG1fY29udGV4
dC0+dmVydGV4QXR0cmliM2Z2KGluZGV4LCBtYWtlR0NHTFNwYW48Mz4oZGF0YSkpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgNDoKLSAgICAgICAgICAgIG1fY29udGV4dC0+dmVy
dGV4QXR0cmliNGZ2KGluZGV4LCBkYXRhKTsKKyAgICAgICAgICAgIG1fY29udGV4dC0+dmVydGV4
QXR0cmliNGZ2KGluZGV4LCBtYWtlR0NHTFNwYW48ND4oZGF0YSkpOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KICAgICB9CkBAIC03MzMwLDcgKzczNDEsNyBAQCBPcHRpb25hbDxib29s
PiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpzaW11bGF0ZVZlcnRleEF0dHJpYjAoR0NHTHVp
bnQgbnVtVmVydAogCiAgICAgaWYgKGJ1ZmZlckRhdGFTaXplID4gbV92ZXJ0ZXhBdHRyaWIwQnVm
ZmVyU2l6ZSkgewogICAgICAgICBtX2NvbnRleHQtPm1vdmVFcnJvcnNUb1N5bnRoZXRpY0Vycm9y
TGlzdCgpOwotICAgICAgICBtX2NvbnRleHQtPmJ1ZmZlckRhdGEoR3JhcGhpY3NDb250ZXh0R0w6
OkFSUkFZX0JVRkZFUiwgYnVmZmVyRGF0YVNpemUsIDAsIEdyYXBoaWNzQ29udGV4dEdMOjpEWU5B
TUlDX0RSQVcpOworICAgICAgICBtX2NvbnRleHQtPmJ1ZmZlckRhdGEoR3JhcGhpY3NDb250ZXh0
R0w6OkFSUkFZX0JVRkZFUiwgYnVmZmVyRGF0YVNpemUsIEdyYXBoaWNzQ29udGV4dEdMOjpEWU5B
TUlDX0RSQVcpOwogICAgICAgICBpZiAobV9jb250ZXh0LT5nZXRFcnJvcigpICE9IEdyYXBoaWNz
Q29udGV4dEdMOjpOT19FUlJPUikgewogICAgICAgICAgICAgLy8gV2Ugd2VyZSB1bmFibGUgdG8g
Y3JlYXRlIGEgYnVmZmVyLgogICAgICAgICAgICAgbV92ZXJ0ZXhBdHRyaWIwVXNlZEJlZm9yZSA9
IGZhbHNlOwpAQCAtNzM2NSw3ICs3Mzc2LDcgQEAgT3B0aW9uYWw8Ym9vbD4gV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6c2ltdWxhdGVWZXJ0ZXhBdHRyaWIwKEdDR0x1aW50IG51bVZlcnQKICAg
ICAgICAgbV92ZXJ0ZXhBdHRyaWIwQnVmZmVyVmFsdWVbMl0gPSBhdHRyaWJWYWx1ZS5mVmFsdWVb
Ml07CiAgICAgICAgIG1fdmVydGV4QXR0cmliMEJ1ZmZlclZhbHVlWzNdID0gYXR0cmliVmFsdWUu
ZlZhbHVlWzNdOwogICAgICAgICBtX2ZvcmNlQXR0cmliMEJ1ZmZlclJlZmlsbCA9IGZhbHNlOwot
ICAgICAgICBtX2NvbnRleHQtPmJ1ZmZlclN1YkRhdGEoR3JhcGhpY3NDb250ZXh0R0w6OkFSUkFZ
X0JVRkZFUiwgMCwgYnVmZmVyRGF0YVNpemUsIGJ1ZmZlckRhdGEuZ2V0KCkpOworICAgICAgICBt
X2NvbnRleHQtPmJ1ZmZlclN1YkRhdGEoR3JhcGhpY3NDb250ZXh0R0w6OkFSUkFZX0JVRkZFUiwg
MCwgbWFrZUdDR0xTcGFuKGJ1ZmZlckRhdGEuZ2V0KCksIGJ1ZmZlckRhdGFTaXplKSk7CiAgICAg
fQogICAgIG1fY29udGV4dC0+dmVydGV4QXR0cmliUG9pbnRlcigwLCA0LCBHcmFwaGljc0NvbnRl
eHRHTDo6RkxPQVQsIDAsIDAsIDApOwogICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oCmluZGV4
IGE3MWQwMzZhYTBkZWE1MmI0NTc5MDlmYmZmZGMzYWRmODBmNTEwY2MuLjAwNzgyOGY3ZmQ1NzNl
YTUwMDU5NDBlZDU2ZTQzOTc1MTU3NDNlNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmgKQEAgLTEwMDUsMTIgKzEw
MDUsMTMgQEAgcHJvdGVjdGVkOgogCiAgICAgLy8gSGVscGVyIGZ1bmN0aW9uIHRvIHZhbGlkYXRl
IGlucHV0IHBhcmFtZXRlcnMgZm9yIHVuaWZvcm0gZnVuY3Rpb25zLgogICAgIGJvb2wgdmFsaWRh
dGVVbmlmb3JtTG9jYXRpb24oY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBjb25zdCBXZWJHTFVu
aWZvcm1Mb2NhdGlvbiopOwotICAgIGJvb2wgdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycyhjb25z
dCBjaGFyKiBmdW5jdGlvbk5hbWUsIGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiwgY29uc3Qg
RmxvYXQzMkxpc3QmLCBHQ0dMc2l6ZWkgcmVxdWlyZWRNaW5TaXplLCBHQ0dMdWludCBzcmNPZmZz
ZXQsIEdDR0x1aW50IHNyY0xlbmd0aCk7Ci0gICAgYm9vbCB2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0
ZXJzKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24q
LCBjb25zdCBJbnQzMkxpc3QmLCBHQ0dMc2l6ZWkgcmVxdWlyZWRNaW5TaXplLCBHQ0dMdWludCBz
cmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCk7Ci0gICAgYm9vbCB2YWxpZGF0ZVVuaWZvcm1Q
YXJhbWV0ZXJzKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgY29uc3QgV2ViR0xVbmlmb3JtTG9j
YXRpb24qLCBjb25zdCBVaW50MzJMaXN0JiwgR0NHTHNpemVpIHJlcXVpcmVkTWluU2l6ZSwgR0NH
THVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpOwotICAgIGJvb2wgdmFsaWRhdGVV
bmlmb3JtUGFyYW1ldGVycyhjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIGNvbnN0IFdlYkdMVW5p
Zm9ybUxvY2F0aW9uKiwgdm9pZCosIEdDR0xzaXplaSwgR0NHTHNpemVpIHJlcXVpcmVkTWluU2l6
ZSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpOwotICAgIGJvb2wgdmFs
aWRhdGVVbmlmb3JtTWF0cml4UGFyYW1ldGVycyhjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIGNv
bnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBG
bG9hdDMyTGlzdCYsIEdDR0xzaXplaSByZXF1aXJlZE1pblNpemUsIEdDR0x1aW50IHNyY09mZnNl
dCwgR0NHTHVpbnQgc3JjTGVuZ3RoKTsKLSAgICBib29sIHZhbGlkYXRlVW5pZm9ybU1hdHJpeFBh
cmFtZXRlcnMoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBjb25zdCBXZWJHTFVuaWZvcm1Mb2Nh
dGlvbiosIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3Qgdm9pZCosIEdDR0xzaXplaSwgR0NH
THNpemVpIHJlcXVpcmVkTWluU2l6ZSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNM
ZW5ndGgpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFR5cGVkTGlzdFR5cGU+
CisgICAgT3B0aW9uYWw8R0NHTFNwYW48Y29uc3QgVD4+IHZhbGlkYXRlVW5pZm9ybVBhcmFtZXRl
cnMoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiog
bG9jYXRpb24sIGNvbnN0IFR5cGVkTGlzdDxUeXBlZExpc3RUeXBlLCBUPiYgdmFsdWVzLCBHQ0dM
c2l6ZWkgcmVxdWlyZWRNaW5TaXplLCBHQ0dMdWludCBzcmNPZmZzZXQgPSAwLCBHQ0dMdWludCBz
cmNMZW5ndGggPSAwKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHZhbGlkYXRlVW5pZm9ybU1hdHJp
eFBhcmFtZXRlcnMoZnVuY3Rpb25OYW1lLCBsb2NhdGlvbiwgZmFsc2UsIHZhbHVlcywgcmVxdWly
ZWRNaW5TaXplLCBzcmNPZmZzZXQsIHNyY0xlbmd0aCk7CisgICAgfQorICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFQsIHR5cGVuYW1lIFR5cGVkTGlzdFR5cGU+CisgICAgT3B0aW9uYWw8R0NHTFNwYW48
Y29uc3QgVD4+IHZhbGlkYXRlVW5pZm9ybU1hdHJpeFBhcmFtZXRlcnMoY29uc3QgY2hhciogZnVu
Y3Rpb25OYW1lLCBjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiosIEdDR0xib29sZWFuIHRyYW5z
cG9zZSwgY29uc3QgVHlwZWRMaXN0PFR5cGVkTGlzdFR5cGUsIFQ+JiwgR0NHTHNpemVpIHJlcXVp
cmVkTWluU2l6ZSwgR0NHTHVpbnQgc3JjT2Zmc2V0ID0gMCwgR0NHTHVpbnQgc3JjTGVuZ3RoID0g
MCk7CiAKICAgICAvLyBIZWxwZXIgZnVuY3Rpb24gdG8gdmFsaWRhdGUgcGFyYW1ldGVycyBmb3Ig
YnVmZmVyRGF0YS4KICAgICAvLyBSZXR1cm4gdGhlIGN1cnJlbnQgYm91bmQgYnVmZmVyIHRvIHRh
cmdldCwgb3IgMCBpZiBwYXJhbWV0ZXJzIGFyZSBpbnZhbGlkLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRXh0ZW5zaW9uc0dMLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNpb25zR0wuaAppbmRleCBiYTg2NWIzMzA4ZTZjOTQ1
ODIyMTIyMzc3OTZkNmZkNTc3NDg0N2Y4Li44ZjY4NDA2MWZhNmRkYjc2M2E3NWI0OWYzODJlNTk1
NTZkOTkyZmRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9F
eHRlbnNpb25zR0wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRl
bnNpb25zR0wuaApAQCAtMjk4LDcgKzI5OCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQg
cG9wR3JvdXBNYXJrZXJFWFQodm9pZCkgPSAwOwogCiAgICAgLy8gR0xfQVJCX2RyYXdfYnVmZmVy
cyAvIEdMX0VYVF9kcmF3X2J1ZmZlcnMKLSAgICB2aXJ0dWFsIHZvaWQgZHJhd0J1ZmZlcnNFWFQo
R0NHTHNpemVpIG4sIGNvbnN0IEdDR0xlbnVtKiBidWZzKSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IGRyYXdCdWZmZXJzRVhUKEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVtPiBidWZzKSA9IDA7CiAKICAg
ICAvLyBHTF9BTkdMRV9pbnN0YW5jZWRfYXJyYXlzCiAgICAgdmlydHVhbCB2b2lkIGRyYXdBcnJh
eXNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHNpemVpIGNvdW50
LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSA9IDA7CkBAIC0zMDcsMTcgKzMwNywxNyBAQCBwdWJsaWM6
CiAKICAgICAvLyBHTF9BTkdMRV9yb2J1c3RfY2xpZW50X21lbW9yeQogICAgIHZpcnR1YWwgdm9p
ZCByZWFkUGl4ZWxzUm9idXN0QU5HTEUoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3
aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xzaXplaSogY29sdW1ucywg
R0NHTHNpemVpKiByb3dzLCBHQ0dMdm9pZCogcGl4ZWxzKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lk
IHRleEltYWdlMkRSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdD
R0xpbnQgaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwg
R0NHTGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIGNvbnN0IEdDR0x2b2lkKiBwaXhlbHMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
dGV4SW1hZ2UyRFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NH
TGludCBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBH
Q0dMaW50IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bhbjxj
b25zdCBHQ0dMdm9pZD4gcGl4ZWxzKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHRleFBhcmFtZXRl
cmZ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIGNvbnN0IEdDR0xmbG9hdCogcGFyYW1zKSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IHRleFBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFt
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQqIHBhcmFtcykgPSAwOwotICAgIHZp
cnR1YWwgdm9pZCB0ZXhTdWJJbWFnZTJEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
aW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdp
ZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdD
R0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMdm9pZCogcGl4ZWxzKSA9IDA7Ci0gICAgdmlydHVh
bCB2b2lkIGNvbXByZXNzZWRUZXhJbWFnZTJEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBH
Q0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NH
THNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0x2b2lkKiBkYXRhKSA9IDA7Ci0gICAgdmlydHVhbCB2
b2lkIGNvbXByZXNzZWRUZXhTdWJJbWFnZTJEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTHNpemVp
IHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFn
ZVNpemUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMdm9pZCogZGF0YSkgPSAwOwotICAg
IHZpcnR1YWwgdm9pZCBjb21wcmVzc2VkVGV4SW1hZ2UzRFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRh
cmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3
aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMaW50IGJvcmRlciwg
R0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0x2b2lkKiBk
YXRhKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGNvbXByZXNzZWRUZXhTdWJJbWFnZTNEUm9idXN0
QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdD
R0xpbnQgeW9mZnNldCwgR0NHTGludCB6b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXpl
aSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMc2l6ZWkgaW1h
Z2VTaXplLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTHZvaWQqIGRhdGEpID0gMDsKLQot
ICAgIHZpcnR1YWwgdm9pZCB0ZXhJbWFnZTNEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMaW50IGxldmVsLCBHQ0dMaW50IGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdD
R0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGludCBib3JkZXIsIEdDR0xlbnVt
IGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0x2b2lk
KiBwaXhlbHMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdGV4U3ViSW1hZ2UzRFJvYnVzdEFOR0xF
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50
IHlvZmZzZXQsIEdDR0xpbnQgem9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVp
Z2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NH
THNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0x2b2lkKiBwaXhlbHMpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgdGV4U3ViSW1hZ2UyRFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBs
ZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwg
R0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bh
bjxjb25zdCBHQ0dMdm9pZD4gcGl4ZWxzKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNvbXByZXNz
ZWRUZXhJbWFnZTJEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBH
Q0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0
LCBHQ0dMaW50IGJvcmRlciwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTFNwYW48Y29uc3QgR0NH
THZvaWQ+IGRhdGEpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY29tcHJlc3NlZFRleFN1YkltYWdl
MkRSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9m
ZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQs
IEdDR0xlbnVtIGZvcm1hdCwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTFNwYW48Y29uc3QgR0NH
THZvaWQ+IGRhdGEpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY29tcHJlc3NlZFRleEltYWdlM0RS
b2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVy
bmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBk
ZXB0aCwgR0NHTGludCBib3JkZXIsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xTcGFuPGNvbnN0
IEdDR0x2b2lkPiBkYXRhKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNvbXByZXNzZWRUZXhTdWJJ
bWFnZTNEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50
IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTGludCB6b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lk
dGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGVudW0gZm9ybWF0LCBH
Q0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gZGF0YSkgPSAwOwor
CisgICAgdmlydHVhbCB2b2lkIHRleEltYWdlM0RSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQs
IEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwg
R0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMaW50IGJvcmRlciwgR0NHTGVu
dW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gcGl4ZWxz
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHRleFN1YkltYWdlM0RSb2J1c3RBTkdMRShHQ0dMZW51
bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0
LCBHQ0dMaW50IHpvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NH
THNpemVpIGRlcHRoLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPGNv
bnN0IEdDR0x2b2lkPiBwaXhlbHMpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0UXVlcnlpdlJv
YnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZT
aXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIGdldFF1ZXJ5T2JqZWN0dWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVt
IHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1aW50KiBw
YXJhbXMpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0QnVmZmVyUG9pbnRlcnZSb2J1c3RBTkdM
RShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NH
THNpemVpKiBsZW5ndGgsIEdDR0x2b2lkKiogcGFyYW1zKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaAppbmRleCAwYTcx
NTQwY2U4MDIwZmQ5ZjU4MTY4NjAzZjY3NjliOTQ0NTIyNDE1Li44ZWIyY2VmYzczNzhkNDUwNzhk
MTkwYTVmMTEzZmI4MjNmMWRiOTZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmgKQEAgLTM3Myw3ICszNzMsNyBAQCBwdWJs
aWM6CiAgICAgICAgIFVOUEFDS19DT0xPUlNQQUNFX0NPTlZFUlNJT05fV0VCR0wgPSAweDkyNDMs
CiAgICAgICAgIEJST1dTRVJfREVGQVVMVF9XRUJHTCA9IDB4OTI0NCwKICAgICAgICAgVkVSVEVY
X0FUVFJJQl9BUlJBWV9ESVZJU09SX0FOR0xFID0gMHg4OEZFLAotICAgICAgICAKKwogICAgICAg
ICAvLyBXZWJHTDIgY29uc3RhbnRzCiAgICAgICAgIFJFQURfQlVGRkVSID0gMHgwQzAyLAogICAg
ICAgICBVTlBBQ0tfUk9XX0xFTkdUSCA9IDB4MENGMiwKQEAgLTEwNjMsNDkgKzEwNjMsNDkgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB0ZXhQYXJhbWV0ZXJpKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGVudW0gcG5hbWUsIEdDR0xpbnQgcGFyYW0pID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCB1
bmlmb3JtMWYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGZsb2F0IHgpID0gMDsKLSAgICB2aXJ0dWFs
IHZvaWQgdW5pZm9ybTFmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWksIGNvbnN0IEdDR0xm
bG9hdCogdikgPSAwOworICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtMWZ2KEdDR0xpbnQgbG9jYXRp
b24sIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gdikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB1
bmlmb3JtMWkoR0NHTGludCBsb2NhdGlvbiwgR0NHTGludCB4KSA9IDA7Ci0gICAgdmlydHVhbCB2
b2lkIHVuaWZvcm0xaXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpLCBjb25zdCBHQ0dMaW50
KiB2KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVuaWZvcm0xaXYoR0NHTGludCBsb2NhdGlvbiwg
R0NHTFNwYW48Y29uc3QgR0NHTGludD4gdikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB1bmlmb3Jt
MmYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGZsb2F0IHgsIEdDR0xmbG9hdCB5KSA9IDA7Ci0gICAg
dmlydHVhbCB2b2lkIHVuaWZvcm0yZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpLCBjb25z
dCBHQ0dMZmxvYXQqIHYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybTJmdihHQ0dMaW50
IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IHYpID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgdW5pZm9ybTJpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xpbnQgeCwgR0NHTGludCB5KSA9
IDA7Ci0gICAgdmlydHVhbCB2b2lkIHVuaWZvcm0yaXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTHNp
emVpLCBjb25zdCBHQ0dMaW50KiB2KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVuaWZvcm0yaXYo
R0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gdikgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCB1bmlmb3JtM2YoR0NHTGludCBsb2NhdGlvbiwgR0NHTGZsb2F0IHgsIEdDR0xm
bG9hdCB5LCBHQ0dMZmxvYXQgeikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtM2Z2KEdD
R0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSwgY29uc3QgR0NHTGZsb2F0KiB2KSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIHVuaWZvcm0zZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3Qg
R0NHTGZsb2F0PiB2KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHVuaWZvcm0zaShHQ0dMaW50IGxv
Y2F0aW9uLCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTGludCB6KSA9IDA7Ci0gICAgdmlydHVh
bCB2b2lkIHVuaWZvcm0zaXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpLCBjb25zdCBHQ0dM
aW50KiB2KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVuaWZvcm0zaXYoR0NHTGludCBsb2NhdGlv
biwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gdikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB1bmlm
b3JtNGYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGZsb2F0IHgsIEdDR0xmbG9hdCB5LCBHQ0dMZmxv
YXQgeiwgR0NHTGZsb2F0IHcpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybTRmdihHQ0dM
aW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWksIGNvbnN0IEdDR0xmbG9hdCogdikgPSAwOworICAgIHZp
cnR1YWwgdm9pZCB1bmlmb3JtNGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdD
R0xmbG9hdD4gdikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtNGkoR0NHTGludCBsb2Nh
dGlvbiwgR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xpbnQgeiwgR0NHTGludCB3KSA9IDA7Ci0g
ICAgdmlydHVhbCB2b2lkIHVuaWZvcm00aXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpLCBj
b25zdCBHQ0dMaW50KiB2KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHVuaWZvcm1NYXRyaXgyZnYo
R0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0
IEdDR0xmbG9hdCogdmFsdWUpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybU1hdHJpeDNm
dihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWksIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29u
c3QgR0NHTGZsb2F0KiB2YWx1ZSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtTWF0cml4
NGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBj
b25zdCBHQ0dMZmxvYXQqIHZhbHVlKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVuaWZvcm00aXYo
R0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gdikgPSAwOworICAgIHZp
cnR1YWwgdm9pZCB1bmlmb3JtTWF0cml4MmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFu
IHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiB2YWx1ZSkgPSAwOworICAgIHZp
cnR1YWwgdm9pZCB1bmlmb3JtTWF0cml4M2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFu
IHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiB2YWx1ZSkgPSAwOworICAgIHZp
cnR1YWwgdm9pZCB1bmlmb3JtTWF0cml4NGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFu
IHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiB2YWx1ZSkgPSAwOwogCiAgICAg
dmlydHVhbCB2b2lkIHVzZVByb2dyYW0oUGxhdGZvcm1HTE9iamVjdCkgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCB2YWxpZGF0ZVByb2dyYW0oUGxhdGZvcm1HTE9iamVjdCkgPSAwOwogCiAgICAgdmly
dHVhbCB2b2lkIHZlcnRleEF0dHJpYjFmKEdDR0x1aW50IGluZGV4LCBHQ0dMZmxvYXQgeCkgPSAw
OwotICAgIHZpcnR1YWwgdm9pZCB2ZXJ0ZXhBdHRyaWIxZnYoR0NHTHVpbnQgaW5kZXgsIGNvbnN0
IEdDR0xmbG9hdCogdmFsdWVzKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHZlcnRleEF0dHJpYjFm
dihHQ0dMdWludCBpbmRleCwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0LCAxPiB2YWx1ZXMpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgdmVydGV4QXR0cmliMmYoR0NHTHVpbnQgaW5kZXgsIEdDR0xm
bG9hdCB4LCBHQ0dMZmxvYXQgeSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB2ZXJ0ZXhBdHRyaWIy
ZnYoR0NHTHVpbnQgaW5kZXgsIGNvbnN0IEdDR0xmbG9hdCogdmFsdWVzKSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIHZlcnRleEF0dHJpYjJmdihHQ0dMdWludCBpbmRleCwgR0NHTFNwYW48Y29uc3Qg
R0NHTGZsb2F0LCAyPiB2YWx1ZXMpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdmVydGV4QXR0cmli
M2YoR0NHTHVpbnQgaW5kZXgsIEdDR0xmbG9hdCB4LCBHQ0dMZmxvYXQgeSwgR0NHTGZsb2F0IHop
ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdmVydGV4QXR0cmliM2Z2KEdDR0x1aW50IGluZGV4LCBj
b25zdCBHQ0dMZmxvYXQqIHZhbHVlcykgPSAwOworICAgIHZpcnR1YWwgdm9pZCB2ZXJ0ZXhBdHRy
aWIzZnYoR0NHTHVpbnQgaW5kZXgsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdCwgMz4gdmFsdWVz
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHZlcnRleEF0dHJpYjRmKEdDR0x1aW50IGluZGV4LCBH
Q0dMZmxvYXQgeCwgR0NHTGZsb2F0IHksIEdDR0xmbG9hdCB6LCBHQ0dMZmxvYXQgdykgPSAwOwot
ICAgIHZpcnR1YWwgdm9pZCB2ZXJ0ZXhBdHRyaWI0ZnYoR0NHTHVpbnQgaW5kZXgsIGNvbnN0IEdD
R0xmbG9hdCogdmFsdWVzKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHZlcnRleEF0dHJpYjRmdihH
Q0dMdWludCBpbmRleCwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0LCA0PiB2YWx1ZXMpID0gMDsK
IAogICAgIHZpcnR1YWwgdm9pZCB2ZXJ0ZXhBdHRyaWJQb2ludGVyKEdDR0x1aW50IGluZGV4LCBH
Q0dMaW50IHNpemUsIEdDR0xlbnVtIHR5cGUsIEdDR0xib29sZWFuIG5vcm1hbGl6ZWQsIEdDR0xz
aXplaSBzdHJpZGUsIEdDR0xpbnRwdHIgb2Zmc2V0KSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQg
dmlld3BvcnQoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVp
IGhlaWdodCkgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIGJ1ZmZlckRhdGEoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMc2l6ZWlwdHIsIEdDR0xlbnVtIHVzYWdlKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lk
IGJ1ZmZlckRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWlwdHIsIGNvbnN0IEdDR0x2b2lk
KiBkYXRhLCBHQ0dMZW51bSB1c2FnZSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBidWZmZXJTdWJE
YXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludHB0ciBvZmZzZXQsIEdDR0xzaXplaXB0ciwgY29u
c3QgR0NHTHZvaWQqIGRhdGEpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgYnVmZmVyRGF0YShHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRhLCBHQ0dMZW51bSB1c2Fn
ZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBidWZmZXJTdWJEYXRhKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGludHB0ciBvZmZzZXQsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRhKSA9IDA7CiAK
ICAgICB2aXJ0dWFsIHZvaWQgcmVhZFBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNp
emVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5
cGUsIEdDR0x2b2lkKiBkYXRhKSA9IDA7CiAKLSAgICB2aXJ0dWFsIGJvb2wgdGV4SW1hZ2UyRChH
Q0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBH
Q0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51
bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIGNvbnN0IEdDR0x2b2lkKiBwaXhlbHMpID0gMDsKLSAg
ICB2aXJ0dWFsIHZvaWQgdGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2
ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdD
R0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgY29uc3QgR0NH
THZvaWQqIHBpeGVscykgPSAwOworICAgIHZpcnR1YWwgYm9vbCB0ZXhJbWFnZTJEKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXpl
aSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1h
dCwgR0NHTGVudW0gdHlwZSwgIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBwaXhlbHMpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgdGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQg
bGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgs
IEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTFNw
YW48Y29uc3QgR0NHTHZvaWQ+IHBpeGVscykgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIGRyYXdB
cnJheXNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHNpemVpIGNv
dW50LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRyYXdFbGVt
ZW50c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5
cGUsIEdDR0xpbnRwdHIgb2Zmc2V0LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSA9IDA7CkBAIC0xMTI1
LDggKzExMjUsOCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgYmxpdEZyYW1lYnVmZmVy
KEdDR0xpbnQgc3JjWDAsIEdDR0xpbnQgc3JjWTAsIEdDR0xpbnQgc3JjWDEsIEdDR0xpbnQgc3Jj
WTEsIEdDR0xpbnQgZHN0WDAsIEdDR0xpbnQgZHN0WTAsIEdDR0xpbnQgZHN0WDEsIEdDR0xpbnQg
ZHN0WTEsIEdDR0xiaXRmaWVsZCBtYXNrLCBHQ0dMZW51bSBmaWx0ZXIpID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgZnJhbWVidWZmZXJUZXh0dXJlTGF5ZXIoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51
bSBhdHRhY2htZW50LCBQbGF0Zm9ybUdMT2JqZWN0IHRleHR1cmUsIEdDR0xpbnQgbGV2ZWwsIEdD
R0xpbnQgbGF5ZXIpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZUZyYW1lYnVmZmVy
KEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpIG51bUF0dGFjaG1lbnRzLCBjb25zdCBHQ0dMZW51
bSogYXR0YWNobWVudHMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZVN1YkZyYW1l
YnVmZmVyKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpIG51bUF0dGFjaG1lbnRzLCBjb25zdCBH
Q0dMZW51bSogYXR0YWNobWVudHMsIEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lk
dGgsIEdDR0xzaXplaSBoZWlnaHQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZUZy
YW1lYnVmZmVyKEdDR0xlbnVtIHRhcmdldCwgR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+IGF0dGFj
aG1lbnRzKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGVTdWJGcmFtZWJ1ZmZlcihH
Q0dMZW51bSB0YXJnZXQsIEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVtPiBhdHRhY2htZW50cywgR0NH
TGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCByZWFkQnVmZmVyKEdDR0xlbnVtIHNyYykgPSAwOwogCiAgICAg
Ly8gZ2V0SW50ZXJuYWxGb3JtYXRQYXJhbWV0ZXIKQEAgLTExNDgsMjggKzExNDgsMjggQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtMnVpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0x1
aW50IHYwLCBHQ0dMdWludCB2MSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtM3VpKEdD
R0xpbnQgbG9jYXRpb24sIEdDR0x1aW50IHYwLCBHQ0dMdWludCB2MSwgR0NHTHVpbnQgdjIpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybTR1aShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMdWlu
dCB2MCwgR0NHTHVpbnQgdjEsIEdDR0x1aW50IHYyLCBHQ0dMdWludCB2MykgPSAwOwotICAgIHZp
cnR1YWwgdm9pZCB1bmlmb3JtMXVpdihHQ0dMaW50IGxvY2F0aW9uLCBjb25zdCBHQ0dMdWludCog
ZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpID0gMDsKLSAgICB2
aXJ0dWFsIHZvaWQgdW5pZm9ybTJ1aXYoR0NHTGludCBsb2NhdGlvbiwgY29uc3QgR0NHTHVpbnQq
IGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKSA9IDA7Ci0gICAg
dmlydHVhbCB2b2lkIHVuaWZvcm0zdWl2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0x1aW50
KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkgPSAwOwotICAg
IHZpcnR1YWwgdm9pZCB1bmlmb3JtNHVpdihHQ0dMaW50IGxvY2F0aW9uLCBjb25zdCBHQ0dMdWlu
dCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpID0gMDsKLSAg
ICB2aXJ0dWFsIHZvaWQgdW5pZm9ybU1hdHJpeDJ4M2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xi
b29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZz
ZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtTWF0
cml4M3gyZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBH
Q0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKSA9
IDA7Ci0gICAgdmlydHVhbCB2b2lkIHVuaWZvcm1NYXRyaXgyeDRmdihHQ0dMaW50IGxvY2F0aW9u
LCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQg
c3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdW5p
Zm9ybU1hdHJpeDR4MmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwg
Y29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xl
bmd0aCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtTWF0cml4M3g0ZnYoR0NHTGludCBs
b2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdD
R0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKSA9IDA7Ci0gICAgdmlydHVhbCB2
b2lkIHVuaWZvcm1NYXRyaXg0eDNmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFu
c3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWlu
dCBzcmNMZW5ndGgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybTF1aXYoR0NHTGludCBs
b2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTHVpbnQ+IGRhdGEpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgdW5pZm9ybTJ1aXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTHVp
bnQ+IGRhdGEpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybTN1aXYoR0NHTGludCBsb2Nh
dGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTHVpbnQ+IGRhdGEpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgdW5pZm9ybTR1aXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTHVpbnQ+
IGRhdGEpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybU1hdHJpeDJ4M2Z2KEdDR0xpbnQg
bG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0
PiBkYXRhKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVuaWZvcm1NYXRyaXgzeDJmdihHQ0dMaW50
IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9h
dD4gZGF0YSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtTWF0cml4Mng0ZnYoR0NHTGlu
dCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxv
YXQ+IGRhdGEpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybU1hdHJpeDR4MmZ2KEdDR0xp
bnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZs
b2F0PiBkYXRhKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVuaWZvcm1NYXRyaXgzeDRmdihHQ0dM
aW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xm
bG9hdD4gZGF0YSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtTWF0cml4NHgzZnYoR0NH
TGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dM
ZmxvYXQ+IGRhdGEpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdmVydGV4QXR0cmliSTRpKEdDR0x1
aW50IGluZGV4LCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTGludCB6LCBHQ0dMaW50IHcpID0g
MDsKLSAgICB2aXJ0dWFsIHZvaWQgdmVydGV4QXR0cmliSTRpdihHQ0dMdWludCBpbmRleCwgY29u
c3QgR0NHTGludCogdmFsdWVzKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHZlcnRleEF0dHJpYkk0
aXYoR0NHTHVpbnQgaW5kZXgsIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQsIDQ+IHZhbHVlcykgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCB2ZXJ0ZXhBdHRyaWJJNHVpKEdDR0x1aW50IGluZGV4LCBHQ0dM
dWludCB4LCBHQ0dMdWludCB5LCBHQ0dMdWludCB6LCBHQ0dMdWludCB3KSA9IDA7Ci0gICAgdmly
dHVhbCB2b2lkIHZlcnRleEF0dHJpYkk0dWl2KEdDR0x1aW50IGluZGV4LCBjb25zdCBHQ0dMdWlu
dCogdmFsdWVzKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHZlcnRleEF0dHJpYkk0dWl2KEdDR0x1
aW50IGluZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdWludCwgND4gdmFsdWVzKSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIHZlcnRleEF0dHJpYklQb2ludGVyKEdDR0x1aW50IGluZGV4LCBHQ0dMaW50
IHNpemUsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBzdHJpZGUsIEdDR0xpbnRwdHIgb2Zmc2V0
KSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgZHJhd1JhbmdlRWxlbWVudHMoR0NHTGVudW0gbW9k
ZSwgR0NHTHVpbnQgc3RhcnQsIEdDR0x1aW50IGVuZCwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51
bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCkgPSAwOwogCi0gICAgdmlydHVhbCB2b2lkIGRyYXdC
dWZmZXJzKEdDR0xzaXplaSBuLCBjb25zdCBHQ0dMZW51bSogYnVmcykgPSAwOwotICAgIHZpcnR1
YWwgdm9pZCBjbGVhckJ1ZmZlcml2KEdDR0xlbnVtIGJ1ZmZlciwgR0NHTGludCBkcmF3YnVmZmVy
LCBjb25zdCBHQ0dMaW50KiB2YWx1ZXMsIEdDR0x1aW50IHNyY09mZnNldCkgPSAwOwotICAgIHZp
cnR1YWwgdm9pZCBjbGVhckJ1ZmZlcnVpdihHQ0dMZW51bSBidWZmZXIsIEdDR0xpbnQgZHJhd2J1
ZmZlciwgY29uc3QgR0NHTHVpbnQqIHZhbHVlcywgR0NHTHVpbnQgc3JjT2Zmc2V0KSA9IDA7Ci0g
ICAgdmlydHVhbCB2b2lkIGNsZWFyQnVmZmVyZnYoR0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50IGRy
YXdidWZmZXIsIGNvbnN0IEdDR0xmbG9hdCogdmFsdWVzLCBHQ0dMdWludCBzcmNPZmZzZXQpID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd0J1ZmZlcnMoR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+
IGJ1ZnMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY2xlYXJCdWZmZXJpdihHQ0dMZW51bSBidWZm
ZXIsIEdDR0xpbnQgZHJhd2J1ZmZlciwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gdmFsdWVzKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIGNsZWFyQnVmZmVydWl2KEdDR0xlbnVtIGJ1ZmZlciwgR0NH
TGludCBkcmF3YnVmZmVyLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdWludD4gdmFsdWVzKSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIGNsZWFyQnVmZmVyZnYoR0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50IGRy
YXdidWZmZXIsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gdmFsdWVzKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIGNsZWFyQnVmZmVyZmkoR0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50IGRyYXdidWZm
ZXIsIEdDR0xmbG9hdCBkZXB0aCwgR0NHTGludCBzdGVuY2lsKSA9IDA7CiAKICAgICB2aXJ0dWFs
IFBsYXRmb3JtR0xPYmplY3QgY3JlYXRlUXVlcnkoKSA9IDA7CkBAIC0xMjIxLDIwICsxMjIxLDYg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgU3RyaW5nIGdldEFjdGl2ZVVuaWZvcm1CbG9ja05hbWUo
UGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMdWludCB1bmlmb3JtQmxvY2tJbmRleCkgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtQmxvY2tCaW5kaW5nKFBsYXRmb3JtR0xPYmplY3Qg
cHJvZ3JhbSwgR0NHTHVpbnQgdW5pZm9ybUJsb2NrSW5kZXgsIEdDR0x1aW50IHVuaWZvcm1CbG9j
a0JpbmRpbmcpID0gMDsKIAotICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtMWZ2KEdDR0xpbnQgbG9j
YXRpb24sIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWlu
dCBzcmNMZW5ndGgpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybTJmdihHQ0dMaW50IGxv
Y2F0aW9uLCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVp
bnQgc3JjTGVuZ3RoKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHVuaWZvcm0zZnYoR0NHTGludCBs
b2NhdGlvbiwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1
aW50IHNyY0xlbmd0aCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtNGZ2KEdDR0xpbnQg
bG9jYXRpb24sIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dM
dWludCBzcmNMZW5ndGgpID0gMDsKLQotICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtMWl2KEdDR0xp
bnQgbG9jYXRpb24sIGNvbnN0IEdDR0xpbnQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NH
THVpbnQgc3JjTGVuZ3RoKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHVuaWZvcm0yaXYoR0NHTGlu
dCBsb2NhdGlvbiwgY29uc3QgR0NHTGludCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dM
dWludCBzcmNMZW5ndGgpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybTNpdihHQ0dMaW50
IGxvY2F0aW9uLCBjb25zdCBHQ0dMaW50KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1
aW50IHNyY0xlbmd0aCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtNGl2KEdDR0xpbnQg
bG9jYXRpb24sIGNvbnN0IEdDR0xpbnQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVp
bnQgc3JjTGVuZ3RoKSA9IDA7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybU1hdHJpeDJmdihH
Q0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCog
ZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpID0gMDsKLSAgICB2
aXJ0dWFsIHZvaWQgdW5pZm9ybU1hdHJpeDNmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVh
biB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBH
Q0dMdWludCBzcmNMZW5ndGgpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybU1hdHJpeDRm
dihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9h
dCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpID0gMDsKLQog
ICAgIHZpcnR1YWwgdm9pZCBnZXRBY3RpdmVVbmlmb3JtQmxvY2tpdihHQ0dMdWludCBwcm9ncmFt
LCBHQ0dMdWludCB1bmlmb3JtQmxvY2tJbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdD
R0xpbnQ+IHBhcmFtcykgPSAwOwogCiAgICAgLy8gT3RoZXIgZnVuY3Rpb25zLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlc0dMLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5cGVzR0wuaAppbmRleCBl
N2M2OWIyOGRjZTQ2NTgyNTc1NzczMzMyNWI4ZjQ0ZGYyNzIwN2I5Li4wNjJlNTU2N2EyYzE5ZGI3
YjI4MTkxYmFhODVkMzc3Y2MwMTZjNGUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5cGVzR0wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5cGVzR0wuaApAQCAtNjgsNiArNjgsMTAgQEAgc3RydWN0
IEdDR0xTcGFuIHsKICAgICBHQ0dMU3BhbihUICgmYXJyYXkpW0V4dGVudF0pCiAgICAgICAgIDog
ZGF0YShhcnJheSkKICAgICB7IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPgorICAgIEdDR0xT
cGFuKGNvbnN0IEdDR0xTcGFuPFUsIEV4dGVudD4mIG90aGVyLCBzdGQ6OmVuYWJsZV9pZl90PHN0
ZDo6aXNfY29udmVydGlibGVfdjxVKCopW10sIFQoKilbXT4sIG51bGxwdHJfdD4gPSBudWxscHRy
KQorICAgICAgICA6IGRhdGEob3RoZXIuZGF0YSkKKyAgICB7IH0KICAgICBUJiBvcGVyYXRvcltd
KHNpemVfdCBpKSB7IFJFTEVBU0VfQVNTRVJUKGRhdGEgJiYgaSA8IGJ1ZlNpemUpOyByZXR1cm4g
ZGF0YVtpXTsgfQogICAgIFQmIG9wZXJhdG9yKigpIHsgUkVMRUFTRV9BU1NFUlQoZGF0YSAmJiBi
dWZTaXplKTsgcmV0dXJuICpkYXRhOyB9CiAgICAgVCogZGF0YTsKQEAgLTgwLDExICs4NCwxOCBA
QCBzdHJ1Y3QgR0NHTFNwYW48VCwgc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKT4g
ewogICAgICAgICA6IGRhdGEoYXJyYXkpCiAgICAgICAgICwgYnVmU2l6ZShidWZTaXplXykKICAg
ICB7IH0KLSAgICB0ZW1wbGF0ZTxzaXplX3QgU3o+IEdDR0xTcGFuKFQgKCZhcnJheSlbU3pdKQor
ICAgIHRlbXBsYXRlPHNpemVfdCBTej4KKyAgICBHQ0dMU3BhbihUICgmYXJyYXkpW1N6XSkKICAg
ICAgICAgOiBkYXRhKGFycmF5KQogICAgICAgICAsIGJ1ZlNpemUoU3opCiAgICAgeyB9Ci0gICAg
R0NHTFNwYW4oV1RGOjpWZWN0b3I8VD4mIGFycmF5KQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUs
IHNpemVfdCBVRXh0ZW50PgorICAgIEdDR0xTcGFuKGNvbnN0IEdDR0xTcGFuPFUsIFVFeHRlbnQ+
JiBvdGhlciwgc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2NvbnZlcnRpYmxlX3Y8VSgqKVtdLCBU
KCopW10+LCBudWxscHRyX3Q+ID0gbnVsbHB0cikKKyAgICAgICAgOiBkYXRhKG90aGVyLmRhdGEp
CisgICAgICAgICwgYnVmU2l6ZShvdGhlci5idWZTaXplKQorICAgIHsgfQorICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFUsIHNpemVfdCBpbmxpbmVDYXBhY2l0eT4KKyAgICBHQ0dMU3BhbihXVEY6OlZl
Y3RvcjxVLCBpbmxpbmVDYXBhY2l0eT4mIGFycmF5LCBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNf
Y29udmVydGlibGVfdjxVKCopW10sIFQoKilbXT4sIG51bGxwdHJfdD4gPSBudWxscHRyKQogICAg
ICAgICA6IGRhdGEoYXJyYXkuZGF0YSgpKQogICAgICAgICAsIGJ1ZlNpemUoYXJyYXkuc2l6ZSgp
KQogICAgIHsgfQpAQCAtOTQsNiArMTA1LDU0IEBAIHN0cnVjdCBHQ0dMU3BhbjxULCBzdGQ6Om51
bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpPiB7CiAgICAgY29uc3Qgc2l6ZV90IGJ1ZlNpemU7
CiB9OwogCit0ZW1wbGF0ZTw+CitzdHJ1Y3QgR0NHTFNwYW48R0NHTHZvaWQ+IHsKKyAgICBHQ0dM
U3BhbihHQ0dMdm9pZCogYXJyYXksIHNpemVfdCBidWZTaXplXykKKyAgICAgICAgOiBkYXRhKGFy
cmF5KQorICAgICAgICAsIGJ1ZlNpemUoYnVmU2l6ZV8pCisgICAgeyB9CisgICAgdGVtcGxhdGU8
dHlwZW5hbWUgVSwgc2l6ZV90IFN6PgorICAgIEdDR0xTcGFuKFUgKCZhcnJheSlbU3pdKQorICAg
ICAgICA6IGRhdGEoYXJyYXkpCisgICAgICAgICwgYnVmU2l6ZShTeiAqIHNpemVvZihVKSkKKyAg
ICB7IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVLCBzaXplX3QgVUV4dGVudD4KKyAgICBHQ0dM
U3Bhbihjb25zdCBHQ0dMU3BhbjxVLCBVRXh0ZW50PiYgb3RoZXIpCisgICAgICAgIDogZGF0YShv
dGhlci5kYXRhKQorICAgICAgICAsIGJ1ZlNpemUob3RoZXIuYnVmU2l6ZSAqIHNpemVvZihVKSkK
KyAgICB7IH0KKyAgICBHQ0dMdm9pZCogZGF0YTsKKyAgICBjb25zdCBzaXplX3QgYnVmU2l6ZTsK
K307CisKK3RlbXBsYXRlPD4KK3N0cnVjdCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4geworICAg
IEdDR0xTcGFuKGNvbnN0IEdDR0x2b2lkKiBhcnJheSwgc2l6ZV90IGJ1ZlNpemVfKQorICAgICAg
ICA6IGRhdGEoYXJyYXkpCisgICAgICAgICwgYnVmU2l6ZShidWZTaXplXykKKyAgICB7IH0KKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBVLCBzaXplX3QgU3o+CisgICAgR0NHTFNwYW4oVSAoJmFycmF5
KVtTel0pCisgICAgICAgIDogZGF0YShhcnJheSkKKyAgICAgICAgLCBidWZTaXplKFN6ICogc2l6
ZW9mKFUpKQorICAgIHsgfQorICAgIEdDR0xTcGFuKGNvbnN0IEdDR0xTcGFuPEdDR0x2b2lkPiYg
b3RoZXIpCisgICAgICAgIDogZGF0YShvdGhlci5kYXRhKQorICAgICAgICAsIGJ1ZlNpemUob3Ro
ZXIuYnVmU2l6ZSkKKyAgICB7IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVLCBzaXplX3QgVUV4
dGVudD4KKyAgICBHQ0dMU3Bhbihjb25zdCBHQ0dMU3BhbjxVLCBVRXh0ZW50PiYgb3RoZXIpCisg
ICAgICAgIDogZGF0YShvdGhlci5kYXRhKQorICAgICAgICAsIGJ1ZlNpemUob3RoZXIuYnVmU2l6
ZSAqIHNpemVvZihVKSkKKyAgICB7IH0KKyAgICBHQ0dMU3BhbihpbnRwdHJfdCBvZmZzZXQpCisg
ICAgICAgIDogZGF0YShyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0x2b2lkKj4ob2Zmc2V0KSkK
KyAgICAgICAgLCBidWZTaXplKDApCisgICAgeyB9CisgICAgY29uc3QgR0NHTHZvaWQqIGRhdGE7
CisgICAgY29uc3Qgc2l6ZV90IGJ1ZlNpemU7Cit9OworCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBz
aXplX3QgTj4KIEdDR0xTcGFuKFQgKCYpW05dKSAtPiBHQ0dMU3BhbjxULCBOPjsKIApAQCAtMTA1
LDMgKzE2NCw5IEBAIEdDR0xTcGFuPFQ+IG1ha2VHQ0dMU3BhbihUKiBkYXRhLCBzaXplX3QgY291
bnQpCiB7CiAgICAgcmV0dXJuIEdDR0xTcGFuPFQ+IHsgZGF0YSwgY291bnQgfTsKIH0KKwordGVt
cGxhdGU8c2l6ZV90IEV4dGVudCwgdHlwZW5hbWUgVD4KK0dDR0xTcGFuPFQsIEV4dGVudD4gbWFr
ZUdDR0xTcGFuKFQqIGRhdGEpCit7CisgICAgcmV0dXJuIEdDR0xTcGFuPFQsIEV4dGVudD4geyBk
YXRhIH07Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
bmdsZS9FeHRlbnNpb25zR0xBTkdMRS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5jcHAKaW5kZXggNGQwMjViOTkzNDIyNzc2Yjli
NWY0YWFiYzM5YTBjNzg5MTk0MGE5OS4uMTA3MTNhYzU2ZDBkZWNhZDkxYmM1Y2IxNjc0MWFiMjli
NDVhZTRkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5n
bGUvRXh0ZW5zaW9uc0dMQU5HTEUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmNwcApAQCAtMjI3LDEyICsyMjcsMTIgQEAg
Ym9vbCBFeHRlbnNpb25zR0xBTkdMRTo6c3VwcG9ydHNFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBu
YW1lKQogICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMobmFtZSkgfHwg
bV9yZXF1ZXN0YWJsZUV4dGVuc2lvbnMuY29udGFpbnMobmFtZSk7CiB9CiAKLXZvaWQgRXh0ZW5z
aW9uc0dMQU5HTEU6OmRyYXdCdWZmZXJzRVhUKEdDR0xzaXplaSBuLCBjb25zdCBHQ0dMZW51bSog
YnVmcykKK3ZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmRyYXdCdWZmZXJzRVhUKEdDR0xTcGFuPGNv
bnN0IEdDR0xlbnVtPiBidWZzKQogewogICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1
cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZ2w6OkRyYXdCdWZmZXJzRVhUKG4sIGJ1
ZnMpOworICAgIGdsOjpEcmF3QnVmZmVyc0VYVChidWZzLmJ1ZlNpemUsIGJ1ZnMuZGF0YSk7CiB9
CiAKIHZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmRyYXdBcnJheXNJbnN0YW5jZWQoR0NHTGVudW0g
bW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHNpemVpIGNvdW50LCBHQ0dMc2l6ZWkgcHJpbWNvdW50
KQpAQCAtMjg2LDE0ICsyODYsMTQgQEAgdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6cmVhZFBpeGVs
c1JvYnVzdEFOR0xFKGludCB4LCBpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0cKICAgICBnbDo6
UmVhZFBpeGVsc1JvYnVzdEFOR0xFKHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwg
YnVmU2l6ZSwgbGVuZ3RoLCBjb2x1bW5zLCByb3dzLCBwaXhlbHMpOwogfQogCi12b2lkIEV4dGVu
c2lvbnNHTEFOR0xFOjp0ZXhJbWFnZTJEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBpbnQg
bGV2ZWwsIGludCBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVp
Z2h0LCBpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXpl
aSBidWZTaXplLCBjb25zdCB2b2lkICpwaXhlbHMpCit2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjp0
ZXhJbWFnZTJEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWwsIGludCBpbnRl
cm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBpbnQgYm9yZGVy
LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lk
PiBwaXhlbHMpCiB7CiAgICAgaWYgKCFtX2NvbnRleHQtPm1faXNGb3JXZWJHTDIpCiAgICAgICAg
IGludGVybmFsZm9ybWF0ID0gYWRqdXN0V2ViR0wxVGV4dHVyZUludGVybmFsRm9ybWF0KGludGVy
bmFsZm9ybWF0LCBmb3JtYXQsIHR5cGUpOwogICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4
dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZ2w6OlRleEltYWdlMkRSb2J1c3RB
TkdMRSh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgYm9yZGVy
LCBmb3JtYXQsIHR5cGUsIGJ1ZlNpemUsIHBpeGVscyk7CisgICAgZ2w6OlRleEltYWdlMkRSb2J1
c3RBTkdMRSh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgYm9y
ZGVyLCBmb3JtYXQsIHR5cGUsIHBpeGVscy5idWZTaXplLCBwaXhlbHMuZGF0YSk7CiB9CiAKIHZv
aWQgRXh0ZW5zaW9uc0dMQU5HTEU6OnRleFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xmbG9h
dCAqcGFyYW1zKQpAQCAtMzEyLDY0ICszMTIsNjQgQEAgdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6
dGV4UGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW0K
ICAgICBnbDo6VGV4UGFyYW1ldGVyaXZSb2J1c3RBTkdMRSh0YXJnZXQsIHBuYW1lLCBidWZTaXpl
LCBwYXJhbXMpOwogfQogCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjp0ZXhTdWJJbWFnZTJEUm9i
dXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWwsIGludCB4b2Zmc2V0LCBpbnQgeW9m
ZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQs
IEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCB2b2lkICpwaXhlbHMpCit2
b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjp0ZXhTdWJJbWFnZTJEUm9idXN0QU5HTEUoR0NHTGVudW0g
dGFyZ2V0LCBpbnQgbGV2ZWwsIGludCB4b2Zmc2V0LCBpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdp
ZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdD
R0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBwaXhlbHMpCiB7CiAgICAgaWYgKCFtX2NvbnRleHQtPm1h
a2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBnbDo6VGV4U3ViSW1h
Z2UyRFJvYnVzdEFOR0xFKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBo
ZWlnaHQsIGZvcm1hdCwgdHlwZSwgYnVmU2l6ZSwgcGl4ZWxzKTsKKyAgICBnbDo6VGV4U3ViSW1h
Z2UyRFJvYnVzdEFOR0xFKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBo
ZWlnaHQsIGZvcm1hdCwgdHlwZSwgcGl4ZWxzLmJ1ZlNpemUsIHBpeGVscy5kYXRhKTsKIH0KIAot
dm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Y29tcHJlc3NlZFRleEltYWdlMkRSb2J1c3RBTkdMRShH
Q0dMZW51bSB0YXJnZXQsIGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xz
aXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgaW50IGJvcmRlciwgR0NHTHNpemVpIGltYWdl
U2l6ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IHZvaWQqIGRhdGEpCit2b2lkIEV4dGVuc2lv
bnNHTEFOR0xFOjpjb21wcmVzc2VkVGV4SW1hZ2UyRFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdl
dCwgaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBH
Q0dMc2l6ZWkgaGVpZ2h0LCBpbnQgYm9yZGVyLCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMU3Bh
bjxjb25zdCBHQ0dMdm9pZD4gZGF0YSkKIHsKICAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRl
eHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGdsOjpDb21wcmVzc2VkVGV4SW1h
Z2UyRFJvYnVzdEFOR0xFKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVp
Z2h0LCBib3JkZXIsIGltYWdlU2l6ZSwgYnVmU2l6ZSwgZGF0YSk7CisgICAgZ2w6OkNvbXByZXNz
ZWRUZXhJbWFnZTJEUm9idXN0QU5HTEUodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdp
ZHRoLCBoZWlnaHQsIGJvcmRlciwgaW1hZ2VTaXplLCBkYXRhLmJ1ZlNpemUsIGRhdGEuZGF0YSk7
CiAgICAgbV9jb250ZXh0LT5tX3N0YXRlLnRleHR1cmVTZWVkQ291bnQuYWRkKG1fY29udGV4dC0+
bV9zdGF0ZS5jdXJyZW50Qm91bmRUZXh0dXJlKCkpOwogCiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dM
QU5HTEU6OmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0
LCBpbnQgbGV2ZWwsIGludCB4b2Zmc2V0LCBpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBH
Q0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdD
R0xzaXplaSBidWZTaXplLCBjb25zdCB2b2lkKiBkYXRhKQordm9pZCBFeHRlbnNpb25zR0xBTkdM
RTo6Y29tcHJlc3NlZFRleFN1YkltYWdlMkRSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIGlu
dCBsZXZlbCwgaW50IHhvZmZzZXQsIGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xz
aXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTFNw
YW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEpCiB7CiAgICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250
ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBnbDo6Q29tcHJlc3NlZFRleFN1
YkltYWdlMkRSb2J1c3RBTkdMRSh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0
aCwgaGVpZ2h0LCBmb3JtYXQsIGltYWdlU2l6ZSwgYnVmU2l6ZSwgZGF0YSk7CisgICAgZ2w6OkNv
bXByZXNzZWRUZXhTdWJJbWFnZTJEUm9idXN0QU5HTEUodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwg
eW9mZnNldCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCBpbWFnZVNpemUsIGRhdGEuYnVmU2l6ZSwg
ZGF0YS5kYXRhKTsKICAgICBtX2NvbnRleHQtPm1fc3RhdGUudGV4dHVyZVNlZWRDb3VudC5hZGQo
bV9jb250ZXh0LT5tX3N0YXRlLmN1cnJlbnRCb3VuZFRleHR1cmUoKSk7CiB9CiAKLXZvaWQgRXh0
ZW5zaW9uc0dMQU5HTEU6OmNvbXByZXNzZWRUZXhJbWFnZTNEUm9idXN0QU5HTEUoR0NHTGVudW0g
dGFyZ2V0LCBpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lk
dGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgaW50IGJvcmRlciwgR0NHTHNp
emVpIGltYWdlU2l6ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IHZvaWQqIGRhdGEpCit2b2lk
IEV4dGVuc2lvbnNHTEFOR0xFOjpjb21wcmVzc2VkVGV4SW1hZ2UzRFJvYnVzdEFOR0xFKEdDR0xl
bnVtIHRhcmdldCwgaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVp
IHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIGludCBib3JkZXIsIEdD
R0xzaXplaSBpbWFnZVNpemUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRhKQogewogICAg
IGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgZ2w6OkNvbXByZXNzZWRUZXhJbWFnZTNEUm9idXN0QU5HTEUodGFyZ2V0LCBsZXZlbCwg
aW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBib3JkZXIsIGltYWdlU2l6ZSwg
YnVmU2l6ZSwgZGF0YSk7CisgICAgZ2w6OkNvbXByZXNzZWRUZXhJbWFnZTNEUm9idXN0QU5HTEUo
dGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBib3Jk
ZXIsIGltYWdlU2l6ZSwgZGF0YS5idWZTaXplLCBkYXRhLmRhdGEpOwogfQogCi12b2lkIEV4dGVu
c2lvbnNHTEFOR0xFOjpjb21wcmVzc2VkVGV4U3ViSW1hZ2UzRFJvYnVzdEFOR0xFKEdDR0xlbnVt
IHRhcmdldCwgaW50IGxldmVsLCBpbnQgeG9mZnNldCwgaW50IHlvZmZzZXQsIGludCB6b2Zmc2V0
LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NH
TGVudW0gZm9ybWF0LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29u
c3Qgdm9pZCogZGF0YSkKK3ZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmNvbXByZXNzZWRUZXhTdWJJ
bWFnZTNEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWwsIGludCB4b2Zmc2V0
LCBpbnQgeW9mZnNldCwgaW50IHpvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhl
aWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFnZVNp
emUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRhKQogewogICAgIGlmICghbV9jb250ZXh0
LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZ2w6OkNvbXBy
ZXNzZWRUZXhTdWJJbWFnZTNEUm9idXN0QU5HTEUodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9m
ZnNldCwgem9mZnNldCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGZvcm1hdCwgaW1hZ2VTaXplLCBi
dWZTaXplLCBkYXRhKTsKKyAgICBnbDo6Q29tcHJlc3NlZFRleFN1YkltYWdlM0RSb2J1c3RBTkdM
RSh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB6b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0
LCBkZXB0aCwgZm9ybWF0LCBpbWFnZVNpemUsIGRhdGEuYnVmU2l6ZSwgZGF0YS5kYXRhKTsKIH0K
IAogCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjp0ZXhJbWFnZTNEUm9idXN0QU5HTEUoR0NHTGVu
dW0gdGFyZ2V0LCBpbnQgbGV2ZWwsIGludCBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRo
LCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIGludCBib3JkZXIsIEdDR0xlbnVt
IGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IHZvaWQgKnBp
eGVscykKK3ZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OnRleEltYWdlM0RSb2J1c3RBTkdMRShHQ0dM
ZW51bSB0YXJnZXQsIGludCBsZXZlbCwgaW50IGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lk
dGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgaW50IGJvcmRlciwgR0NHTGVu
dW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gcGl4ZWxz
KQogewogICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgZ2w6OlRleEltYWdlM0RSb2J1c3RBTkdMRSh0YXJnZXQsIGxldmVsLCBp
bnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGJvcmRlciwgZm9ybWF0LCB0eXBl
LCBidWZTaXplLCBwaXhlbHMpOworICAgIGdsOjpUZXhJbWFnZTNEUm9idXN0QU5HTEUodGFyZ2V0
LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBib3JkZXIsIGZv
cm1hdCwgdHlwZSwgcGl4ZWxzLmJ1ZlNpemUsIHBpeGVscy5kYXRhKTsKIH0KIAotdm9pZCBFeHRl
bnNpb25zR0xBTkdMRTo6dGV4U3ViSW1hZ2UzRFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwg
aW50IGxldmVsLCBpbnQgeG9mZnNldCwgaW50IHlvZmZzZXQsIGludCB6b2Zmc2V0LCBHQ0dMc2l6
ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGVudW0gZm9y
bWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3Qgdm9pZCAqcGl4ZWxz
KQordm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6dGV4U3ViSW1hZ2UzRFJvYnVzdEFOR0xFKEdDR0xl
bnVtIHRhcmdldCwgaW50IGxldmVsLCBpbnQgeG9mZnNldCwgaW50IHlvZmZzZXQsIGludCB6b2Zm
c2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwg
R0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4g
cGl4ZWxzKQogewogICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgZ2w6OlRleFN1YkltYWdlM0RSb2J1c3RBTkdMRSh0YXJnZXQs
IGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB6b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwg
Zm9ybWF0LCB0eXBlLCBidWZTaXplLCBwaXhlbHMpOworICAgIGdsOjpUZXhTdWJJbWFnZTNEUm9i
dXN0QU5HTEUodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgem9mZnNldCwgd2lkdGgs
IGhlaWdodCwgZGVwdGgsIGZvcm1hdCwgdHlwZSwgcGl4ZWxzLmJ1ZlNpemUsIHBpeGVscy5kYXRh
KTsKIH0KIAogdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0UXVlcnlpdlJvYnVzdEFOR0xFKEdD
R0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6
ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmgKaW5kZXggNTdi
YjkzYmM4NGMzMzU5MGZiY2Y0YjNmN2ExZWI1YTU1YzU5MjU2Yy4uYWRhZWFmOTEwMWMxNGY3ZGNk
NGY5OTkwODIwZmE5ZWEyNGJjODk0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5oCkBAIC01Miw3ICs1
Miw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGluc2VydEV2ZW50TWFya2VyRVhUKGNvbnN0IFN0cmlu
ZyYpIG92ZXJyaWRlOwogICAgIHZvaWQgcHVzaEdyb3VwTWFya2VyRVhUKGNvbnN0IFN0cmluZyYp
IG92ZXJyaWRlOwogICAgIHZvaWQgcG9wR3JvdXBNYXJrZXJFWFQodm9pZCkgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCBkcmF3QnVmZmVyc0VYVChHQ0dMc2l6ZWksIGNvbnN0IEdDR0xlbnVtKikgb3ZlcnJp
ZGU7CisgICAgdm9pZCBkcmF3QnVmZmVyc0VYVChHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4pIG92
ZXJyaWRlOwogCiAgICAgU3RyaW5nIGdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRShQbGF0
Zm9ybUdMT2JqZWN0KSBvdmVycmlkZTsKIApAQCAtNzQsMTcgKzc0LDE3IEBAIHB1YmxpYzoKIAog
ICAgIC8vIEdMX0FOR0xFX3JvYnVzdF9jbGllbnRfbWVtb3J5CiAgICAgdm9pZCByZWFkUGl4ZWxz
Um9idXN0QU5HTEUoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNp
emVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xzaXplaSAqY29sdW1ucywgR0NHTHNpemVpICpy
b3dzLCB2b2lkICpwaXhlbHMpIG92ZXJyaWRlOwotICAgIHZvaWQgdGV4SW1hZ2UyRFJvYnVzdEFO
R0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCBpbnRlcm5hbGZvcm1h
dCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NH
TGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3Qgdm9p
ZCAqcGl4ZWxzKSBvdmVycmlkZTsKKyAgICB2b2lkIHRleEltYWdlMkRSb2J1c3RBTkdMRShHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgaW50ZXJuYWxmb3JtYXQsIEdDR0xz
aXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xlbnVtIGZv
cm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IHBpeGVscykgb3Zl
cnJpZGU7CiAgICAgdm9pZCB0ZXhQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMZmxvYXQgKnBh
cmFtcykgb3ZlcnJpZGU7CiAgICAgdm9pZCB0ZXhQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dM
aW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgdGV4U3ViSW1hZ2UyRFJvYnVzdEFOR0xF
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50
IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9y
bWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3Qgdm9pZCAqcGl4ZWxz
KSBvdmVycmlkZTsKLSAgICB2b2lkIGNvbXByZXNzZWRUZXhJbWFnZTJEUm9idXN0QU5HTEUoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NH
THNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTHNpemVp
IGltYWdlU2l6ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0x2b2lkKiBkYXRhKSBvdmVy
cmlkZTsKLSAgICB2b2lkIGNvbXByZXNzZWRUZXhTdWJJbWFnZTJEUm9idXN0QU5HTEUoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNl
dCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdD
R0xzaXplaSBpbWFnZVNpemUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMdm9pZCogZGF0
YSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBjb21wcmVzc2VkVGV4SW1hZ2UzRFJvYnVzdEFOR0xFKEdD
R0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdD
R0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMaW50
IGJvcmRlciwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdD
R0x2b2lkKiBkYXRhKSBvdmVycmlkZTsKLSAgICB2b2lkIGNvbXByZXNzZWRUZXhTdWJJbWFnZTNE
Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZz
ZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTGludCB6b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdD
R0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMc2l6
ZWkgaW1hZ2VTaXplLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTHZvaWQqIGRhdGEpIG92
ZXJyaWRlOwotCi0gICAgdm9pZCB0ZXhJbWFnZTNEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgs
IEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGludCBib3JkZXIsIEdDR0xl
bnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IHZvaWQg
KnBpeGVscykgb3ZlcnJpZGU7Ci0gICAgdm9pZCB0ZXhTdWJJbWFnZTNEUm9idXN0QU5HTEUoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9m
ZnNldCwgR0NHTGludCB6b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQs
IEdDR0xzaXplaSBkZXB0aCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgY29uc3Qgdm9pZCAqcGl4ZWxzKSBvdmVycmlkZTsKKyAgICB2b2lkIHRleFN1
YkltYWdlMkRSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xp
bnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBo
ZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48Y29uc3QgR0NH
THZvaWQ+IHBpeGVscykgb3ZlcnJpZGU7CisgICAgdm9pZCBjb21wcmVzc2VkVGV4SW1hZ2UyRFJv
YnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJu
YWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3Jk
ZXIsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRhKSBv
dmVycmlkZTsKKyAgICB2b2lkIGNvbXByZXNzZWRUZXhTdWJJbWFnZTJEUm9idXN0QU5HTEUoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9m
ZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQs
IEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRhKSBvdmVy
cmlkZTsKKyAgICB2b2lkIGNvbXByZXNzZWRUZXhJbWFnZTNEUm9idXN0QU5HTEUoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVp
IHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xpbnQgYm9yZGVy
LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gZGF0YSkgb3Zl
cnJpZGU7CisgICAgdm9pZCBjb21wcmVzc2VkVGV4U3ViSW1hZ2UzRFJvYnVzdEFOR0xFKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZz
ZXQsIEdDR0xpbnQgem9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBH
Q0dMc2l6ZWkgZGVwdGgsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NH
TFNwYW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEpIG92ZXJyaWRlOworCisgICAgdm9pZCB0ZXhJbWFn
ZTNEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IGlu
dGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXpl
aSBkZXB0aCwgR0NHTGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwg
R0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IHBpeGVscykgb3ZlcnJpZGU7CisgICAgdm9pZCB0ZXhT
dWJJbWFnZTNEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dM
aW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTGludCB6b2Zmc2V0LCBHQ0dMc2l6ZWkg
d2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGVudW0gZm9ybWF0
LCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gcGl4ZWxzKSBvdmVycmlk
ZTsKICAgICB2b2lkIGdldFF1ZXJ5aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xl
bnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQg
KnBhcmFtcykgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRRdWVyeU9iamVjdHVpdlJvYnVzdEFOR0xF
KEdDR0x1aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXpl
aSAqbGVuZ3RoLCBHQ0dMdWludCAqcGFyYW1zKSBvdmVycmlkZTsKICAgICB2b2lkIGdldEJ1ZmZl
clBvaW50ZXJ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NH
THNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCB2b2lkICoqcGFyYW1zKSBvdmVycmlk
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dy
YXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAKaW5kZXggZmViMGJlYmVmMzE1ZjBl
MTM4YmE5OWQ2MmViNmNmY2VkNTE5MzY3YS4uNzNmNGM0ZjMwM2FjNTBkN2FmYzg2YTI5MjBhNDYx
NjZkY2E4ZTBiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAKQEAgLTM2Miwx
NCArMzYyLDE5IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFNoYWRlclByZWNp
c2lvbkZvcm1hdChHQ0dMZW51bSBzaGFkZXJUeXBlLCBHQ0dMCiAgICAgZ2w6OkdldFNoYWRlclBy
ZWNpc2lvbkZvcm1hdChzaGFkZXJUeXBlLCBwcmVjaXNpb25UeXBlLCByYW5nZS5kYXRhLCBwcmVj
aXNpb24pOwogfQogCi1ib29sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp0ZXhJbWFnZTJEKEdD
R0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdD
R0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xlbnVt
IGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgY29uc3Qgdm9pZCogcGl4ZWxzKQorYm9vbCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6dGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2
ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBo
ZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdD
R0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBwaXhlbHMpCiB7Ci0gICAgaWYgKHdpZHRoICYmIGhlaWdo
dCAmJiAhcGl4ZWxzKSB7CisgICAgaWYgKHdpZHRoICYmIGhlaWdodCAmJiAhcGl4ZWxzLmRhdGEp
IHsKICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoSU5WQUxJRF9WQUxVRSk7CiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICB9CisgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCi0gICAgdGV4SW1hZ2UyRERpcmVjdCh0YXJnZXQsIGxldmVsLCBp
bnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgYm9yZGVyLCBmb3JtYXQsIHR5cGUsIHBpeGVs
cyk7CisgICAgaWYgKCFtX2lzRm9yV2ViR0wyICYmIG1fZXh0ZW5zaW9ucykKKyAgICAgICAgaW50
ZXJuYWxmb3JtYXQgPSBtX2V4dGVuc2lvbnMtPmFkanVzdFdlYkdMMVRleHR1cmVJbnRlcm5hbEZv
cm1hdChpbnRlcm5hbGZvcm1hdCwgZm9ybWF0LCB0eXBlKTsKKyAgICBnbDo6VGV4SW1hZ2UyRFJv
YnVzdEFOR0xFKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBi
b3JkZXIsIGZvcm1hdCwgdHlwZSwgcGl4ZWxzLmJ1ZlNpemUsIHBpeGVscy5kYXRhKTsKKyAgICBt
X3N0YXRlLnRleHR1cmVTZWVkQ291bnQuYWRkKG1fc3RhdGUuY3VycmVudEJvdW5kVGV4dHVyZSgp
KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtODM1LDIwICs4NDAsMjAgQEAgdm9pZCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6YnVmZmVyRGF0YShHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXpl
aXB0ciBzaXplLCBHQ0cKICAgICBnbDo6QnVmZmVyRGF0YSh0YXJnZXQsIHNpemUsIDAsIHVzYWdl
KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6YnVmZmVyRGF0YShHQ0dMZW51
bSB0YXJnZXQsIEdDR0xzaXplaXB0ciBzaXplLCBjb25zdCB2b2lkKiBkYXRhLCBHQ0dMZW51bSB1
c2FnZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmJ1ZmZlckRhdGEoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gZGF0YSwgR0NHTGVudW0gdXNhZ2UpCiB7
CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
Z2w6OkJ1ZmZlckRhdGEodGFyZ2V0LCBzaXplLCBkYXRhLCB1c2FnZSk7CisgICAgZ2w6OkJ1ZmZl
ckRhdGEodGFyZ2V0LCBkYXRhLmJ1ZlNpemUsIGRhdGEuZGF0YSwgdXNhZ2UpOwogfQogCi12b2lk
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpidWZmZXJTdWJEYXRhKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGludHB0ciBvZmZzZXQsIEdDR0xzaXplaXB0ciBzaXplLCBjb25zdCB2b2lkKiBkYXRhKQor
dm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6YnVmZmVyU3ViRGF0YShHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xpbnRwdHIgb2Zmc2V0LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gZGF0YSkKIHsK
ICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBn
bDo6QnVmZmVyU3ViRGF0YSh0YXJnZXQsIG9mZnNldCwgc2l6ZSwgZGF0YSk7CisgICAgZ2w6OkJ1
ZmZlclN1YkRhdGEodGFyZ2V0LCBvZmZzZXQsIGRhdGEuYnVmU2l6ZSwgZGF0YS5kYXRhKTsKIH0K
IAogdm9pZCogR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Om1hcEJ1ZmZlclJhbmdlKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGludHB0ciBvZmZzZXQsIEdDR0xzaXplaXB0ciBsZW5ndGgsIEdDR0xiaXRm
aWVsZCBhY2Nlc3MpCkBAIC0xNTAxLDEyICsxNTA2LDEyIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OnVuaWZvcm0xZihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMZmxvYXQgdjApCiAgICAg
Z2w6OlVuaWZvcm0xZihsb2NhdGlvbiwgdjApOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjp1bmlmb3JtMWZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBzaXplLCBjb25z
dCBHQ0dMZmxvYXQqIGFycmF5KQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9y
bTFmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGFycmF5KQog
ewogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAg
IGdsOjpVbmlmb3JtMWZ2KGxvY2F0aW9uLCBzaXplLCBhcnJheSk7CisgICAgZ2w6OlVuaWZvcm0x
ZnYobG9jYXRpb24sIGFycmF5LmJ1ZlNpemUsIGFycmF5LmRhdGEpOwogfQogCiB2b2lkIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMmYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGZsb2F0
IHYwLCBHQ0dMZmxvYXQgdjEpCkBAIC0xNTE3LDEzICsxNTIyLDEzIEBAIHZvaWQgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OnVuaWZvcm0yZihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMZmxvYXQgdjAs
IEdDR0xmbG9hCiAgICAgZ2w6OlVuaWZvcm0yZihsb2NhdGlvbiwgdjAsIHYxKTsKIH0KIAotdm9p
ZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTJmdihHQ0dMaW50IGxvY2F0aW9uLCBH
Q0dMc2l6ZWkgc2l6ZSwgY29uc3QgR0NHTGZsb2F0KiBhcnJheSkKK3ZvaWQgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OnVuaWZvcm0yZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3Qg
R0NHTGZsb2F0PiBhcnJheSkKIHsKLSAgICAvLyBGSVhNRTogbGVuZ3RoIG5lZWRzIHRvIGJlIGEg
bXVsdGlwbGUgb2YgMi4KKyAgICBBU1NFUlQoIShhcnJheS5idWZTaXplICUgMikpOwogICAgIGlm
ICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGdsOjpVbmlm
b3JtMmZ2KGxvY2F0aW9uLCBzaXplLCBhcnJheSk7CisgICAgZ2w6OlVuaWZvcm0yZnYobG9jYXRp
b24sIGFycmF5LmJ1ZlNpemUgLyAyLCBhcnJheS5kYXRhKTsKIH0KIAogdm9pZCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6dW5pZm9ybTNmKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xmbG9hdCB2MCwg
R0NHTGZsb2F0IHYxLCBHQ0dMZmxvYXQgdjIpCkBAIC0xNTM0LDEzICsxNTM5LDEzIEBAIHZvaWQg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0zZihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dM
ZmxvYXQgdjAsIEdDR0xmbG9hCiAgICAgZ2w6OlVuaWZvcm0zZihsb2NhdGlvbiwgdjAsIHYxLCB2
Mik7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0zZnYoR0NHTGlu
dCBsb2NhdGlvbiwgR0NHTHNpemVpIHNpemUsIGNvbnN0IEdDR0xmbG9hdCogYXJyYXkpCit2b2lk
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtM2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdD
R0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gYXJyYXkpCiB7Ci0gICAgLy8gRklYTUU6IGxlbmd0aCBu
ZWVkcyB0byBiZSBhIG11bHRpcGxlIG9mIDMuCisgICAgQVNTRVJUKCEoYXJyYXkuYnVmU2l6ZSAl
IDMpKTsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBnbDo6VW5pZm9ybTNmdihsb2NhdGlvbiwgc2l6ZSwgYXJyYXkpOworICAgIGdsOjpVbmlm
b3JtM2Z2KGxvY2F0aW9uLCBhcnJheS5idWZTaXplIC8gMywgYXJyYXkuZGF0YSk7CiB9CiAKIHZv
aWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm00ZihHQ0dMaW50IGxvY2F0aW9uLCBH
Q0dMZmxvYXQgdjAsIEdDR0xmbG9hdCB2MSwgR0NHTGZsb2F0IHYyLCBHQ0dMZmxvYXQgdjMpCkBA
IC0xNTUxLDEzICsxNTU2LDEzIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZv
cm00ZihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMZmxvYXQgdjAsIEdDR0xmbG9hCiAgICAgZ2w6OlVu
aWZvcm00Zihsb2NhdGlvbiwgdjAsIHYxLCB2MiwgdjMpOwogfQogCi12b2lkIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjp1bmlmb3JtNGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBzaXpl
LCBjb25zdCBHQ0dMZmxvYXQqIGFycmF5KQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
dW5pZm9ybTRmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGFy
cmF5KQogewotICAgIC8vIEZJWE1FOiBsZW5ndGggbmVlZHMgdG8gYmUgYSBtdWx0aXBsZSBvZiA0
LgorICAgIEFTU0VSVCghKGFycmF5LmJ1ZlNpemUgJSA0KSk7CiAgICAgaWYgKCFtYWtlQ29udGV4
dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZ2w6OlVuaWZvcm00ZnYobG9jYXRp
b24sIHNpemUsIGFycmF5KTsKKyAgICBnbDo6VW5pZm9ybTRmdihsb2NhdGlvbiwgYXJyYXkuYnVm
U2l6ZSAvIDQsIGFycmF5LmRhdGEpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
Ojp1bmlmb3JtMWkoR0NHTGludCBsb2NhdGlvbiwgR0NHTGludCB2MCkKQEAgLTE1NjgsMTIgKzE1
NzMsMTIgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTFpKEdDR0xpbnQg
bG9jYXRpb24sIEdDR0xpbnQgdjApCiAgICAgZ2w6OlVuaWZvcm0xaShsb2NhdGlvbiwgdjApOwog
fQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMWl2KEdDR0xpbnQgbG9j
YXRpb24sIEdDR0xzaXplaSBzaXplLCBjb25zdCBHQ0dMaW50KiBhcnJheSkKK3ZvaWQgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0xaXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48
Y29uc3QgR0NHTGludD4gYXJyYXkpCiB7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgZ2w6OlVuaWZvcm0xaXYobG9jYXRpb24sIHNpemUsIGFy
cmF5KTsKKyAgICBnbDo6VW5pZm9ybTFpdihsb2NhdGlvbiwgYXJyYXkuYnVmU2l6ZSwgYXJyYXku
ZGF0YSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0yaShHQ0dM
aW50IGxvY2F0aW9uLCBHQ0dMaW50IHYwLCBHQ0dMaW50IHYxKQpAQCAtMTU4NCwxMyArMTU4OSwx
MyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMmkoR0NHTGludCBsb2Nh
dGlvbiwgR0NHTGludCB2MCwgR0NHTGludCB2MQogICAgIGdsOjpVbmlmb3JtMmkobG9jYXRpb24s
IHYwLCB2MSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0yaXYo
R0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIHNpemUsIGNvbnN0IEdDR0xpbnQqIGFycmF5KQor
dm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTJpdihHQ0dMaW50IGxvY2F0aW9u
LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50PiBhcnJheSkKIHsKLSAgICAvLyBGSVhNRTogbGVuZ3Ro
IG5lZWRzIHRvIGJlIGEgbXVsdGlwbGUgb2YgMi4KKyAgICBBU1NFUlQoIShhcnJheS5idWZTaXpl
ICUgMikpOwogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIGdsOjpVbmlmb3JtMml2KGxvY2F0aW9uLCBzaXplLCBhcnJheSk7CisgICAgZ2w6OlVu
aWZvcm0yaXYobG9jYXRpb24sIGFycmF5LmJ1ZlNpemUgLyAyLCBhcnJheS5kYXRhKTsKIH0KIAog
dm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTNpKEdDR0xpbnQgbG9jYXRpb24s
IEdDR0xpbnQgdjAsIEdDR0xpbnQgdjEsIEdDR0xpbnQgdjIpCkBAIC0xNjAxLDEzICsxNjA2LDEz
IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0zaShHQ0dMaW50IGxvY2F0
aW9uLCBHQ0dMaW50IHYwLCBHQ0dMaW50IHYxCiAgICAgZ2w6OlVuaWZvcm0zaShsb2NhdGlvbiwg
djAsIHYxLCB2Mik7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0z
aXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIHNpemUsIGNvbnN0IEdDR0xpbnQqIGFycmF5
KQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTNpdihHQ0dMaW50IGxvY2F0
aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50PiBhcnJheSkKIHsKLSAgICAvLyBGSVhNRTogbGVu
Z3RoIG5lZWRzIHRvIGJlIGEgbXVsdGlwbGUgb2YgMy4KKyAgICBBU1NFUlQoIShhcnJheS5idWZT
aXplICUgMykpOwogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIGdsOjpVbmlmb3JtM2l2KGxvY2F0aW9uLCBzaXplLCBhcnJheSk7CisgICAgZ2w6
OlVuaWZvcm0zaXYobG9jYXRpb24sIGFycmF5LmJ1ZlNpemUgLyAzLCBhcnJheS5kYXRhKTsKIH0K
IAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTRpKEdDR0xpbnQgbG9jYXRp
b24sIEdDR0xpbnQgdjAsIEdDR0xpbnQgdjEsIEdDR0xpbnQgdjIsIEdDR0xpbnQgdjMpCkBAIC0x
NjE4LDQwICsxNjIzLDM5IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm00
aShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMaW50IHYwLCBHQ0dMaW50IHYxCiAgICAgZ2w6OlVuaWZv
cm00aShsb2NhdGlvbiwgdjAsIHYxLCB2MiwgdjMpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjp1bmlmb3JtNGl2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBzaXplLCBj
b25zdCBHQ0dMaW50KiBhcnJheSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZv
cm00aXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gYXJyYXkpCiB7
Ci0gICAgLy8gRklYTUU6IGxlbmd0aCBuZWVkcyB0byBiZSBhIG11bHRpcGxlIG9mIDQuCisgICAg
QVNTRVJUKCEoYXJyYXkuYnVmU2l6ZSAlIDQpKTsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVu
dCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBnbDo6VW5pZm9ybTRpdihsb2NhdGlvbiwgc2l6
ZSwgYXJyYXkpOworICAgIGdsOjpVbmlmb3JtNGl2KGxvY2F0aW9uLCBhcnJheS5idWZTaXplIC8g
NCwgYXJyYXkuZGF0YSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZv
cm1NYXRyaXgyZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIHNpemUsIEdDR0xib29sZWFu
IHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiBhcnJheSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXgyZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4g
dHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGFycmF5KQogewotICAgIC8vIEZJ
WE1FOiBsZW5ndGggbmVlZHMgdG8gYmUgYSBtdWx0aXBsZSBvZiA0LgogICAgIGlmICghbWFrZUNv
bnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGdsOjpVbmlmb3JtTWF0cml4
MmZ2KGxvY2F0aW9uLCBzaXplLCB0cmFuc3Bvc2UsIGFycmF5KTsKKyAgICBnbDo6VW5pZm9ybU1h
dHJpeDJmdihsb2NhdGlvbiwgYXJyYXkuYnVmU2l6ZSAvIDQsIHRyYW5zcG9zZSwgYXJyYXkuZGF0
YSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXgzZnYo
R0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIHNpemUsIEdDR0xib29sZWFuIHRyYW5zcG9zZSwg
Y29uc3QgR0NHTGZsb2F0KiBhcnJheSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVu
aWZvcm1NYXRyaXgzZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBH
Q0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGFycmF5KQogewotICAgIC8vIEZJWE1FOiBsZW5ndGgg
bmVlZHMgdG8gYmUgYSBtdWx0aXBsZSBvZiA5LgorICAgIEFTU0VSVCghKGFycmF5LmJ1ZlNpemUg
JSA5KSk7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgZ2w6OlVuaWZvcm1NYXRyaXgzZnYobG9jYXRpb24sIHNpemUsIHRyYW5zcG9zZSwgYXJy
YXkpOworICAgIGdsOjpVbmlmb3JtTWF0cml4M2Z2KGxvY2F0aW9uLCBhcnJheS5idWZTaXplIC8g
OSwgdHJhbnNwb3NlLCBhcnJheS5kYXRhKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6dW5pZm9ybU1hdHJpeDRmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgc2l6ZSwg
R0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHQ0dMZmxvYXQqIGFycmF5KQordm9pZCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybU1hdHJpeDRmdihHQ0dMaW50IGxvY2F0aW9uLCBH
Q0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gYXJyYXkpCiB7
Ci0gICAgLy8gRklYTUU6IGxlbmd0aCBuZWVkcyB0byBiZSBhIG11bHRpcGxlIG9mIDE2LgorICAg
IEFTU0VSVCghKGFycmF5LmJ1ZlNpemUgJSAxNikpOwogICAgIGlmICghbWFrZUNvbnRleHRDdXJy
ZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGdsOjpVbmlmb3JtTWF0cml4NGZ2KGxvY2F0
aW9uLCBzaXplLCB0cmFuc3Bvc2UsIGFycmF5KTsKKyAgICBnbDo6VW5pZm9ybU1hdHJpeDRmdihs
b2NhdGlvbiwgYXJyYXkuYnVmU2l6ZSAvIDE2LCB0cmFuc3Bvc2UsIGFycmF5LmRhdGEpOwogfQog
CiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1c2VQcm9ncmFtKFBsYXRmb3JtR0xPYmpl
Y3QgcHJvZ3JhbSkKQEAgLTE2ODAsMTIgKzE2ODQsMTIgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6dmVydGV4QXR0cmliMWYoR0NHTHVpbnQgaW5kZXgsIEdDR0xmbG9hdCB2MCkKICAg
ICBnbDo6VmVydGV4QXR0cmliMWYoaW5kZXgsIHYwKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6dmVydGV4QXR0cmliMWZ2KEdDR0x1aW50IGluZGV4LCBjb25zdCBHQ0dMZmxv
YXQqIGFycmF5KQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliMWZ2
KEdDR0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQsIDE+IGFycmF5KQogewog
ICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGds
OjpWZXJ0ZXhBdHRyaWIxZnYoaW5kZXgsIGFycmF5KTsKKyAgICBnbDo6VmVydGV4QXR0cmliMWZ2
KGluZGV4LCBhcnJheS5kYXRhKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
dmVydGV4QXR0cmliMmYoR0NHTHVpbnQgaW5kZXgsIEdDR0xmbG9hdCB2MCwgR0NHTGZsb2F0IHYx
KQpAQCAtMTY5NiwxMiArMTcwMCwxMiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2
ZXJ0ZXhBdHRyaWIyZihHQ0dMdWludCBpbmRleCwgR0NHTGZsb2F0IHYwLCBHQ0dMZgogICAgIGds
OjpWZXJ0ZXhBdHRyaWIyZihpbmRleCwgdjAsIHYxKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6dmVydGV4QXR0cmliMmZ2KEdDR0x1aW50IGluZGV4LCBjb25zdCBHQ0dMZmxv
YXQqIGFycmF5KQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliMmZ2
KEdDR0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQsIDI+IGFycmF5KQogewog
ICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGds
OjpWZXJ0ZXhBdHRyaWIyZnYoaW5kZXgsIGFycmF5KTsKKyAgICBnbDo6VmVydGV4QXR0cmliMmZ2
KGluZGV4LCBhcnJheS5kYXRhKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
dmVydGV4QXR0cmliM2YoR0NHTHVpbnQgaW5kZXgsIEdDR0xmbG9hdCB2MCwgR0NHTGZsb2F0IHYx
LCBHQ0dMZmxvYXQgdjIpCkBAIC0xNzEyLDEyICsxNzE2LDEyIEBAIHZvaWQgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYjNmKEdDR0x1aW50IGluZGV4LCBHQ0dMZmxvYXQgdjAs
IEdDR0xmCiAgICAgZ2w6OlZlcnRleEF0dHJpYjNmKGluZGV4LCB2MCwgdjEsIHYyKTsKIH0KIAot
dm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliM2Z2KEdDR0x1aW50IGlu
ZGV4LCBjb25zdCBHQ0dMZmxvYXQqIGFycmF5KQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6dmVydGV4QXR0cmliM2Z2KEdDR0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxv
YXQsIDM+IGFycmF5KQogewogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIGdsOjpWZXJ0ZXhBdHRyaWIzZnYoaW5kZXgsIGFycmF5KTsKKyAgICBn
bDo6VmVydGV4QXR0cmliM2Z2KGluZGV4LCBhcnJheS5kYXRhKTsKIH0KIAogdm9pZCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliNGYoR0NHTHVpbnQgaW5kZXgsIEdDR0xmbG9h
dCB2MCwgR0NHTGZsb2F0IHYxLCBHQ0dMZmxvYXQgdjIsIEdDR0xmbG9hdCB2MykKQEAgLTE3Mjgs
MTIgKzE3MzIsMTIgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmli
NGYoR0NHTHVpbnQgaW5kZXgsIEdDR0xmbG9hdCB2MCwgR0NHTGYKICAgICBnbDo6VmVydGV4QXR0
cmliNGYoaW5kZXgsIHYwLCB2MSwgdjIsIHYzKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6dmVydGV4QXR0cmliNGZ2KEdDR0x1aW50IGluZGV4LCBjb25zdCBHQ0dMZmxvYXQq
IGFycmF5KQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliNGZ2KEdD
R0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQsIDQ+IGFycmF5KQogewogICAg
IGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGdsOjpW
ZXJ0ZXhBdHRyaWI0ZnYoaW5kZXgsIGFycmF5KTsKKyAgICBnbDo6VmVydGV4QXR0cmliNGZ2KGlu
ZGV4LCBhcnJheS5kYXRhKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVy
dGV4QXR0cmliUG9pbnRlcihHQ0dMdWludCBpbmRleCwgR0NHTGludCBzaXplLCBHQ0dMZW51bSB0
eXBlLCBHQ0dMYm9vbGVhbiBub3JtYWxpemVkLCBHQ0dMc2l6ZWkgc3RyaWRlLCBHQ0dMaW50cHRy
IG9mZnNldCkKQEAgLTIwMjksMTMgKzIwMzMsMTMgQEAgR0NHTHNpemVpcHRyIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpnZXRWZXJ0ZXhBdHRyaWJPZmZzZXQoR0NHTHVpbnQgaW5kZXgsIEdDR0wK
ICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTHNpemVpcHRyPihyZWludGVycHJldF9jYXN0PGlu
dHB0cl90Pihwb2ludGVyKSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnRl
eFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmYs
IEdDR0xpbnQgeW9mZiwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51
bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIGNvbnN0IHZvaWQqIHBpeGVscykKK3ZvaWQgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OnRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50
IGxldmVsLCBHQ0dMaW50IHhvZmYsIEdDR0xpbnQgeW9mZiwgR0NHTHNpemVpIHdpZHRoLCBHQ0dM
c2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPGNv
bnN0IEdDR0x2b2lkPiBwaXhlbHMpCiB7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gRklYTUU6IHdlIHdpbGwgbmVlZCB0byBkZWFsIHdp
dGggUGl4ZWxTdG9yZSBwYXJhbXMgd2hlbiBkZWFsaW5nIHdpdGggaW1hZ2UgYnVmZmVycyB0aGF0
IGRpZmZlciBmcm9tIHRoZSBzdWJpbWFnZSBzaXplLgotICAgIGdsOjpUZXhTdWJJbWFnZTJEKHRh
cmdldCwgbGV2ZWwsIHhvZmYsIHlvZmYsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgcGl4
ZWxzKTsKKyAgICBnbDo6VGV4U3ViSW1hZ2UyRFJvYnVzdEFOR0xFKHRhcmdldCwgbGV2ZWwsIHhv
ZmYsIHlvZmYsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgcGl4ZWxzLmJ1ZlNpemUsIHBp
eGVscy5kYXRhKTsKICAgICBtX3N0YXRlLnRleHR1cmVTZWVkQ291bnQuYWRkKG1fc3RhdGUuY3Vy
cmVudEJvdW5kVGV4dHVyZSgpKTsKIH0KIApAQCAtMjIwMywxNyArMjIwNyw2IEBAIHZvaWQgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OmRpc3BhdGNoQ29udGV4dENoYW5nZWROb3RpZmljYXRpb24o
KQogICAgICAgICBjbGllbnQtPmRpc3BhdGNoQ29udGV4dENoYW5nZWROb3RpZmljYXRpb24oKTsK
IH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dGV4SW1hZ2UyRERpcmVjdChHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dM
c2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBm
b3JtYXQsIEdDR0xlbnVtIHR5cGUsIGNvbnN0IHZvaWQqIHBpeGVscykKLXsKLSAgICBpZiAoIW1h
a2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoIW1faXNGb3JX
ZWJHTDIgJiYgbV9leHRlbnNpb25zKQotICAgICAgICBpbnRlcm5hbGZvcm1hdCA9IG1fZXh0ZW5z
aW9ucy0+YWRqdXN0V2ViR0wxVGV4dHVyZUludGVybmFsRm9ybWF0KGludGVybmFsZm9ybWF0LCBm
b3JtYXQsIHR5cGUpOwotICAgIGdsOjpUZXhJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIGludGVybmFs
Zm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIsIGZvcm1hdCwgdHlwZSwgcGl4ZWxzKTsKLSAg
ICBtX3N0YXRlLnRleHR1cmVTZWVkQ291bnQuYWRkKG1fc3RhdGUuY3VycmVudEJvdW5kVGV4dHVy
ZSgpKTsKLX0KLQogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6ZHJhd0FycmF5c0luc3Rh
bmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xz
aXplaSBwcmltY291bnQpCiB7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKQEAgLTI0
MzYsMjAgKzI0MjksMjAgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6ZnJhbWVidWZm
ZXJUZXh0dXJlTGF5ZXIoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bQogICAgIGdsOjpGcmFtZWJ1
ZmZlclRleHR1cmVMYXllcih0YXJnZXQsIGF0dGFjaG1lbnQsIHRleHR1cmUsIGxldmVsLCBsYXll
cik7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmludmFsaWRhdGVGcmFtZWJ1
ZmZlcihHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaSBudW1BdHRhY2htZW50cywgY29uc3QgR0NH
TGVudW0qIGF0dGFjaG1lbnRzKQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6aW52YWxp
ZGF0ZUZyYW1lYnVmZmVyKEdDR0xlbnVtIHRhcmdldCwgR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+
IGF0dGFjaG1lbnRzKQogewogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIGdsOjpJbnZhbGlkYXRlRnJhbWVidWZmZXIodGFyZ2V0LCBudW1BdHRh
Y2htZW50cywgYXR0YWNobWVudHMpOworICAgIGdsOjpJbnZhbGlkYXRlRnJhbWVidWZmZXIodGFy
Z2V0LCBhdHRhY2htZW50cy5idWZTaXplLCBhdHRhY2htZW50cy5kYXRhKTsKIH0KIAotdm9pZCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6aW52YWxpZGF0ZVN1YkZyYW1lYnVmZmVyKEdDR0xlbnVt
IHRhcmdldCwgR0NHTHNpemVpIG51bUF0dGFjaG1lbnRzLCBjb25zdCBHQ0dMZW51bSogYXR0YWNo
bWVudHMsIEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBo
ZWlnaHQpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjppbnZhbGlkYXRlU3ViRnJhbWVi
dWZmZXIoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4gYXR0YWNobWVu
dHMsIEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWln
aHQpCiB7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgZ2w6OkludmFsaWRhdGVTdWJGcmFtZWJ1ZmZlcih0YXJnZXQsIG51bUF0dGFjaG1lbnRz
LCBhdHRhY2htZW50cywgeCwgeSwgd2lkdGgsIGhlaWdodCk7CisgICAgZ2w6OkludmFsaWRhdGVT
dWJGcmFtZWJ1ZmZlcih0YXJnZXQsIGF0dGFjaG1lbnRzLmJ1ZlNpemUsIGF0dGFjaG1lbnRzLmRh
dGEsIHgsIHksIHdpZHRoLCBoZWlnaHQpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpyZWFkQnVmZmVyKEdDR0xlbnVtIHNyYykKQEAgLTI1MTcsODQgKzI1MTAsOTMgQEAgdm9p
ZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTR1aShHQ0dMaW50IGxvY2F0aW9uLCBH
Q0dMdWludCB2MCwgR0NHTHVpbnQKICAgICBnbDo6VW5pZm9ybTR1aShsb2NhdGlvbiwgdjAsIHYx
LCB2MiwgdjMpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMXVp
dihHQ0dMaW50IGxvY2F0aW9uLCBjb25zdCBHQ0dMdWludCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zm
c2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1
bmlmb3JtMXVpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdWludD4gZGF0
YSkKIHsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBnbDo6VW5pZm9ybTF1aXYobG9jYXRpb24sIHNyY0xlbmd0aCwgZGF0YSArIHNyY09mZnNl
dCk7CisgICAgZ2w6OlVuaWZvcm0xdWl2KGxvY2F0aW9uLCBkYXRhLmJ1ZlNpemUsIGRhdGEuZGF0
YSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0ydWl2KEdDR0xp
bnQgbG9jYXRpb24sIGNvbnN0IEdDR0x1aW50KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdD
R0x1aW50IHNyY0xlbmd0aCkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0y
dWl2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0x1aW50PiBkYXRhKQogewor
ICAgIEFTU0VSVCghKGRhdGEuYnVmU2l6ZSAlIDIpKTsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3Vy
cmVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBnbDo6VW5pZm9ybTJ1aXYobG9jYXRpb24s
IHNyY0xlbmd0aCwgZGF0YSArIHNyY09mZnNldCk7CisgICAgZ2w6OlVuaWZvcm0ydWl2KGxvY2F0
aW9uLCBkYXRhLmJ1ZlNpemUgLyAyLCBkYXRhLmRhdGEpOwogfQogCi12b2lkIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjp1bmlmb3JtM3VpdihHQ0dMaW50IGxvY2F0aW9uLCBjb25zdCBHQ0dMdWlu
dCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCit2b2lkIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtM3VpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dM
U3Bhbjxjb25zdCBHQ0dMdWludD4gZGF0YSkKIHsKKyAgICBBU1NFUlQoIShkYXRhLmJ1ZlNpemUg
JSAzKSk7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgZ2w6OlVuaWZvcm0zdWl2KGxvY2F0aW9uLCBzcmNMZW5ndGgsIGRhdGEgKyBzcmNPZmZz
ZXQpOworICAgIGdsOjpVbmlmb3JtM3Vpdihsb2NhdGlvbiwgZGF0YS5idWZTaXplIC8gMywgZGF0
YS5kYXRhKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTR1aXYo
R0NHTGludCBsb2NhdGlvbiwgY29uc3QgR0NHTHVpbnQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNl
dCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5p
Zm9ybTR1aXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTHVpbnQ+IGRhdGEp
CiB7CisgICAgQVNTRVJUKCEoZGF0YS5idWZTaXplICUgNCkpOwogICAgIGlmICghbWFrZUNvbnRl
eHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGdsOjpVbmlmb3JtNHVpdihsb2Nh
dGlvbiwgc3JjTGVuZ3RoLCBkYXRhICsgc3JjT2Zmc2V0KTsKKyAgICBnbDo6VW5pZm9ybTR1aXYo
bG9jYXRpb24sIGRhdGEuYnVmU2l6ZSAvIDQsIGRhdGEuZGF0YSk7CiB9CiAKLXZvaWQgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXgyeDNmdihHQ0dMaW50IGxvY2F0aW9uLCBH
Q0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3Jj
T2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
Ojp1bmlmb3JtTWF0cml4MngzZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNw
b3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEpCiB7CisgICAgQVNTRVJUKCEoZGF0
YS5idWZTaXplICUgNikpOwogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIGdsOjpVbmlmb3JtTWF0cml4MngzZnYobG9jYXRpb24sIHNyY0xlbmd0
aCwgdHJhbnNwb3NlLCBkYXRhICsgc3JjT2Zmc2V0KTsKKyAgICBnbDo6VW5pZm9ybU1hdHJpeDJ4
M2Z2KGxvY2F0aW9uLCBkYXRhLmJ1ZlNpemUgLyA2LCB0cmFuc3Bvc2UsIGRhdGEuZGF0YSk7CiB9
CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXgzeDJmdihHQ0dM
aW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogZGF0
YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCit2b2lkIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4M3gyZnYoR0NHTGludCBsb2NhdGlvbiwgR0NH
TGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEpCiB7Cisg
ICAgQVNTRVJUKCEoZGF0YS5idWZTaXplICUgNikpOwogICAgIGlmICghbWFrZUNvbnRleHRDdXJy
ZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGdsOjpVbmlmb3JtTWF0cml4M3gyZnYobG9j
YXRpb24sIHNyY0xlbmd0aCwgdHJhbnNwb3NlLCBkYXRhICsgc3JjT2Zmc2V0KTsKKyAgICBnbDo6
VW5pZm9ybU1hdHJpeDN4MmZ2KGxvY2F0aW9uLCBkYXRhLmJ1ZlNpemUgLyA2LCB0cmFuc3Bvc2Us
IGRhdGEuZGF0YSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1N
YXRyaXgyeDRmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0
IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgp
Cit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4Mng0ZnYoR0NHTGlu
dCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxv
YXQ+IGRhdGEpCiB7CisgICAgQVNTRVJUKCEoZGF0YS5idWZTaXplICUgOCkpOwogICAgIGlmICgh
bWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGdsOjpVbmlmb3Jt
TWF0cml4Mng0ZnYobG9jYXRpb24sIHNyY0xlbmd0aCwgdHJhbnNwb3NlLCBkYXRhICsgc3JjT2Zm
c2V0KTsKKyAgICBnbDo6VW5pZm9ybU1hdHJpeDJ4NGZ2KGxvY2F0aW9uLCBkYXRhLmJ1ZlNpemUg
LyA4LCB0cmFuc3Bvc2UsIGRhdGEuZGF0YSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OnVuaWZvcm1NYXRyaXg0eDJmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0
cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dM
dWludCBzcmNMZW5ndGgpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0
cml4NHgyZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bh
bjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEpCiB7CisgICAgQVNTRVJUKCEoZGF0YS5idWZTaXplICUg
OCkpOwogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIGdsOjpVbmlmb3JtTWF0cml4NHgyZnYobG9jYXRpb24sIHNyY0xlbmd0aCwgdHJhbnNwb3Nl
LCBkYXRhICsgc3JjT2Zmc2V0KTsKKyAgICBnbDo6VW5pZm9ybU1hdHJpeDR4MmZ2KGxvY2F0aW9u
LCBkYXRhLmJ1ZlNpemUgLyA4LCB0cmFuc3Bvc2UsIGRhdGEuZGF0YSk7CiB9CiAKLXZvaWQgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXgzeDRmdihHQ0dMaW50IGxvY2F0aW9u
LCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQg
c3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjp1bmlmb3JtTWF0cml4M3g0ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJh
bnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEpCiB7CisgICAgQVNTRVJUKCEo
ZGF0YS5idWZTaXplICUgMTIpKTsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBnbDo6VW5pZm9ybU1hdHJpeDN4NGZ2KGxvY2F0aW9uLCBzcmNM
ZW5ndGgsIHRyYW5zcG9zZSwgZGF0YSArIHNyY09mZnNldCk7CisgICAgZ2w6OlVuaWZvcm1NYXRy
aXgzeDRmdihsb2NhdGlvbiwgZGF0YS5idWZTaXplIC8gMTIsIHRyYW5zcG9zZSwgZGF0YS5kYXRh
KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybU1hdHJpeDR4M2Z2
KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0
KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKK3ZvaWQgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXg0eDNmdihHQ0dMaW50IGxvY2F0aW9u
LCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gZGF0YSkK
IHsKKyAgICBBU1NFUlQoIShkYXRhLmJ1ZlNpemUgJSAxMikpOwogICAgIGlmICghbWFrZUNvbnRl
eHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGdsOjpVbmlmb3JtTWF0cml4NHgz
ZnYobG9jYXRpb24sIHNyY0xlbmd0aCwgdHJhbnNwb3NlLCBkYXRhICsgc3JjT2Zmc2V0KTsKKyAg
ICBnbDo6VW5pZm9ybU1hdHJpeDR4M2Z2KGxvY2F0aW9uLCBkYXRhLmJ1ZlNpemUgLyAxMiwgdHJh
bnNwb3NlLCBkYXRhLmRhdGEpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2
ZXJ0ZXhBdHRyaWJJNGkoR0NHTHVpbnQgaW5kZXgsIEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dM
aW50IHosIEdDR0xpbnQgdykKQEAgLTI2MDUsMTIgKzI2MDcsMTIgQEAgdm9pZCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliSTRpKEdDR0x1aW50IGluZGV4LCBHQ0dMaW50IHgs
IEdDR0xpbnQKICAgICBnbDo6VmVydGV4QXR0cmliSTRpKGluZGV4LCB4LCB5LCB6LCB3KTsKIH0K
IAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliSTRpdihHQ0dMdWlu
dCBpbmRleCwgY29uc3QgR0NHTGludCogdmFsdWVzKQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6dmVydGV4QXR0cmliSTRpdihHQ0dMdWludCBpbmRleCwgR0NHTFNwYW48Y29uc3QgR0NH
TGludCwgND4gdmFsdWVzKQogewogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIGdsOjpWZXJ0ZXhBdHRyaWJJNGl2KGluZGV4LCB2YWx1ZXMpOwor
ICAgIGdsOjpWZXJ0ZXhBdHRyaWJJNGl2KGluZGV4LCB2YWx1ZXMuZGF0YSk7CiB9CiAKIHZvaWQg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYkk0dWkoR0NHTHVpbnQgaW5kZXgs
IEdDR0x1aW50IHgsIEdDR0x1aW50IHksIEdDR0x1aW50IHosIEdDR0x1aW50IHcpCkBAIC0yNjIx
LDEyICsyNjIzLDEyIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJp
Ykk0dWkoR0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50IHgsIEdDR0x1CiAgICAgZ2w6OlZlcnRleEF0
dHJpYkk0dWkoaW5kZXgsIHgsIHksIHosIHcpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjp2ZXJ0ZXhBdHRyaWJJNHVpdihHQ0dMdWludCBpbmRleCwgY29uc3QgR0NHTHVpbnQq
IHZhbHVlcykKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYkk0dWl2
KEdDR0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdWludCwgND4gdmFsdWVzKQogewog
ICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGds
OjpWZXJ0ZXhBdHRyaWJJNHVpdihpbmRleCwgdmFsdWVzKTsKKyAgICBnbDo6VmVydGV4QXR0cmli
STR1aXYoaW5kZXgsIHZhbHVlcy5kYXRhKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6ZHJhd1JhbmdlRWxlbWVudHMoR0NHTGVudW0gbW9kZSwgR0NHTHVpbnQgc3RhcnQsIEdD
R0x1aW50IGVuZCwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9m
ZnNldCkKQEAgLTI2MzcsMzYgKzI2MzksMzYgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6ZHJhd1JhbmdlRWxlbWVudHMoR0NHTGVudW0gbW9kZSwgR0NHTHVpbnQgc3RhcnQsIEcKICAg
ICBnbDo6RHJhd1JhbmdlRWxlbWVudHMobW9kZSwgc3RhcnQsIGVuZCwgY291bnQsIHR5cGUsIHJl
aW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KG9mZnNldCkpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpkcmF3QnVmZmVycyhHQ0dMc2l6ZWkgbiwgY29uc3QgR0NHTGVudW0qIGJ1ZnMp
Cit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpkcmF3QnVmZmVycyhHQ0dMU3Bhbjxjb25z
dCBHQ0dMZW51bT4gYnVmcykKIHsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBnbDo6RHJhd0J1ZmZlcnMobiwgYnVmcyk7CisgICAgZ2w6OkRy
YXdCdWZmZXJzKGJ1ZnMuYnVmU2l6ZSwgYnVmcy5kYXRhKTsKIH0KIAotdm9pZCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6Y2xlYXJCdWZmZXJpdihHQ0dMZW51bSBidWZmZXIsIEdDR0xpbnQgZHJh
d2J1ZmZlciwgY29uc3QgR0NHTGludCogdmFsdWVzLCBHQ0dMdWludCBzcmNPZmZzZXQpCit2b2lk
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjbGVhckJ1ZmZlcml2KEdDR0xlbnVtIGJ1ZmZlciwg
R0NHTGludCBkcmF3YnVmZmVyLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50PiB2YWx1ZXMpCiB7CiAg
ICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZ2w6
OkNsZWFyQnVmZmVyaXYoYnVmZmVyLCBkcmF3YnVmZmVyLCB2YWx1ZXMgKyBzcmNPZmZzZXQpOwor
ICAgIGdsOjpDbGVhckJ1ZmZlcml2KGJ1ZmZlciwgZHJhd2J1ZmZlciwgdmFsdWVzLmRhdGEpOwog
fQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjbGVhckJ1ZmZlcnVpdihHQ0dMZW51
bSBidWZmZXIsIEdDR0xpbnQgZHJhd2J1ZmZlciwgY29uc3QgR0NHTHVpbnQqIHZhbHVlcywgR0NH
THVpbnQgc3JjT2Zmc2V0KQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y2xlYXJCdWZm
ZXJ1aXYoR0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50IGRyYXdidWZmZXIsIEdDR0xTcGFuPGNvbnN0
IEdDR0x1aW50PiB2YWx1ZXMpCiB7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgZ2w6OkNsZWFyQnVmZmVydWl2KGJ1ZmZlciwgZHJhd2J1ZmZl
ciwgdmFsdWVzICsgc3JjT2Zmc2V0KTsKKyAgICBnbDo6Q2xlYXJCdWZmZXJ1aXYoYnVmZmVyLCBk
cmF3YnVmZmVyLCB2YWx1ZXMuZGF0YSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OmNsZWFyQnVmZmVyZnYoR0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50IGRyYXdidWZmZXIsIGNv
bnN0IEdDR0xmbG9hdCogdmFsdWVzLCBHQ0dMdWludCBzcmNPZmZzZXQpCit2b2lkIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpjbGVhckJ1ZmZlcmZ2KEdDR0xlbnVtIGJ1ZmZlciwgR0NHTGludCBk
cmF3YnVmZmVyLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IHZhbHVlcykKIHsKICAgICBpZiAo
IW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBnbDo6Q2xlYXJC
dWZmZXJmdihidWZmZXIsIGRyYXdidWZmZXIsIHZhbHVlcyArIHNyY09mZnNldCk7CisgICAgZ2w6
OkNsZWFyQnVmZmVyZnYoYnVmZmVyLCBkcmF3YnVmZmVyLCB2YWx1ZXMuZGF0YSk7CiB9CiAKIHZv
aWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNsZWFyQnVmZmVyZmkoR0NHTGVudW0gYnVmZmVy
LCBHQ0dMaW50IGRyYXdidWZmZXIsIEdDR0xmbG9hdCBkZXB0aCwgR0NHTGludCBzdGVuY2lsKQpA
QCAtMjg1NCw5NCArMjg1Niw2IEBAIFZlY3RvcjxHQ0dMdWludD4gR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OmdldFVuaWZvcm1JbmRpY2VzKFBsYXRmb3JtR0xPYmplY3QgcHJvCiAgICAgcmV0dXJu
IHJlc3VsdDsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTFmdihH
Q0dMaW50IGxvY2F0aW9uLCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNl
dCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQotewotICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpVbmlmb3JtMWZ2KGxvY2F0aW9uLCBzcmNMZW5n
dGgsIGRhdGEgKyBzcmNPZmZzZXQpOwotfQotCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
Ojp1bmlmb3JtMmZ2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NH
THVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCi17Ci0gICAgaWYgKCFtYWtlQ29u
dGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OlVuaWZvcm0yZnYobG9j
YXRpb24sIHNyY0xlbmd0aCwgZGF0YSArIHNyY09mZnNldCk7Ci19Ci0KLXZvaWQgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OnVuaWZvcm0zZnYoR0NHTGludCBsb2NhdGlvbiwgY29uc3QgR0NHTGZs
b2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKLXsKLSAg
ICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6
VW5pZm9ybTNmdihsb2NhdGlvbiwgc3JjTGVuZ3RoLCBkYXRhICsgc3JjT2Zmc2V0KTsKLX0KLQot
dm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTRmdihHQ0dMaW50IGxvY2F0aW9u
LCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3Jj
TGVuZ3RoKQotewotICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIGdsOjpVbmlmb3JtNGZ2KGxvY2F0aW9uLCBzcmNMZW5ndGgsIGRhdGEgKyBzcmNP
ZmZzZXQpOwotfQotCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMWl2KEdD
R0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0xpbnQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwg
R0NHTHVpbnQgc3JjTGVuZ3RoKQotewotICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIGdsOjpVbmlmb3JtMWl2KGxvY2F0aW9uLCBzcmNMZW5ndGgs
IGRhdGEgKyBzcmNPZmZzZXQpOwotfQotCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1
bmlmb3JtMml2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0xpbnQqIGRhdGEsIEdDR0x1aW50
IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQotewotICAgIGlmICghbWFrZUNvbnRleHRD
dXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpVbmlmb3JtMml2KGxvY2F0aW9u
LCBzcmNMZW5ndGgsIGRhdGEgKyBzcmNPZmZzZXQpOwotfQotCi12b2lkIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjp1bmlmb3JtM2l2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0xpbnQqIGRh
dGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQotewotICAgIGlmICgh
bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpVbmlmb3Jt
M2l2KGxvY2F0aW9uLCBzcmNMZW5ndGgsIGRhdGEgKyBzcmNPZmZzZXQpOwotfQotCi12b2lkIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtNGl2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0
IEdDR0xpbnQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQot
ewotICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAg
IGdsOjpVbmlmb3JtNGl2KGxvY2F0aW9uLCBzcmNMZW5ndGgsIGRhdGEgKyBzcmNPZmZzZXQpOwot
fQotCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4MmZ2KEdDR0xp
bnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiBkYXRh
LCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKLXsKLSAgICBpZiAoIW1h
a2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6VW5pZm9ybU1h
dHJpeDJmdihsb2NhdGlvbiwgc3JjTGVuZ3RoLCB0cmFuc3Bvc2UsIGRhdGEgKyBzcmNPZmZzZXQp
OwotfQotCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4M2Z2KEdD
R0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiBk
YXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKLXsKLSAgICBpZiAo
IW1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6VW5pZm9y
bU1hdHJpeDNmdihsb2NhdGlvbiwgc3JjTGVuZ3RoLCB0cmFuc3Bvc2UsIGRhdGEgKyBzcmNPZmZz
ZXQpOwotfQotCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4NGZ2
KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0
KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKLXsKLSAgICBp
ZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6VW5p
Zm9ybU1hdHJpeDRmdihsb2NhdGlvbiwgc3JjTGVuZ3RoLCB0cmFuc3Bvc2UsIGRhdGEgKyBzcmNP
ZmZzZXQpOwotfQotCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRBY3RpdmVVbmlm
b3JtQmxvY2tpdihHQ0dMdWludCBwcm9ncmFtLCBHQ0dMdWludCB1bmlmb3JtQmxvY2tJbmRleCwg
R0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xpbnQ+IHBhcmFtcykKIHsKICAgICBpZiAoIW1h
a2VDb250ZXh0Q3VycmVudCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY3YvR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2N2L0dyYXBoaWNzQ29udGV4dEdMQ1ZBTkdMRS5jcHAKaW5kZXgg
ZjliZmNhM2M0OGNlMjhlYWIxOTQ0YTRmNWU4NTMwYTQyNWY4NjJmZS4uMWE0MzM3MmMyMWUyMjAy
MTc5NDZkNjdhZTAxNmMwODEyMTM0YjIwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY3YvR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9HcmFwaGljc0NvbnRleHRHTENWQU5HTEUu
Y3BwCkBAIC0yMzUsMTggKzIzNSwxMyBAQCBzdHJ1Y3QgR0xmbG9hdENvbG9ycyB7CiB9OwogCiBz
dHJ1Y3QgWUNiQ3JNYXRyaXggewotICAgIHVuaW9uIHsKLSAgICAgICAgR0xmbG9hdCByb3dzWzRd
WzRdOwotICAgICAgICBHTGZsb2F0IGRhdGFbMTZdOwotICAgIH07CisgICAgR0xmbG9hdCByb3dz
WzRdWzRdOwogCiAgICAgY29uc3RleHByIFlDYkNyTWF0cml4KFBpeGVsUmFuZ2UsIEdMZmxvYXQg
Y2JDb2VmZmljaWVudCwgR0xmbG9hdCBjckNvZWZmaWNpZW50KTsKIAotICAgIG9wZXJhdG9yIFZl
Y3RvcjxHTGZsb2F0PigpIGNvbnN0CisgICAgb3BlcmF0b3IgR0NHTFNwYW48Y29uc3QgR0xmbG9h
dCwgMTY+KCkgY29uc3QKICAgICB7Ci0gICAgICAgIFZlY3RvcjxHTGZsb2F0PiB2ZWN0b3I7Ci0g
ICAgICAgIHZlY3Rvci5hcHBlbmQoZGF0YSwgMTYpOwotICAgICAgICByZXR1cm4gdmVjdG9yOwor
ICAgICAgICByZXR1cm4gbWFrZUdDR0xTcGFuPDE2Pigmcm93c1swXVswXSk7CiAgICAgfQogCiAg
ICAgY29uc3RleHByIEdMZmxvYXRDb2xvciBvcGVyYXRvciooY29uc3QgR0xmbG9hdENvbG9yJikg
Y29uc3Q7CkBAIC0zMTgsMTAgKzMxMywxMCBAQCBjb25zdGV4cHIgR0xmbG9hdENvbG9yIFlDYkNy
TWF0cml4OjpvcGVyYXRvciooY29uc3QgR0xmbG9hdENvbG9yJiBjb2xvcikgY29uc3QKICAgICAp
OwogfQogCi1zdGF0aWMgY29uc3QgVmVjdG9yPEdMZmxvYXQ+IFlDYkNyVG9SR0JNYXRyaXhGb3JS
YW5nZUFuZFRyYW5zZmVyRnVuY3Rpb24oUGl4ZWxSYW5nZSByYW5nZSwgVHJhbnNmZXJGdW5jdGlv
bkNWIHRyYW5zZmVyRnVuY3Rpb24pCitzdGF0aWMgR0NHTFNwYW48Y29uc3QgR0xmbG9hdCwgMTY+
IFlDYkNyVG9SR0JNYXRyaXhGb3JSYW5nZUFuZFRyYW5zZmVyRnVuY3Rpb24oUGl4ZWxSYW5nZSBy
YW5nZSwgVHJhbnNmZXJGdW5jdGlvbkNWIHRyYW5zZmVyRnVuY3Rpb24pCiB7CiAgICAgdXNpbmcg
TWFwS2V5ID0gc3RkOjpwYWlyPFBpeGVsUmFuZ2UsIFRyYW5zZmVyRnVuY3Rpb25DVj47Ci0gICAg
dXNpbmcgTWF0cml4TWFwID0gU3RkTWFwPE1hcEtleSwgVmVjdG9yPEdMZmxvYXQ+PjsKKyAgICB1
c2luZyBNYXRyaXhNYXAgPSBTdGRNYXA8TWFwS2V5LCBjb25zdCBZQ2JDck1hdHJpeCY+OwogCiAg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPE1hdHJpeE1hcD4gbWF0cmljZXM7CiAgICAgc3RhdGlj
IGRpc3BhdGNoX29uY2VfdCBvbmNlVG9rZW47CkBAIC01MjYsNyArNTIxLDcgQEAgYm9vbCBHcmFw
aGljc0NvbnRleHRHTENWQU5HTEU6OmluaXRpYWxpemVVVkNvbnRleHRPYmplY3RzKCkKICAgICBm
bG9hdCB2ZXJ0aWNlc1sxMl0gPSB7IC0xLCAtMSwgMSwgLTEsIDEsIDEsIDEsIDEsIC0xLCAxLCAt
MSwgLTEgfTsKIAogICAgIG1fY29udGV4dC0+YmluZEJ1ZmZlcihHcmFwaGljc0NvbnRleHRHTDo6
QVJSQVlfQlVGRkVSLCBtX3l1dlZlcnRleEJ1ZmZlcik7Ci0gICAgbV9jb250ZXh0LT5idWZmZXJE
YXRhKEdyYXBoaWNzQ29udGV4dEdMOjpBUlJBWV9CVUZGRVIsIHNpemVvZih2ZXJ0aWNlcyksIHZl
cnRpY2VzLCBHcmFwaGljc0NvbnRleHRHTDo6U1RBVElDX0RSQVcpOworICAgIG1fY29udGV4dC0+
YnVmZmVyRGF0YShHcmFwaGljc0NvbnRleHRHTDo6QVJSQVlfQlVGRkVSLCBHQ0dMU3Bhbjxjb25z
dCBHQ0dMdm9pZD4odmVydGljZXMsIHNpemVvZih2ZXJ0aWNlcykpLCBHcmFwaGljc0NvbnRleHRH
TDo6U1RBVElDX0RSQVcpOwogICAgIG1fY29udGV4dC0+ZW5hYmxlVmVydGV4QXR0cmliQXJyYXko
bV95dXZQb3NpdGlvbkF0dHJpYnV0ZUxvY2F0aW9uKTsKICAgICBtX2NvbnRleHQtPnZlcnRleEF0
dHJpYlBvaW50ZXIobV95dXZQb3NpdGlvbkF0dHJpYnV0ZUxvY2F0aW9uLCAyLCBHcmFwaGljc0Nv
bnRleHRHTDo6RkxPQVQsIGZhbHNlLCAwLCAwKTsKIApAQCAtNjI1LDcgKzYyMCw3IEBAIGJvb2wg
R3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFOjpjb3B5UGl4ZWxCdWZmZXJUb1RleHR1cmUoQ1ZQaXhl
bEJ1ZmZlclJlZiBpbWFnZSwKICAgICBtX2NvbnRleHQtPnRleFBhcmFtZXRlcmkoR3JhcGhpY3ND
b250ZXh0R0w6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4dEdMOjpURVhUVVJFX01JTl9GSUxU
RVIsIEdyYXBoaWNzQ29udGV4dEdMOjpMSU5FQVIpOwogICAgIG1fY29udGV4dC0+dGV4UGFyYW1l
dGVyaShHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0R0w6OlRF
WFRVUkVfV1JBUF9TLCBHcmFwaGljc0NvbnRleHRHTDo6Q0xBTVBfVE9fRURHRSk7CiAgICAgbV9j
b250ZXh0LT50ZXhQYXJhbWV0ZXJpKEdyYXBoaWNzQ29udGV4dEdMOjpURVhUVVJFXzJELCBHcmFw
aGljc0NvbnRleHRHTDo6VEVYVFVSRV9XUkFQX1QsIEdyYXBoaWNzQ29udGV4dEdMOjpDTEFNUF9U
T19FREdFKTsKLSAgICBtX2NvbnRleHQtPnRleEltYWdlMkREaXJlY3QoR3JhcGhpY3NDb250ZXh0
R0w6OlRFWFRVUkVfMkQsIGxldmVsLCBpbnRlcm5hbEZvcm1hdCwgd2lkdGgsIGhlaWdodCwgMCwg
Zm9ybWF0LCB0eXBlLCBudWxscHRyKTsKKyAgICBnbDo6VGV4SW1hZ2UyRChHTF9URVhUVVJFXzJE
LCBsZXZlbCwgaW50ZXJuYWxGb3JtYXQsIHdpZHRoLCBoZWlnaHQsIDAsIGZvcm1hdCwgdHlwZSwg
bnVsbHB0cik7CiAKICAgICBtX2NvbnRleHQtPmZyYW1lYnVmZmVyVGV4dHVyZTJEKEdyYXBoaWNz
Q29udGV4dEdMOjpGUkFNRUJVRkZFUiwgR3JhcGhpY3NDb250ZXh0R0w6OkNPTE9SX0FUVEFDSE1F
TlQwLCBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV8yRCwgb3V0cHV0VGV4dHVyZSwgbGV2ZWwp
OwogICAgIEdDR0xlbnVtIHN0YXR1cyA9IG1fY29udGV4dC0+Y2hlY2tGcmFtZWJ1ZmZlclN0YXR1
cyhHcmFwaGljc0NvbnRleHRHTDo6RlJBTUVCVUZGRVIpOwpAQCAtNjgyLDggKzY3Nyw4IEBAIGJv
b2wgR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFOjpjb3B5UGl4ZWxCdWZmZXJUb1RleHR1cmUoQ1ZQ
aXhlbEJ1ZmZlclJlZiBpbWFnZSwKIAogICAgIGF1dG8gcmFuZ2UgPSBwaXhlbFJhbmdlRnJvbVBp
eGVsRm9ybWF0KHBpeGVsRm9ybWF0KTsKICAgICBhdXRvIHRyYW5zZmVyRnVuY3Rpb24gPSB0cmFu
c2ZlckZ1bmN0aW9uRnJvbVN0cmluZygoQ0ZTdHJpbmdSZWYpQ1ZCdWZmZXJHZXRBdHRhY2htZW50
KGltYWdlLCBrQ1ZJbWFnZUJ1ZmZlcllDYkNyTWF0cml4S2V5LCBuaWwpKTsKLSAgICBhdXRvJiBj
b2xvck1hdHJpeCA9IFlDYkNyVG9SR0JNYXRyaXhGb3JSYW5nZUFuZFRyYW5zZmVyRnVuY3Rpb24o
cmFuZ2UsIHRyYW5zZmVyRnVuY3Rpb24pOwotICAgIG1fY29udGV4dC0+dW5pZm9ybU1hdHJpeDRm
dihtX2NvbG9yTWF0cml4VW5pZm9ybUxvY2F0aW9uLCAxLCBHTF9GQUxTRSwgY29sb3JNYXRyaXgu
ZGF0YSgpKTsKKyAgICBhdXRvIGNvbG9yTWF0cml4ID0gWUNiQ3JUb1JHQk1hdHJpeEZvclJhbmdl
QW5kVHJhbnNmZXJGdW5jdGlvbihyYW5nZSwgdHJhbnNmZXJGdW5jdGlvbik7CisgICAgbV9jb250
ZXh0LT51bmlmb3JtTWF0cml4NGZ2KG1fY29sb3JNYXRyaXhVbmlmb3JtTG9jYXRpb24sIEdMX0ZB
TFNFLCBjb2xvck1hdHJpeCk7CiAKICAgICAvLyBEbyB0aGUgYWN0dWFsIGRyYXdpbmcuCiAgICAg
bV9jb250ZXh0LT5kcmF3QXJyYXlzKEdyYXBoaWNzQ29udGV4dEdMOjpUUklBTkdMRVMsIDAsIDYp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4
dGVuc2lvbnNHTE9wZW5HTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmNwcAppbmRleCAxNzc4NmE2NGJhNGUxZGEwMDk2NGVh
ZTk5N2QyOTI3NjRkYWQxODk2Li4xOTZiYjU1OTRjZTFmMWRjMmZkNDg0NWY5NzkwYmRjNThmYmFh
MGY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wv
RXh0ZW5zaW9uc0dMT3BlbkdMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmNwcApAQCAtMjA4LDE0ICsyMDgsMTQgQEAg
Ym9vbCBFeHRlbnNpb25zR0xPcGVuR0w6OnN1cHBvcnRzRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYg
bmFtZSkKICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKG5hbWUpOwog
fQogCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTDo6ZHJhd0J1ZmZlcnNFWFQoR0NHTHNpemVpIG4s
IGNvbnN0IEdDR0xlbnVtKiBidWZzKQordm9pZCBFeHRlbnNpb25zR0xPcGVuR0w6OmRyYXdCdWZm
ZXJzRVhUKEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVtPiBidWZzKQogewogICAgIGlmICghbV9jb250
ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gIEZJ
WE1FOiBpbXBsZW1lbnQgc3VwcG9ydCBmb3Igb3RoZXIgcGxhdGZvcm1zLgogI2lmIFBMQVRGT1JN
KEdUSykKLSAgICA6OmdsRHJhd0J1ZmZlcnMobiwgYnVmcyk7CisgICAgOjpnbERyYXdCdWZmZXJz
KGJ1ZnMuYnVmU2l6ZSwgYnVmcy5kYXQpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0obik7CiAg
ICAgVU5VU0VEX1BBUkFNKGJ1ZnMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5oCmluZGV4IGQzYmU4
Y2MyOGMxN2MyZGY1ZDNiNDg2NmJiM2M1Zjk0NGM0NTVmMjEuLjQ5NjI4OWNlYTBlNmEwOWQ2ZGI3
MzFmODY4YjU0OTkzYTQ0NDQ5YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmgKQEAgLTUwLDcg
KzUwLDcgQEAgcHVibGljOgogICAgIHZvaWQgaW5zZXJ0RXZlbnRNYXJrZXJFWFQoY29uc3QgU3Ry
aW5nJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBwdXNoR3JvdXBNYXJrZXJFWFQoY29uc3QgU3RyaW5n
Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBwb3BHcm91cE1hcmtlckVYVCh2b2lkKSBvdmVycmlkZTsK
LSAgICB2b2lkIGRyYXdCdWZmZXJzRVhUKEdDR0xzaXplaSwgY29uc3QgR0NHTGVudW0qKSBvdmVy
cmlkZTsKKyAgICB2b2lkIGRyYXdCdWZmZXJzRVhUKEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVtPikg
b3ZlcnJpZGU7CiAKICAgICB2b2lkIGRyYXdBcnJheXNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwg
R0NHTGludCBmaXJzdCwgR0NHTHNpemVpIGNvdW50LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSBvdmVy
cmlkZTsKICAgICB2b2lkIGRyYXdFbGVtZW50c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dM
c2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIGxvbmcgbG9uZyBvZmZzZXQsIEdDR0xzaXplaSBw
cmltY291bnQpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmNw
cAppbmRleCA2ODZmMmQ1MTE0OGVmOWIxMmZlZjEwYjNjMmFjNzBiMmEzNWQyMTU3Li5lOTBjMDY2
MGQyM2MwYmIyY2EyYmRkZjM2ZDY4NGYzOGE5MmQ4ZWRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9u
c0dMT3BlbkdMQ29tbW9uLmNwcApAQCAtMjU5LDcgKzI1OSw3IEBAIHZvaWQgRXh0ZW5zaW9uc0dM
T3BlbkdMQ29tbW9uOjpyZWFkUGl4ZWxzUm9idXN0QU5HTEUoaW50LCBpbnQsIEdDR0xzaXplaSwg
R0NHTHNpCiAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJB
VElPTik7CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjp0ZXhJbWFnZTJEUm9i
dXN0QU5HTEUoR0NHTGVudW0sIGludCwgaW50LCBHQ0dMc2l6ZWksIEdDR0xzaXplaSwgaW50LCBH
Q0dMZW51bSwgR0NHTGVudW0sIEdDR0xzaXplaSwgY29uc3Qgdm9pZCAqKQordm9pZCBFeHRlbnNp
b25zR0xPcGVuR0xDb21tb246OnRleEltYWdlMkRSb2J1c3RBTkdMRShHQ0dMZW51bSwgaW50LCBp
bnQsIEdDR0xzaXplaSwgR0NHTHNpemVpLCBpbnQsIEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTFNw
YW48Y29uc3QgR0NHTHZvaWQ+KQogewogICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3Io
R0xfSU5WQUxJRF9PUEVSQVRJT04pOwogfQpAQCAtMjc0LDM4ICsyNzQsMzggQEAgdm9pZCBFeHRl
bnNpb25zR0xPcGVuR0xDb21tb246OnRleFBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0s
IEdDR0xlbnVtLCBHQ0cKICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFM
SURfT1BFUkFUSU9OKTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OnRleFN1
YkltYWdlMkRSb2J1c3RBTkdMRShHQ0dMZW51bSwgaW50LCBpbnQsIGludCwgR0NHTHNpemVpLCBH
Q0dMc2l6ZWksIEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTHNpemVpLCBjb25zdCB2b2lkICopCit2
b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6dGV4U3ViSW1hZ2UyRFJvYnVzdEFOR0xFKEdD
R0xlbnVtLCBpbnQsIGludCwgaW50LCBHQ0dMc2l6ZWksIEdDR0xzaXplaSwgR0NHTGVudW0sIEdD
R0xlbnVtLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4pCiB7CiAgICAgbV9jb250ZXh0LT5zeW50
aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CiB9CiAKLXZvaWQgRXh0ZW5zaW9u
c0dMT3BlbkdMQ29tbW9uOjpjb21wcmVzc2VkVGV4SW1hZ2UyRFJvYnVzdEFOR0xFKEdDR0xlbnVt
LCBpbnQsIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSwgaW50LCBHQ0dMc2l6ZWksIEdD
R0xzaXplaSwgY29uc3Qgdm9pZCopCit2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Y29t
cHJlc3NlZFRleEltYWdlMkRSb2J1c3RBTkdMRShHQ0dMZW51bSwgaW50LCBHQ0dMZW51bSwgR0NH
THNpemVpLCBHQ0dMc2l6ZWksIGludCwgR0NHTHNpemVpLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9p
ZD4pCiB7CiAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJB
VElPTik7CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpjb21wcmVzc2VkVGV4
U3ViSW1hZ2UyRFJvYnVzdEFOR0xFKEdDR0xlbnVtLCBpbnQsIGludCwgaW50LCBHQ0dMc2l6ZWks
IEdDR0xzaXplaSwgR0NHTGVudW0sIEdDR0xzaXplaSwgR0NHTHNpemVpLCBjb25zdCB2b2lkKikK
K3ZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRFJv
YnVzdEFOR0xFKEdDR0xlbnVtLCBpbnQsIGludCwgaW50LCBHQ0dMc2l6ZWksIEdDR0xzaXplaSwg
R0NHTGVudW0sIEdDR0xzaXplaSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+KQogewogICAgIG1f
Y29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwogfQogCi12
b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Y29tcHJlc3NlZFRleEltYWdlM0RSb2J1c3RB
TkdMRShHQ0dMZW51bSwgaW50LCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWksIEdDR0xz
aXplaSwgaW50LCBHQ0dMc2l6ZWksIEdDR0xzaXplaSwgY29uc3Qgdm9pZCopCit2b2lkIEV4dGVu
c2lvbnNHTE9wZW5HTENvbW1vbjo6Y29tcHJlc3NlZFRleEltYWdlM0RSb2J1c3RBTkdMRShHQ0dM
ZW51bSwgaW50LCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSwgaW50
LCBHQ0dMc2l6ZWksIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPikKIHsKICAgICBtX2NvbnRleHQt
PnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKIH0KIAotdm9pZCBFeHRl
bnNpb25zR0xPcGVuR0xDb21tb246OmNvbXByZXNzZWRUZXhTdWJJbWFnZTNEUm9idXN0QU5HTEUo
R0NHTGVudW0sIGludCwgaW50LCBpbnQsIGludCwgR0NHTHNpemVpLCBHQ0dMc2l6ZWksIEdDR0xz
aXplaSwgR0NHTGVudW0sIEdDR0xzaXplaSwgR0NHTHNpemVpLCBjb25zdCB2b2lkKikKK3ZvaWQg
RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpjb21wcmVzc2VkVGV4U3ViSW1hZ2UzRFJvYnVzdEFO
R0xFKEdDR0xlbnVtLCBpbnQsIGludCwgaW50LCBpbnQsIEdDR0xzaXplaSwgR0NHTHNpemVpLCBH
Q0dMc2l6ZWksIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPikK
IHsKICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9O
KTsKIH0KIAogCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6dGV4SW1hZ2UzRFJvYnVz
dEFOR0xFKEdDR0xlbnVtLCBpbnQsIGludCwgR0NHTHNpemVpLCBHQ0dMc2l6ZWksIEdDR0xzaXpl
aSwgaW50LCBHQ0dMZW51bSwgR0NHTGVudW0sIEdDR0xzaXplaSwgY29uc3Qgdm9pZCAqKQordm9p
ZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OnRleEltYWdlM0RSb2J1c3RBTkdMRShHQ0dMZW51
bSwgaW50LCBpbnQsIEdDR0xzaXplaSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWksIGludCwgR0NHTGVu
dW0sIEdDR0xlbnVtLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4pCiB7CiAgICAgbV9jb250ZXh0
LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CiB9CiAKLXZvaWQgRXh0
ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjp0ZXhTdWJJbWFnZTNEUm9idXN0QU5HTEUoR0NHTGVudW0s
IGludCwgaW50LCBpbnQsIGludCwgR0NHTHNpemVpLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSwgR0NH
TGVudW0sIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIGNvbnN0IHZvaWQgKikKK3ZvaWQgRXh0ZW5zaW9u
c0dMT3BlbkdMQ29tbW9uOjp0ZXhTdWJJbWFnZTNEUm9idXN0QU5HTEUoR0NHTGVudW0sIGludCwg
aW50LCBpbnQsIGludCwgR0NHTHNpemVpLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSwgR0NHTGVudW0s
IEdDR0xlbnVtLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4pCiB7CiAgICAgbV9jb250ZXh0LT5z
eW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdM
Q29tbW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5z
aW9uc0dMT3BlbkdMQ29tbW9uLmgKaW5kZXggOTdlZWRmYjc0ODVjODMyZjc5M2M4Y2ZmMGZhMTdm
YmZmYmU2NTg4ZC4uMTc2Mzc5YWY0MTc0MDc1ZGRhMTQzOWJkNTNjOTY2MzZiYWY3OWRhYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lv
bnNHTE9wZW5HTENvbW1vbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uaApAQCAtNTAsNyArNTAsNyBAQCBwdWJs
aWM6CiAgICAgR0NHTGJvb2xlYW4gaXNWZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybUdMT2JqZWN0KSBv
dmVycmlkZSA9IDA7CiAgICAgdm9pZCBiaW5kVmVydGV4QXJyYXlPRVMoUGxhdGZvcm1HTE9iamVj
dCkgb3ZlcnJpZGUgPSAwOwogCi0gICAgdm9pZCBkcmF3QnVmZmVyc0VYVChHQ0dMc2l6ZWksIGNv
bnN0IEdDR0xlbnVtKikgb3ZlcnJpZGUgPSAwOworICAgIHZvaWQgZHJhd0J1ZmZlcnNFWFQoR0NH
TFNwYW48Y29uc3QgR0NHTGVudW0+KSBvdmVycmlkZSA9IDA7CiAKICAgICBTdHJpbmcgZ2V0VHJh
bnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKFBsYXRmb3JtR0xPYmplY3QpIG92ZXJyaWRlOwogCkBA
IC03MCwxNyArNzAsMTcgQEAgcHVibGljOgogCiAgICAgLy8gR0xfQU5HTEVfcm9idXN0X2NsaWVu
dF9tZW1vcnkKICAgICB2b2lkIHJlYWRQaXhlbHNSb2J1c3RBTkdMRShpbnQgeCwgaW50IHksIEdD
R0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51
bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xzaXplaSAq
Y29sdW1ucywgR0NHTHNpemVpICpyb3dzLCB2b2lkICpwaXhlbHMpIG92ZXJyaWRlOwotICAgIHZv
aWQgdGV4SW1hZ2UyRFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgaW50IGxldmVsLCBpbnQg
aW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgaW50IGJv
cmRlciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
Y29uc3Qgdm9pZCAqcGl4ZWxzKSBvdmVycmlkZTsKKyAgICB2b2lkIHRleEltYWdlMkRSb2J1c3RB
TkdMRShHQ0dMZW51bSB0YXJnZXQsIGludCBsZXZlbCwgaW50IGludGVybmFsZm9ybWF0LCBHQ0dM
c2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1h
dCwgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IHBpeGVscykgb3ZlcnJp
ZGU7CiAgICAgdm9pZCB0ZXhQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMZmxvYXQgKnBhcmFt
cykgb3ZlcnJpZGU7CiAgICAgdm9pZCB0ZXhQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50
ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgdGV4U3ViSW1hZ2UyRFJvYnVzdEFOR0xFKEdD
R0xlbnVtIHRhcmdldCwgaW50IGxldmVsLCBpbnQgeG9mZnNldCwgaW50IHlvZmZzZXQsIEdDR0xz
aXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0
eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3Qgdm9pZCAqcGl4ZWxzKSBvdmVycmlkZTsKLSAg
ICB2b2lkIGNvbXByZXNzZWRUZXhJbWFnZTJEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBp
bnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xz
aXplaSBoZWlnaHQsIGludCBib3JkZXIsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xzaXplaSBi
dWZTaXplLCBjb25zdCB2b2lkKiBkYXRhKSBvdmVycmlkZTsKLSAgICB2b2lkIGNvbXByZXNzZWRU
ZXhTdWJJbWFnZTJEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWwsIGludCB4
b2Zmc2V0LCBpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBH
Q0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xzaXplaSBidWZTaXplLCBj
b25zdCB2b2lkKiBkYXRhKSBvdmVycmlkZTsKLSAgICB2b2lkIGNvbXByZXNzZWRUZXhJbWFnZTNE
Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFs
Zm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0
aCwgaW50IGJvcmRlciwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNv
bnN0IHZvaWQqIGRhdGEpIG92ZXJyaWRlOwotICAgIHZvaWQgY29tcHJlc3NlZFRleFN1YkltYWdl
M0RSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIGludCBsZXZlbCwgaW50IHhvZmZzZXQsIGlu
dCB5b2Zmc2V0LCBpbnQgem9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0
LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTHNpemVpIGltYWdlU2l6ZSwg
R0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IHZvaWQqIGRhdGEpIG92ZXJyaWRlOwotCi0gICAgdm9p
ZCB0ZXhJbWFnZTNEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWwsIGludCBp
bnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6
ZWkgZGVwdGgsIGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NH
THNpemVpIGJ1ZlNpemUsIGNvbnN0IHZvaWQgKnBpeGVscykgb3ZlcnJpZGU7Ci0gICAgdm9pZCB0
ZXhTdWJJbWFnZTNEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWwsIGludCB4
b2Zmc2V0LCBpbnQgeW9mZnNldCwgaW50IHpvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNp
emVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5
cGUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCB2b2lkICpwaXhlbHMpIG92ZXJyaWRlOworICAg
IHZvaWQgdGV4U3ViSW1hZ2UyRFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgaW50IGxldmVs
LCBpbnQgeG9mZnNldCwgaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhl
aWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dM
dm9pZD4gcGl4ZWxzKSBvdmVycmlkZTsKKyAgICB2b2lkIGNvbXByZXNzZWRUZXhJbWFnZTJEUm9i
dXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9y
bWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIGludCBib3JkZXIsIEdDR0xz
aXplaSBpbWFnZVNpemUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRhKSBvdmVycmlkZTsK
KyAgICB2b2lkIGNvbXByZXNzZWRUZXhTdWJJbWFnZTJEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFy
Z2V0LCBpbnQgbGV2ZWwsIGludCB4b2Zmc2V0LCBpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRo
LCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFnZVNpemUs
IEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRhKSBvdmVycmlkZTsKKyAgICB2b2lkIGNvbXBy
ZXNzZWRUZXhJbWFnZTNEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWwsIEdD
R0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQs
IEdDR0xzaXplaSBkZXB0aCwgaW50IGJvcmRlciwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTFNw
YW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEpIG92ZXJyaWRlOworICAgIHZvaWQgY29tcHJlc3NlZFRl
eFN1YkltYWdlM0RSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIGludCBsZXZlbCwgaW50IHhv
ZmZzZXQsIGludCB5b2Zmc2V0LCBpbnQgem9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6
ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTHNpemVpIGlt
YWdlU2l6ZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEpIG92ZXJyaWRlOworCisgICAg
dm9pZCB0ZXhJbWFnZTNEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWwsIGlu
dCBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dM
c2l6ZWkgZGVwdGgsIGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwg
R0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IHBpeGVscykgb3ZlcnJpZGU7CisgICAgdm9pZCB0ZXhT
dWJJbWFnZTNEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWwsIGludCB4b2Zm
c2V0LCBpbnQgeW9mZnNldCwgaW50IHpvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVp
IGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUs
IEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBwaXhlbHMpIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0
UXVlcnlpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlk
ZTsKICAgICB2b2lkIGdldFF1ZXJ5T2JqZWN0dWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1
aW50ICpwYXJhbXMpIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0QnVmZmVyUG9pbnRlcnZSb2J1c3RB
TkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
R0NHTHNpemVpICpsZW5ndGgsIHZvaWQgKipwYXJhbXMpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5H
TEVTLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNp
b25zR0xPcGVuR0xFUy5jcHAKaW5kZXggZDI4ZjRhMDMxZWJkYzQ4Mzg3NWQzOTg0ODdkNTc4NzQ4
ZmRlNDdlNy4uMzZjM2VmMzhmOThiOTlhZjAxMTUwNjk5MTQyN2JhY2VmY2JiOGFjMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNH
TE9wZW5HTEVTLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuY3BwCkBAIC0xODAsNyArMTgwLDcgQEAgdm9pZCBFeHRl
bnNpb25zR0xPcGVuR0xFUzo6YmluZFZlcnRleEFycmF5T0VTKFBsYXRmb3JtR0xPYmplY3QgYXJy
YXkpCiAgICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVS
QVRJT04pOwogfQogCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTEVTOjpkcmF3QnVmZmVyc0VYVChH
Q0dMc2l6ZWkgLyogbiAqLywgY29uc3QgR0NHTGVudW0qIC8qIGJ1ZnMgKi8pCit2b2lkIEV4dGVu
c2lvbnNHTE9wZW5HTEVTOjpkcmF3QnVmZmVyc0VYVChHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4g
LyogYnVmcyAqLykKIHsKICAgICAvLyBGSVhNRTogaW1wbGVtZW50IHRoZSBzdXBwb3J0LgogICAg
IG5vdEltcGxlbWVudGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5oCmluZGV4IGM3NDgy
NWM4MWVhZDBhNzQ2MGFlYTFkYWYxYzlhZTE4MzcwMjkzOTYuLjAxN2E0NWI3Mzk4ZDA5OTJlZDE0
NzY3ZjA3NjdlMDRiNDY0MTYyODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5oCkBAIC04
NSw3ICs4NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRlbGV0ZVZlcnRleEFycmF5T0VTKFBsYXRm
b3JtR0xPYmplY3QpIG92ZXJyaWRlOwogICAgIEdDR0xib29sZWFuIGlzVmVydGV4QXJyYXlPRVMo
UGxhdGZvcm1HTE9iamVjdCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBiaW5kVmVydGV4QXJyYXlPRVMo
UGxhdGZvcm1HTE9iamVjdCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkcmF3QnVmZmVyc0VYVChHQ0dM
c2l6ZWksIGNvbnN0IEdDR0xlbnVtKikgb3ZlcnJpZGU7CisgICAgdm9pZCBkcmF3QnVmZmVyc0VY
VChHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4pIG92ZXJyaWRlOwogCiAgICAgdm9pZCBkcmF3QXJy
YXlzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xzaXplaSBjb3Vu
dCwgR0NHTHNpemVpIHByaW1jb3VudCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkcmF3RWxlbWVudHNJ
bnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBs
b25nIGxvbmcgb2Zmc2V0LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSBvdmVycmlkZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRl
eHRHTE9wZW5HTC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dy
YXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKaW5kZXggMDk5MjY3OGI4ZGMxZTE4M2Q5ODI1OWI3NzMx
NWMzNjEyMTcwMTMwZi4uNTQxMzQ2ZmQxZjg1M2Q0NWJlMzIzYTcyZjJlZjIzNzgwMzkyMDE3OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBo
aWNzQ29udGV4dEdMT3BlbkdMLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKQEAgLTExOSw5ICsxMTksNiBAQCBw
dWJsaWM6CiAgICAgLy8gV2l0aCBtdWx0aXNhbXBsaW5nIG9uLCBibGl0IGZyb20gbXVsdGlzYW1w
bGVGQk8gdG8gcmVndWxhciBGQk8uCiAgICAgdm9pZCBwcmVwYXJlVGV4dHVyZSgpOwogCi0gICAg
Ly8gRXF1aXZhbGVudCB0byA6OmdsVGV4SW1hZ2UyRCgpLiBBbGxvd3MgcGl4ZWxzPT0wIHdpdGgg
bm8gYWxsb2NhdGlvbi4KLSAgICB2b2lkIHRleEltYWdlMkREaXJlY3QoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRo
LCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dM
ZW51bSB0eXBlLCBjb25zdCB2b2lkKiBwaXhlbHMpOwotCiAgICAgLy8gR2V0IGFuIGF0dHJpYnV0
ZSBsb2NhdGlvbiB3aXRob3V0IGNoZWNraW5nIHRoZSBuYW1lIC0+IG1hbmdsZWRuYW1lIG1hcHBp
bmcuCiAgICAgaW50IGdldEF0dHJpYkxvY2F0aW9uRGlyZWN0KFBsYXRmb3JtR0xPYmplY3QgcHJv
Z3JhbSwgY29uc3QgU3RyaW5nJiBuYW1lKTsKIApAQCAtMTI5LDYgKzEyNiw5IEBAIHB1YmxpYzoK
ICAgICB2b2lkIGNvbXBpbGVTaGFkZXJEaXJlY3QoUGxhdGZvcm1HTE9iamVjdCk7CiAKICNpZiAh
VVNFKEFOR0xFKQorICAgIC8vIEVxdWl2YWxlbnQgdG8gOjpnbFRleEltYWdlMkQoKS4gQWxsb3dz
IHBpeGVscz09MCB3aXRoIG5vIGFsbG9jYXRpb24uCisgICAgdm9pZCB0ZXhJbWFnZTJERGlyZWN0
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQs
IEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xl
bnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgY29uc3Qgdm9pZCogcGl4ZWxzKTsKKwogICAgIC8v
IEhlbHBlciB0byB0ZXhJbWFnZTJEIHdpdGggcGl4ZWw9PTAgY2FzZTogcGl4ZWxzIGFyZSBpbml0
aWFsaXplZCB0byAwLgogICAgIC8vIFJldHVybiB0cnVlIGlmIG5vIEdMIGVycm9yIGlzIHN5bnRo
ZXNpemVkLgogICAgIC8vIEJ5IGRlZmF1bHQsIGFsaWdubWVudCBpcyA0LCB0aGUgT3BlbkdMIGRl
ZmF1bHQgc2V0dGluZy4KQEAgLTE1NSw4ICsxNTUsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBibGVu
ZEZ1bmNTZXBhcmF0ZShHQ0dMZW51bSBzcmNSR0IsIEdDR0xlbnVtIGRzdFJHQiwgR0NHTGVudW0g
c3JjQWxwaGEsIEdDR0xlbnVtIGRzdEFscGhhKSBmaW5hbDsKIAogICAgIHZvaWQgYnVmZmVyRGF0
YShHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaXB0ciBzaXplLCBHQ0dMZW51bSB1c2FnZSkgZmlu
YWw7Ci0gICAgdm9pZCBidWZmZXJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpcHRyIHNp
emUsIGNvbnN0IHZvaWQqIGRhdGEsIEdDR0xlbnVtIHVzYWdlKSBmaW5hbDsKLSAgICB2b2lkIGJ1
ZmZlclN1YkRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50cHRyIG9mZnNldCwgR0NHTHNpemVp
cHRyIHNpemUsIGNvbnN0IHZvaWQqIGRhdGEpIGZpbmFsOworICAgIHZvaWQgYnVmZmVyRGF0YShH
Q0dMZW51bSB0YXJnZXQsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRhLCBHQ0dMZW51bSB1
c2FnZSkgZmluYWw7CisgICAgdm9pZCBidWZmZXJTdWJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NH
TGludHB0ciBvZmZzZXQsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRhKSBmaW5hbDsKIAog
ICAgIEdDR0xlbnVtIGNoZWNrRnJhbWVidWZmZXJTdGF0dXMoR0NHTGVudW0gdGFyZ2V0KSBmaW5h
bDsKICAgICB2b2lkIGNsZWFyKEdDR0xiaXRmaWVsZCBtYXNrKSBmaW5hbDsKQEAgLTI1MywzMCAr
MjUzLDMwIEBAIHB1YmxpYzoKICAgICB2b2lkIHN0ZW5jaWxPcChHQ0dMZW51bSBmYWlsLCBHQ0dM
ZW51bSB6ZmFpbCwgR0NHTGVudW0genBhc3MpIGZpbmFsOwogICAgIHZvaWQgc3RlbmNpbE9wU2Vw
YXJhdGUoR0NHTGVudW0gZmFjZSwgR0NHTGVudW0gZmFpbCwgR0NHTGVudW0gemZhaWwsIEdDR0xl
bnVtIHpwYXNzKSBmaW5hbDsKIAotICAgIGJvb2wgdGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQs
IEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgs
IEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xl
bnVtIHR5cGUsIGNvbnN0IHZvaWQqIHBpeGVscykgZmluYWw7CisgICAgYm9vbCB0ZXhJbWFnZTJE
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQs
IEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xl
bnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IHBpeGVs
cykgZmluYWw7CiAgICAgdm9pZCB0ZXhQYXJhbWV0ZXJmKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVu
dW0gcG5hbWUsIEdDR0xmbG9hdCBwYXJhbSkgZmluYWw7CiAgICAgdm9pZCB0ZXhQYXJhbWV0ZXJp
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQgcGFyYW0pIGZpbmFsOwot
ICAgIHZvaWQgdGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdD
R0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXpl
aSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgY29uc3Qgdm9pZCogcGl4
ZWxzKSBmaW5hbDsKKyAgICB2b2lkIHRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
aW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdp
ZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdD
R0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBwaXhlbHMpIGZpbmFsOwogCiAgICAgdm9pZCB1bmlmb3Jt
MWYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGZsb2F0IHgpIGZpbmFsOwotICAgIHZvaWQgdW5pZm9y
bTFmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWksIGNvbnN0IEdDR0xmbG9hdCogdikgZmlu
YWw7CisgICAgdm9pZCB1bmlmb3JtMWZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0
IEdDR0xmbG9hdD4gdikgZmluYWw7CiAgICAgdm9pZCB1bmlmb3JtMWkoR0NHTGludCBsb2NhdGlv
biwgR0NHTGludCB4KSBmaW5hbDsKLSAgICB2b2lkIHVuaWZvcm0xaXYoR0NHTGludCBsb2NhdGlv
biwgR0NHTHNpemVpLCBjb25zdCBHQ0dMaW50KiB2KSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm0x
aXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gdikgZmluYWw7CiAg
ICAgdm9pZCB1bmlmb3JtMmYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGZsb2F0IHgsIEdDR0xmbG9h
dCB5KSBmaW5hbDsKLSAgICB2b2lkIHVuaWZvcm0yZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTHNp
emVpLCBjb25zdCBHQ0dMZmxvYXQqIHYpIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybTJmdihHQ0dM
aW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IHYpIGZpbmFsOwogICAgIHZv
aWQgdW5pZm9ybTJpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xpbnQgeCwgR0NHTGludCB5KSBmaW5h
bDsKLSAgICB2b2lkIHVuaWZvcm0yaXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpLCBjb25z
dCBHQ0dMaW50KiB2KSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm0yaXYoR0NHTGludCBsb2NhdGlv
biwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gdikgZmluYWw7CiAgICAgdm9pZCB1bmlmb3JtM2Yo
R0NHTGludCBsb2NhdGlvbiwgR0NHTGZsb2F0IHgsIEdDR0xmbG9hdCB5LCBHQ0dMZmxvYXQgeikg
ZmluYWw7Ci0gICAgdm9pZCB1bmlmb3JtM2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSwg
Y29uc3QgR0NHTGZsb2F0KiB2KSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm0zZnYoR0NHTGludCBs
b2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiB2KSBmaW5hbDsKICAgICB2b2lkIHVu
aWZvcm0zaShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTGludCB6
KSBmaW5hbDsKLSAgICB2b2lkIHVuaWZvcm0zaXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVp
LCBjb25zdCBHQ0dMaW50KiB2KSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm0zaXYoR0NHTGludCBs
b2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gdikgZmluYWw7CiAgICAgdm9pZCB1bmlm
b3JtNGYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGZsb2F0IHgsIEdDR0xmbG9hdCB5LCBHQ0dMZmxv
YXQgeiwgR0NHTGZsb2F0IHcpIGZpbmFsOwotICAgIHZvaWQgdW5pZm9ybTRmdihHQ0dMaW50IGxv
Y2F0aW9uLCBHQ0dMc2l6ZWksIGNvbnN0IEdDR0xmbG9hdCogdikgZmluYWw7CisgICAgdm9pZCB1
bmlmb3JtNGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gdikg
ZmluYWw7CiAgICAgdm9pZCB1bmlmb3JtNGkoR0NHTGludCBsb2NhdGlvbiwgR0NHTGludCB4LCBH
Q0dMaW50IHksIEdDR0xpbnQgeiwgR0NHTGludCB3KSBmaW5hbDsKLSAgICB2b2lkIHVuaWZvcm00
aXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpLCBjb25zdCBHQ0dMaW50KiB2KSBmaW5hbDsK
LSAgICB2b2lkIHVuaWZvcm1NYXRyaXgyZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpLCBH
Q0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogdmFsdWUpIGZpbmFsOwotICAg
IHZvaWQgdW5pZm9ybU1hdHJpeDNmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWksIEdDR0xi
b29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiB2YWx1ZSkgZmluYWw7Ci0gICAgdm9p
ZCB1bmlmb3JtTWF0cml4NGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSwgR0NHTGJvb2xl
YW4gdHJhbnNwb3NlLCBjb25zdCBHQ0dMZmxvYXQqIHZhbHVlKSBmaW5hbDsKKyAgICB2b2lkIHVu
aWZvcm00aXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gdikgZmlu
YWw7CisgICAgdm9pZCB1bmlmb3JtTWF0cml4MmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29s
ZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiB2YWx1ZSkgZmluYWw7Cisg
ICAgdm9pZCB1bmlmb3JtTWF0cml4M2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRy
YW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiB2YWx1ZSkgZmluYWw7CisgICAgdm9p
ZCB1bmlmb3JtTWF0cml4NGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9z
ZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiB2YWx1ZSkgZmluYWw7CiAKICAgICB2b2lkIHVz
ZVByb2dyYW0oUGxhdGZvcm1HTE9iamVjdCkgZmluYWw7CiAgICAgdm9pZCB2YWxpZGF0ZVByb2dy
YW0oUGxhdGZvcm1HTE9iamVjdCkgZmluYWw7CkBAIC0yODYsMTMgKzI4NiwxMyBAQCBwdWJsaWM6
CiAjZW5kaWYKIAogICAgIHZvaWQgdmVydGV4QXR0cmliMWYoR0NHTHVpbnQgaW5kZXgsIEdDR0xm
bG9hdCB4KSBmaW5hbDsKLSAgICB2b2lkIHZlcnRleEF0dHJpYjFmdihHQ0dMdWludCBpbmRleCwg
Y29uc3QgR0NHTGZsb2F0KiB2YWx1ZXMpIGZpbmFsOworICAgIHZvaWQgdmVydGV4QXR0cmliMWZ2
KEdDR0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQsIDE+IHZhbHVlcykgZmlu
YWw7CiAgICAgdm9pZCB2ZXJ0ZXhBdHRyaWIyZihHQ0dMdWludCBpbmRleCwgR0NHTGZsb2F0IHgs
IEdDR0xmbG9hdCB5KSBmaW5hbDsKLSAgICB2b2lkIHZlcnRleEF0dHJpYjJmdihHQ0dMdWludCBp
bmRleCwgY29uc3QgR0NHTGZsb2F0KiB2YWx1ZXMpIGZpbmFsOworICAgIHZvaWQgdmVydGV4QXR0
cmliMmZ2KEdDR0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQsIDI+IHZhbHVl
cykgZmluYWw7CiAgICAgdm9pZCB2ZXJ0ZXhBdHRyaWIzZihHQ0dMdWludCBpbmRleCwgR0NHTGZs
b2F0IHgsIEdDR0xmbG9hdCB5LCBHQ0dMZmxvYXQgeikgZmluYWw7Ci0gICAgdm9pZCB2ZXJ0ZXhB
dHRyaWIzZnYoR0NHTHVpbnQgaW5kZXgsIGNvbnN0IEdDR0xmbG9hdCogdmFsdWVzKSBmaW5hbDsK
KyAgICB2b2lkIHZlcnRleEF0dHJpYjNmdihHQ0dMdWludCBpbmRleCwgR0NHTFNwYW48Y29uc3Qg
R0NHTGZsb2F0LCAzPiB2YWx1ZXMpIGZpbmFsOwogICAgIHZvaWQgdmVydGV4QXR0cmliNGYoR0NH
THVpbnQgaW5kZXgsIEdDR0xmbG9hdCB4LCBHQ0dMZmxvYXQgeSwgR0NHTGZsb2F0IHosIEdDR0xm
bG9hdCB3KSBmaW5hbDsKLSAgICB2b2lkIHZlcnRleEF0dHJpYjRmdihHQ0dMdWludCBpbmRleCwg
Y29uc3QgR0NHTGZsb2F0KiB2YWx1ZXMpIGZpbmFsOworICAgIHZvaWQgdmVydGV4QXR0cmliNGZ2
KEdDR0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQsIDQ+IHZhbHVlcykgZmlu
YWw7CiAgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJQb2ludGVyKEdDR0x1aW50IGluZGV4LCBHQ0dMaW50
IHNpemUsIEdDR0xlbnVtIHR5cGUsIEdDR0xib29sZWFuIG5vcm1hbGl6ZWQsIEdDR0xzaXplaSBz
dHJpZGUsIEdDR0xpbnRwdHIgb2Zmc2V0KSBmaW5hbDsKIAogICAgIHZvaWQgdmlld3BvcnQoR0NH
TGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkgZmlu
YWw7CkBAIC0zMjMsOCArMzIzLDggQEAgcHVibGljOgogCiAgICAgdm9pZCBibGl0RnJhbWVidWZm
ZXIoR0NHTGludCBzcmNYMCwgR0NHTGludCBzcmNZMCwgR0NHTGludCBzcmNYMSwgR0NHTGludCBz
cmNZMSwgR0NHTGludCBkc3RYMCwgR0NHTGludCBkc3RZMCwgR0NHTGludCBkc3RYMSwgR0NHTGlu
dCBkc3RZMSwgR0NHTGJpdGZpZWxkIG1hc2ssIEdDR0xlbnVtIGZpbHRlcikgZmluYWw7CiAgICAg
dm9pZCBmcmFtZWJ1ZmZlclRleHR1cmVMYXllcihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGF0
dGFjaG1lbnQsIFBsYXRmb3JtR0xPYmplY3QgdGV4dHVyZSwgR0NHTGludCBsZXZlbCwgR0NHTGlu
dCBsYXllcikgZmluYWw7Ci0gICAgdm9pZCBpbnZhbGlkYXRlRnJhbWVidWZmZXIoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMc2l6ZWkgbnVtQXR0YWNobWVudHMsIGNvbnN0IEdDR0xlbnVtKiBhdHRhY2ht
ZW50cykgZmluYWw7Ci0gICAgdm9pZCBpbnZhbGlkYXRlU3ViRnJhbWVidWZmZXIoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMc2l6ZWkgbnVtQXR0YWNobWVudHMsIGNvbnN0IEdDR0xlbnVtKiBhdHRhY2ht
ZW50cywgR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhl
aWdodCkgZmluYWw7CisgICAgdm9pZCBpbnZhbGlkYXRlRnJhbWVidWZmZXIoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4gYXR0YWNobWVudHMpIGZpbmFsOworICAgIHZv
aWQgaW52YWxpZGF0ZVN1YkZyYW1lYnVmZmVyKEdDR0xlbnVtIHRhcmdldCwgR0NHTFNwYW48Y29u
c3QgR0NHTGVudW0+IGF0dGFjaG1lbnRzLCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVp
IHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KSBmaW5hbDsKICAgICB2b2lkIHJlYWRCdWZmZXIoR0NH
TGVudW0gc3JjKSBmaW5hbDsKIAogICAgIC8vIGdldEludGVybmFsRm9ybWF0UGFyYW1ldGVyCkBA
IC0zNDIsMjggKzM0MiwyOCBAQCBwdWJsaWM6CiAgICAgdm9pZCB1bmlmb3JtMnVpKEdDR0xpbnQg
bG9jYXRpb24sIEdDR0x1aW50IHYwLCBHQ0dMdWludCB2MSkgZmluYWw7CiAgICAgdm9pZCB1bmlm
b3JtM3VpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0x1aW50IHYwLCBHQ0dMdWludCB2MSwgR0NHTHVp
bnQgdjIpIGZpbmFsOwogICAgIHZvaWQgdW5pZm9ybTR1aShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dM
dWludCB2MCwgR0NHTHVpbnQgdjEsIEdDR0x1aW50IHYyLCBHQ0dMdWludCB2MykgZmluYWw7Ci0g
ICAgdm9pZCB1bmlmb3JtMXVpdihHQ0dMaW50IGxvY2F0aW9uLCBjb25zdCBHQ0dMdWludCogZGF0
YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpIGZpbmFsOwotICAgIHZv
aWQgdW5pZm9ybTJ1aXYoR0NHTGludCBsb2NhdGlvbiwgY29uc3QgR0NHTHVpbnQqIGRhdGEsIEdD
R0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKSBmaW5hbDsKLSAgICB2b2lkIHVu
aWZvcm0zdWl2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0x1aW50KiBkYXRhLCBHQ0dMdWlu
dCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkgZmluYWw7Ci0gICAgdm9pZCB1bmlmb3Jt
NHVpdihHQ0dMaW50IGxvY2F0aW9uLCBjb25zdCBHQ0dMdWludCogZGF0YSwgR0NHTHVpbnQgc3Jj
T2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpIGZpbmFsOwotICAgIHZvaWQgdW5pZm9ybU1hdHJp
eDJ4M2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NH
TGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkgZmlu
YWw7Ci0gICAgdm9pZCB1bmlmb3JtTWF0cml4M3gyZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJv
b2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNl
dCwgR0NHTHVpbnQgc3JjTGVuZ3RoKSBmaW5hbDsKLSAgICB2b2lkIHVuaWZvcm1NYXRyaXgyeDRm
dihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9h
dCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpIGZpbmFsOwot
ICAgIHZvaWQgdW5pZm9ybU1hdHJpeDR4MmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFu
IHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdD
R0x1aW50IHNyY0xlbmd0aCkgZmluYWw7Ci0gICAgdm9pZCB1bmlmb3JtTWF0cml4M3g0ZnYoR0NH
TGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHQ0dMZmxvYXQqIGRh
dGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKSBmaW5hbDsKLSAgICB2
b2lkIHVuaWZvcm1NYXRyaXg0eDNmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFu
c3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWlu
dCBzcmNMZW5ndGgpIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybTF1aXYoR0NHTGludCBsb2NhdGlv
biwgR0NHTFNwYW48Y29uc3QgR0NHTHVpbnQ+KSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm0ydWl2
KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0x1aW50PikgZmluYWw7CisgICAg
dm9pZCB1bmlmb3JtM3VpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdWlu
dD4pIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybTR1aXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNw
YW48Y29uc3QgR0NHTHVpbnQ+KSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm1NYXRyaXgyeDNmdihH
Q0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdD
R0xmbG9hdD4gZGF0YSkgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtTWF0cml4M3gyZnYoR0NHTGlu
dCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxv
YXQ+IGRhdGEpIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybU1hdHJpeDJ4NGZ2KEdDR0xpbnQgbG9j
YXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiBk
YXRhKSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm1NYXRyaXg0eDJmdihHQ0dMaW50IGxvY2F0aW9u
LCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gZGF0YSkg
ZmluYWw7CisgICAgdm9pZCB1bmlmb3JtTWF0cml4M3g0ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NH
TGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEpIGZpbmFs
OworICAgIHZvaWQgdW5pZm9ybU1hdHJpeDR4M2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29s
ZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiBkYXRhKSBmaW5hbDsKICAg
ICB2b2lkIHZlcnRleEF0dHJpYkk0aShHQ0dMdWludCBpbmRleCwgR0NHTGludCB4LCBHQ0dMaW50
IHksIEdDR0xpbnQgeiwgR0NHTGludCB3KSBmaW5hbDsKLSAgICB2b2lkIHZlcnRleEF0dHJpYkk0
aXYoR0NHTHVpbnQgaW5kZXgsIGNvbnN0IEdDR0xpbnQqIHZhbHVlcykgZmluYWw7CisgICAgdm9p
ZCB2ZXJ0ZXhBdHRyaWJJNGl2KEdDR0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50
LCA0PiB2YWx1ZXMpIGZpbmFsOwogICAgIHZvaWQgdmVydGV4QXR0cmliSTR1aShHQ0dMdWludCBp
bmRleCwgR0NHTHVpbnQgeCwgR0NHTHVpbnQgeSwgR0NHTHVpbnQgeiwgR0NHTHVpbnQgdykgZmlu
YWw7Ci0gICAgdm9pZCB2ZXJ0ZXhBdHRyaWJJNHVpdihHQ0dMdWludCBpbmRleCwgY29uc3QgR0NH
THVpbnQqIHZhbHVlcykgZmluYWw7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJJNHVpdihHQ0dMdWlu
dCBpbmRleCwgR0NHTFNwYW48Y29uc3QgR0NHTHVpbnQsIDQ+IHZhbHVlcykgZmluYWw7CiAgICAg
dm9pZCB2ZXJ0ZXhBdHRyaWJJUG9pbnRlcihHQ0dMdWludCBpbmRleCwgR0NHTGludCBzaXplLCBH
Q0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgc3RyaWRlLCBHQ0dMaW50cHRyIG9mZnNldCkgZmluYWw7
CiAKICAgICB2b2lkIGRyYXdSYW5nZUVsZW1lbnRzKEdDR0xlbnVtIG1vZGUsIEdDR0x1aW50IHN0
YXJ0LCBHQ0dMdWludCBlbmQsIEdDR0xzaXplaSBjb3VudCwgR0NHTGVudW0gdHlwZSwgR0NHTGlu
dHB0ciBvZmZzZXQpIGZpbmFsOwogCi0gICAgdm9pZCBkcmF3QnVmZmVycyhHQ0dMc2l6ZWkgbiwg
Y29uc3QgR0NHTGVudW0qIGJ1ZnMpIGZpbmFsOwotICAgIHZvaWQgY2xlYXJCdWZmZXJpdihHQ0dM
ZW51bSBidWZmZXIsIEdDR0xpbnQgZHJhd2J1ZmZlciwgY29uc3QgR0NHTGludCogdmFsdWVzLCBH
Q0dMdWludCBzcmNPZmZzZXQpIGZpbmFsOwotICAgIHZvaWQgY2xlYXJCdWZmZXJ1aXYoR0NHTGVu
dW0gYnVmZmVyLCBHQ0dMaW50IGRyYXdidWZmZXIsIGNvbnN0IEdDR0x1aW50KiB2YWx1ZXMsIEdD
R0x1aW50IHNyY09mZnNldCkgZmluYWw7Ci0gICAgdm9pZCBjbGVhckJ1ZmZlcmZ2KEdDR0xlbnVt
IGJ1ZmZlciwgR0NHTGludCBkcmF3YnVmZmVyLCBjb25zdCBHQ0dMZmxvYXQqIHZhbHVlcywgR0NH
THVpbnQgc3JjT2Zmc2V0KSBmaW5hbDsKKyAgICB2b2lkIGRyYXdCdWZmZXJzKEdDR0xTcGFuPGNv
bnN0IEdDR0xlbnVtPiBidWZzKSBmaW5hbDsKKyAgICB2b2lkIGNsZWFyQnVmZmVyaXYoR0NHTGVu
dW0gYnVmZmVyLCBHQ0dMaW50IGRyYXdidWZmZXIsIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+IHZh
bHVlcykgZmluYWw7CisgICAgdm9pZCBjbGVhckJ1ZmZlcnVpdihHQ0dMZW51bSBidWZmZXIsIEdD
R0xpbnQgZHJhd2J1ZmZlciwgR0NHTFNwYW48Y29uc3QgR0NHTHVpbnQ+IHZhbHVlcykgZmluYWw7
CisgICAgdm9pZCBjbGVhckJ1ZmZlcmZ2KEdDR0xlbnVtIGJ1ZmZlciwgR0NHTGludCBkcmF3YnVm
ZmVyLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IHZhbHVlcykgZmluYWw7CiAgICAgdm9pZCBj
bGVhckJ1ZmZlcmZpKEdDR0xlbnVtIGJ1ZmZlciwgR0NHTGludCBkcmF3YnVmZmVyLCBHQ0dMZmxv
YXQgZGVwdGgsIEdDR0xpbnQgc3RlbmNpbCkgZmluYWw7CiAKICAgICBQbGF0Zm9ybUdMT2JqZWN0
IGNyZWF0ZVF1ZXJ5KCkgZmluYWw7CkBAIC00MjQsMTkgKzQyNCw2IEBAIHB1YmxpYzoKICAgICB2
b2lkIGNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZl
bCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NH
THNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBjb25zdCB2b2lkKiBzcmNEYXRhLCBHQ0dM
dWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aE92ZXJyaWRlKTsKICNlbmRpZgogCi0g
ICAgdm9pZCB1bmlmb3JtMWZ2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0xmbG9hdCogZGF0
YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpIGZpbmFsOwotICAgIHZv
aWQgdW5pZm9ybTJmdihHQ0dMaW50IGxvY2F0aW9uLCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdD
R0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKSBmaW5hbDsKLSAgICB2b2lkIHVu
aWZvcm0zZnYoR0NHTGludCBsb2NhdGlvbiwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWlu
dCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkgZmluYWw7Ci0gICAgdm9pZCB1bmlmb3Jt
NGZ2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3Jj
T2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpIGZpbmFsOwotCi0gICAgdm9pZCB1bmlmb3JtMWl2
KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0xpbnQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNl
dCwgR0NHTHVpbnQgc3JjTGVuZ3RoKSBmaW5hbDsKLSAgICB2b2lkIHVuaWZvcm0yaXYoR0NHTGlu
dCBsb2NhdGlvbiwgY29uc3QgR0NHTGludCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dM
dWludCBzcmNMZW5ndGgpIGZpbmFsOwotICAgIHZvaWQgdW5pZm9ybTNpdihHQ0dMaW50IGxvY2F0
aW9uLCBjb25zdCBHQ0dMaW50KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNy
Y0xlbmd0aCkgZmluYWw7Ci0gICAgdm9pZCB1bmlmb3JtNGl2KEdDR0xpbnQgbG9jYXRpb24sIGNv
bnN0IEdDR0xpbnQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3Ro
KSBmaW5hbDsKLQotICAgIHZvaWQgdW5pZm9ybU1hdHJpeDJmdihHQ0dMaW50IGxvY2F0aW9uLCBH
Q0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3Jj
T2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpIGZpbmFsOwotICAgIHZvaWQgdW5pZm9ybU1hdHJp
eDNmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xm
bG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpIGZpbmFs
OwotICAgIHZvaWQgdW5pZm9ybU1hdHJpeDRmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVh
biB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBH
Q0dMdWludCBzcmNMZW5ndGgpIGZpbmFsOwogICAgIHZvaWQgZ2V0QWN0aXZlVW5pZm9ybUJsb2Nr
aXYoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTHVpbnQgdW5pZm9ybUJsb2NrSW5kZXgsIEdDR0xlbnVt
IHBuYW1lLCBHQ0dMU3BhbjxHQ0dMaW50PiBwYXJhbXMpIGZpbmFsOwogCiAjaWYgIVVTRShBTkdM
RSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9H
cmFwaGljc0NvbnRleHRHTE9wZW5HTENvbW1vbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb21tb24uY3BwCmluZGV4
IGFiYjdlMjVhMDZmMDg1Y2NlYWNmZjVhYjZlODIwNDU3Y2U5YTJkOTMuLmViYjNmOWMxYTIzZWQ5
NGE2Yjg5ZjRlNTM0ZTc1YTFlYzBhMzNhNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvbW1vbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMQ29tbW9uLmNwcApAQCAtNTUyLDIwICs1NTIsMjAgQEAgdm9pZCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6YnVmZmVyRGF0YShHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaXB0
ciBzaXplLCBHQ0cKICAgICA6OmdsQnVmZmVyRGF0YSh0YXJnZXQsIHNpemUsIDAsIHVzYWdlKTsK
IH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6YnVmZmVyRGF0YShHQ0dMZW51bSB0
YXJnZXQsIEdDR0xzaXplaXB0ciBzaXplLCBjb25zdCB2b2lkKiBkYXRhLCBHQ0dMZW51bSB1c2Fn
ZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmJ1ZmZlckRhdGEoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMU3Bhbjxjb25zdCB2b2lkPiBkYXRhLCBHQ0dMZW51bSB1c2FnZSkKIHsKICAgICBp
ZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICA6OmdsQnVm
ZmVyRGF0YSh0YXJnZXQsIHNpemUsIGRhdGEsIHVzYWdlKTsKKyAgICA6OmdsQnVmZmVyRGF0YSh0
YXJnZXQsIGRhdGEuYnVmU2l6ZSwgZGF0YS5kYXRhLCB1c2FnZSk7CiB9CiAKLXZvaWQgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmJ1ZmZlclN1YkRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50
cHRyIG9mZnNldCwgR0NHTHNpemVpcHRyIHNpemUsIGNvbnN0IHZvaWQqIGRhdGEpCit2b2lkIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpidWZmZXJTdWJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NH
TGludHB0ciBvZmZzZXQsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRhKQogewogICAgIGlm
ICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIDo6Z2xCdWZm
ZXJTdWJEYXRhKHRhcmdldCwgb2Zmc2V0LCBzaXplLCBkYXRhKTsKKyAgICA6OmdsQnVmZmVyU3Vi
RGF0YSh0YXJnZXQsIG9mZnNldCwgZGF0YS5idWZTaXplLCBkYXRhLmRhdGEpOwogfQogCiBHQ0dM
ZW51bSBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhHQ0dM
ZW51bSB0YXJnZXQpCkBAIC0xNDE1LDEyICsxNDE1LDEyIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OnVuaWZvcm0xZihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMZmxvYXQgdjApCiAgICAg
OjpnbFVuaWZvcm0xZihsb2NhdGlvbiwgdjApOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjp1bmlmb3JtMWZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBzaXplLCBjb25z
dCBHQ0dMZmxvYXQqIGFycmF5KQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9y
bTFmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGFycmF5KQog
ewogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAg
IDo6Z2xVbmlmb3JtMWZ2KGxvY2F0aW9uLCBzaXplLCBhcnJheSk7CisgICAgOjpnbFVuaWZvcm0x
ZnYobG9jYXRpb24sIGFycmF5LmJ1ZlNpemUsIGFycmF5KTsKIH0KIAogdm9pZCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6dW5pZm9ybTJmKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xmbG9hdCB2MCwg
R0NHTGZsb2F0IHYxKQpAQCAtMTQzMSwxMyArMTQzMSwxMyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjp1bmlmb3JtMmYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGZsb2F0IHYwLCBHQ0dM
ZmxvYQogICAgIDo6Z2xVbmlmb3JtMmYobG9jYXRpb24sIHYwLCB2MSk7CiB9CiAKLXZvaWQgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0yZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTHNp
emVpIHNpemUsIGNvbnN0IEdDR0xmbG9hdCogYXJyYXkpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjp1bmlmb3JtMmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xm
bG9hdD4gYXJyYXkpCiB7Ci0gICAgLy8gRklYTUU6IGxlbmd0aCBuZWVkcyB0byBiZSBhIG11bHRp
cGxlIG9mIDIuCisgICAgQVNTRVJUKCEoYXJyYXkuYnVmU2l6ZSAlIDIpKTsKICAgICBpZiAoIW1h
a2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICA6OmdsVW5pZm9ybTJm
dihsb2NhdGlvbiwgc2l6ZSwgYXJyYXkpOworICAgIDo6Z2xVbmlmb3JtMmZ2KGxvY2F0aW9uLCBh
cnJheS5idWZTaXplIC8gMiwgYXJyYXkpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjp1bmlmb3JtM2YoR0NHTGludCBsb2NhdGlvbiwgR0NHTGZsb2F0IHYwLCBHQ0dMZmxvYXQg
djEsIEdDR0xmbG9hdCB2MikKQEAgLTE0NDgsMTMgKzE0NDgsMTMgQEAgdm9pZCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6dW5pZm9ybTNmKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xmbG9hdCB2MCwg
R0NHTGZsb2EKICAgICA6OmdsVW5pZm9ybTNmKGxvY2F0aW9uLCB2MCwgdjEsIHYyKTsKIH0KIAot
dm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTNmdihHQ0dMaW50IGxvY2F0aW9u
LCBHQ0dMc2l6ZWkgc2l6ZSwgY29uc3QgR0NHTGZsb2F0KiBhcnJheSkKK3ZvaWQgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OnVuaWZvcm0zZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29u
c3QgR0NHTGZsb2F0PiBhcnJheSkKIHsKLSAgICAvLyBGSVhNRTogbGVuZ3RoIG5lZWRzIHRvIGJl
IGEgbXVsdGlwbGUgb2YgMy4KKyAgICBBU1NFUlQoIShhcnJheS5idWZTaXplICUgMykpOwogICAg
IGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIDo6Z2xV
bmlmb3JtM2Z2KGxvY2F0aW9uLCBzaXplLCBhcnJheSk7CisgICAgOjpnbFVuaWZvcm0zZnYobG9j
YXRpb24sIGFycmF5LmJ1ZlNpemUgLyAzLCBhcnJheSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OnVuaWZvcm00ZihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMZmxvYXQgdjAsIEdD
R0xmbG9hdCB2MSwgR0NHTGZsb2F0IHYyLCBHQ0dMZmxvYXQgdjMpCkBAIC0xNDY1LDEzICsxNDY1
LDEzIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm00ZihHQ0dMaW50IGxv
Y2F0aW9uLCBHQ0dMZmxvYXQgdjAsIEdDR0xmbG9hCiAgICAgOjpnbFVuaWZvcm00Zihsb2NhdGlv
biwgdjAsIHYxLCB2MiwgdjMpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1
bmlmb3JtNGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBzaXplLCBjb25zdCBHQ0dMZmxv
YXQqIGFycmF5KQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTRmdihHQ0dM
aW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGFycmF5KQogewotICAgIC8v
IEZJWE1FOiBsZW5ndGggbmVlZHMgdG8gYmUgYSBtdWx0aXBsZSBvZiA0LgorICAgIEFTU0VSVCgh
KGFycmF5LmJ1ZlNpemUgJSA0KSk7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgOjpnbFVuaWZvcm00ZnYobG9jYXRpb24sIHNpemUsIGFycmF5
KTsKKyAgICA6OmdsVW5pZm9ybTRmdihsb2NhdGlvbiwgYXJyYXkuYnVmU2l6ZSAvIDQsIGFycmF5
KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTFpKEdDR0xpbnQg
bG9jYXRpb24sIEdDR0xpbnQgdjApCkBAIC0xNDgyLDEyICsxNDgyLDEyIEBAIHZvaWQgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0xaShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMaW50IHYw
KQogICAgIDo6Z2xVbmlmb3JtMWkobG9jYXRpb24sIHYwKTsKIH0KIAotdm9pZCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6dW5pZm9ybTFpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgc2l6
ZSwgY29uc3QgR0NHTGludCogYXJyYXkpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1
bmlmb3JtMWl2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+IGFycmF5
KQogewogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIDo6Z2xVbmlmb3JtMWl2KGxvY2F0aW9uLCBzaXplLCBhcnJheSk7CisgICAgOjpnbFVuaWZv
cm0xaXYobG9jYXRpb24sIGFycmF5LmJ1ZlNpemUsIGFycmF5KTsKIH0KIAogdm9pZCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTJpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xpbnQgdjAs
IEdDR0xpbnQgdjEpCkBAIC0xNDk4LDEzICsxNDk4LDEzIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OnVuaWZvcm0yaShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMaW50IHYwLCBHQ0dMaW50
IHYxCiAgICAgOjpnbFVuaWZvcm0yaShsb2NhdGlvbiwgdjAsIHYxKTsKIH0KIAotdm9pZCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTJpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6
ZWkgc2l6ZSwgY29uc3QgR0NHTGludCogYXJyYXkpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjp1bmlmb3JtMml2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+
IGFycmF5KQogewotICAgIC8vIEZJWE1FOiBsZW5ndGggbmVlZHMgdG8gYmUgYSBtdWx0aXBsZSBv
ZiAyLgorICAgIEFTU0VSVCghKGFycmF5LmJ1ZlNpemUgJSAyKSk7CiAgICAgaWYgKCFtYWtlQ29u
dGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgOjpnbFVuaWZvcm0yaXYobG9j
YXRpb24sIHNpemUsIGFycmF5KTsKKyAgICA6OmdsVW5pZm9ybTJpdihsb2NhdGlvbiwgYXJyYXku
YnVmU2l6ZSAvIDIsIGFycmF5KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
dW5pZm9ybTNpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xpbnQgdjAsIEdDR0xpbnQgdjEsIEdDR0xp
bnQgdjIpCkBAIC0xNTE1LDEzICsxNTE1LDEzIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OnVuaWZvcm0zaShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMaW50IHYwLCBHQ0dMaW50IHYxCiAg
ICAgOjpnbFVuaWZvcm0zaShsb2NhdGlvbiwgdjAsIHYxLCB2Mik7CiB9CiAKLXZvaWQgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0zaXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVp
IHNpemUsIGNvbnN0IEdDR0xpbnQqIGFycmF5KQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6dW5pZm9ybTNpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50PiBh
cnJheSkKIHsKLSAgICAvLyBGSVhNRTogbGVuZ3RoIG5lZWRzIHRvIGJlIGEgbXVsdGlwbGUgb2Yg
My4KKyAgICBBU1NFUlQoIShhcnJheS5idWZTaXplICUgMykpOwogICAgIGlmICghbWFrZUNvbnRl
eHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIDo6Z2xVbmlmb3JtM2l2KGxvY2F0
aW9uLCBzaXplLCBhcnJheSk7CisgICAgOjpnbFVuaWZvcm0zaXYobG9jYXRpb24sIGFycmF5LmJ1
ZlNpemUgLyAzLCBhcnJheSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVu
aWZvcm00aShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMaW50IHYwLCBHQ0dMaW50IHYxLCBHQ0dMaW50
IHYyLCBHQ0dMaW50IHYzKQpAQCAtMTUzMiw0MCArMTUzMiw0MCBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjp1bmlmb3JtNGkoR0NHTGludCBsb2NhdGlvbiwgR0NHTGludCB2MCwgR0NH
TGludCB2MQogICAgIDo6Z2xVbmlmb3JtNGkobG9jYXRpb24sIHYwLCB2MSwgdjIsIHYzKTsKIH0K
IAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTRpdihHQ0dMaW50IGxvY2F0
aW9uLCBHQ0dMc2l6ZWkgc2l6ZSwgY29uc3QgR0NHTGludCogYXJyYXkpCit2b2lkIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjp1bmlmb3JtNGl2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNv
bnN0IEdDR0xpbnQ+IGFycmF5KQogewotICAgIC8vIEZJWE1FOiBsZW5ndGggbmVlZHMgdG8gYmUg
YSBtdWx0aXBsZSBvZiA0LgorICAgIEFTU0VSVCghKGFycmF5LmJ1ZlNpemUgJSA0KSk7CiAgICAg
aWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgOjpnbFVu
aWZvcm00aXYobG9jYXRpb24sIHNpemUsIGFycmF5KTsKKyAgICA6OmdsVW5pZm9ybTRpdihsb2Nh
dGlvbiwgYXJyYXkuYnVmU2l6ZSAvIDQsIGFycmF5KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6dW5pZm9ybU1hdHJpeDJmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkg
c2l6ZSwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHQ0dMZmxvYXQqIGFycmF5KQordm9p
ZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybU1hdHJpeDJmdihHQ0dMaW50IGxvY2F0
aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gYXJy
YXkpCiB7Ci0gICAgLy8gRklYTUU6IGxlbmd0aCBuZWVkcyB0byBiZSBhIG11bHRpcGxlIG9mIDQu
CisgICAgQVNTRVJUKCEoYXJyYXkuYnVmU2l6ZSAlIDQpKTsKICAgICBpZiAoIW1ha2VDb250ZXh0
Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICA6OmdsVW5pZm9ybU1hdHJpeDJmdihs
b2NhdGlvbiwgc2l6ZSwgdHJhbnNwb3NlLCBhcnJheSk7CisgICAgOjpnbFVuaWZvcm1NYXRyaXgy
ZnYobG9jYXRpb24sIGFycmF5LmJ1ZlNpemUgLyA0LCB0cmFuc3Bvc2UsIGFycmF5KTsKIH0KIAot
dm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybU1hdHJpeDNmdihHQ0dMaW50IGxv
Y2F0aW9uLCBHQ0dMc2l6ZWkgc2l6ZSwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHQ0dM
ZmxvYXQqIGFycmF5KQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybU1hdHJp
eDNmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNv
bnN0IEdDR0xmbG9hdD4gYXJyYXkpCiB7Ci0gICAgLy8gRklYTUU6IGxlbmd0aCBuZWVkcyB0byBi
ZSBhIG11bHRpcGxlIG9mIDkuCisgICAgQVNTRVJUKCEoYXJyYXkuYnVmU2l6ZSAlIDkpKTsKICAg
ICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICA6Omds
VW5pZm9ybU1hdHJpeDNmdihsb2NhdGlvbiwgc2l6ZSwgdHJhbnNwb3NlLCBhcnJheSk7CisgICAg
OjpnbFVuaWZvcm1NYXRyaXgzZnYobG9jYXRpb24sIGFycmF5LmJ1ZlNpemUgLyA5LCB0cmFuc3Bv
c2UsIGFycmF5KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybU1h
dHJpeDRmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgc2l6ZSwgR0NHTGJvb2xlYW4gdHJh
bnNwb3NlLCBjb25zdCBHQ0dMZmxvYXQqIGFycmF5KQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6dW5pZm9ybU1hdHJpeDRmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFu
c3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gYXJyYXkpCiB7Ci0gICAgLy8gRklYTUU6
IGxlbmd0aCBuZWVkcyB0byBiZSBhIG11bHRpcGxlIG9mIDE2LgorICAgIEFTU0VSVCghKGFycmF5
LmJ1ZlNpemUgJSAxNikpOwogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIDo6Z2xVbmlmb3JtTWF0cml4NGZ2KGxvY2F0aW9uLCBzaXplLCB0cmFu
c3Bvc2UsIGFycmF5KTsKKyAgICA6OmdsVW5pZm9ybU1hdHJpeDRmdihsb2NhdGlvbiwgYXJyYXku
YnVmU2l6ZSAvIDE2LCB0cmFuc3Bvc2UsIGFycmF5KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6dXNlUHJvZ3JhbShQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0pCkBAIC0xNTk0
LDcgKzE1OTQsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2ZXJ0ZXhBdHRyaWIx
ZihHQ0dMdWludCBpbmRleCwgR0NHTGZsb2F0IHYwKQogICAgIDo6Z2xWZXJ0ZXhBdHRyaWIxZihp
bmRleCwgdjApOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2ZXJ0ZXhBdHRy
aWIxZnYoR0NHTHVpbnQgaW5kZXgsIGNvbnN0IEdDR0xmbG9hdCogYXJyYXkpCit2b2lkIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjp2ZXJ0ZXhBdHRyaWIxZnYoR0NHTHVpbnQgaW5kZXgsIEdDR0xT
cGFuPGNvbnN0IEdDR0xmbG9hdD4gYXJyYXkpCiB7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJl
bnQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTYxMCw3ICsxNjEwLDcgQEAgdm9pZCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliMmYoR0NHTHVpbnQgaW5kZXgsIEdDR0xmbG9h
dCB2MCwgR0NHTGYKICAgICA6OmdsVmVydGV4QXR0cmliMmYoaW5kZXgsIHYwLCB2MSk7CiB9CiAK
LXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYjJmdihHQ0dMdWludCBp
bmRleCwgY29uc3QgR0NHTGZsb2F0KiBhcnJheSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OnZlcnRleEF0dHJpYjJmdihHQ0dMdWludCBpbmRleCwgR0NHTFNwYW48Y29uc3QgR0NHTGZs
b2F0PiBhcnJheSkKIHsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICBy
ZXR1cm47CkBAIC0xNjI2LDcgKzE2MjYsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
Ojp2ZXJ0ZXhBdHRyaWIzZihHQ0dMdWludCBpbmRleCwgR0NHTGZsb2F0IHYwLCBHQ0dMZgogICAg
IDo6Z2xWZXJ0ZXhBdHRyaWIzZihpbmRleCwgdjAsIHYxLCB2Mik7CiB9CiAKLXZvaWQgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYjNmdihHQ0dMdWludCBpbmRleCwgY29uc3Qg
R0NHTGZsb2F0KiBhcnJheSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZlcnRleEF0
dHJpYjNmdihHQ0dMdWludCBpbmRleCwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiBhcnJheSkK
IHsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CkBAIC0x
NjQyLDcgKzE2NDIsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2ZXJ0ZXhBdHRy
aWI0ZihHQ0dMdWludCBpbmRleCwgR0NHTGZsb2F0IHYwLCBHQ0dMZgogICAgIDo6Z2xWZXJ0ZXhB
dHRyaWI0ZihpbmRleCwgdjAsIHYxLCB2MiwgdjMpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjp2ZXJ0ZXhBdHRyaWI0ZnYoR0NHTHVpbnQgaW5kZXgsIGNvbnN0IEdDR0xmbG9h
dCogYXJyYXkpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2ZXJ0ZXhBdHRyaWI0ZnYo
R0NHTHVpbnQgaW5kZXgsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gYXJyYXkpCiB7CiAgICAg
aWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjM5NSwxNyAr
MjM5NSwxNSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpmcmFtZWJ1ZmZlclRleHR1
cmVMYXllcihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtCiAgICAgVU5VU0VEX1BBUkFNKGxheWVy
KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6aW52YWxpZGF0ZUZyYW1lYnVm
ZmVyKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpIG51bUF0dGFjaG1lbnRzLCBjb25zdCBHQ0dM
ZW51bSogYXR0YWNobWVudHMpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjppbnZhbGlk
YXRlRnJhbWVidWZmZXIoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4g
YXR0YWNobWVudHMpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHRhcmdldCk7Ci0gICAgVU5VU0VEX1BB
UkFNKG51bUF0dGFjaG1lbnRzKTsKICAgICBVTlVTRURfUEFSQU0oYXR0YWNobWVudHMpOwogfQog
Ci12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjppbnZhbGlkYXRlU3ViRnJhbWVidWZmZXIo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgbnVtQXR0YWNobWVudHMsIGNvbnN0IEdDR0xlbnVt
KiBhdHRhY2htZW50cywgR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NH
THNpemVpIGhlaWdodCkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmludmFsaWRhdGVT
dWJGcmFtZWJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQsIEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVtPiBh
dHRhY2htZW50cywgR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNp
emVpIGhlaWdodCkKIHsKICAgICBVTlVTRURfUEFSQU0odGFyZ2V0KTsKLSAgICBVTlVTRURfUEFS
QU0obnVtQXR0YWNobWVudHMpOwogICAgIFVOVVNFRF9QQVJBTShhdHRhY2htZW50cyk7CiAgICAg
VU5VU0VEX1BBUkFNKHgpOwogICAgIFVOVVNFRF9QQVJBTSh5KTsKQEAgLTI1MjksOTAgKzI1Mjcs
NzAgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTR1aShHQ0dMaW50IGxv
Y2F0aW9uLCBHQ0dMdWludCB2MCwgR0NHTHVpbnQKICAgICBVTlVTRURfUEFSQU0odjMpOwogfQog
Ci12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMXVpdihHQ0dMaW50IGxvY2F0
aW9uLCBjb25zdCBHQ0dMdWludCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBz
cmNMZW5ndGgpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMXVpdihHQ0dM
aW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdWludD4gZGF0YSkKIHsKICAgICBVTlVT
RURfUEFSQU0obG9jYXRpb24pOwogICAgIFVOVVNFRF9QQVJBTShkYXRhKTsKLSAgICBVTlVTRURf
UEFSQU0oc3JjT2Zmc2V0KTsKLSAgICBVTlVTRURfUEFSQU0oc3JjTGVuZ3RoKTsKIH0KIAotdm9p
ZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTJ1aXYoR0NHTGludCBsb2NhdGlvbiwg
Y29uc3QgR0NHTHVpbnQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVu
Z3RoKQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTJ1aXYoR0NHTGludCBs
b2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTHVpbnQ+IGRhdGEpCiB7CiAgICAgVU5VU0VEX1BB
UkFNKGxvY2F0aW9uKTsKICAgICBVTlVTRURfUEFSQU0oZGF0YSk7Ci0gICAgVU5VU0VEX1BBUkFN
KHNyY09mZnNldCk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY0xlbmd0aCk7CiB9CiAKLXZvaWQgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0zdWl2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0
IEdDR0x1aW50KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkK
K3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0zdWl2KEdDR0xpbnQgbG9jYXRp
b24sIEdDR0xTcGFuPGNvbnN0IEdDR0x1aW50PiBkYXRhKQogewogICAgIFVOVVNFRF9QQVJBTShs
b2NhdGlvbik7CiAgICAgVU5VU0VEX1BBUkFNKGRhdGEpOwotICAgIFVOVVNFRF9QQVJBTShzcmNP
ZmZzZXQpOwotICAgIFVOVVNFRF9QQVJBTShzcmNMZW5ndGgpOwogfQogCi12b2lkIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjp1bmlmb3JtNHVpdihHQ0dMaW50IGxvY2F0aW9uLCBjb25zdCBHQ0dM
dWludCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCit2b2lk
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtNHVpdihHQ0dMaW50IGxvY2F0aW9uLCBH
Q0dMU3Bhbjxjb25zdCBHQ0dMdWludD4gZGF0YSkKIHsKICAgICBVTlVTRURfUEFSQU0obG9jYXRp
b24pOwogICAgIFVOVVNFRF9QQVJBTShkYXRhKTsKLSAgICBVTlVTRURfUEFSQU0oc3JjT2Zmc2V0
KTsKLSAgICBVTlVTRURfUEFSQU0oc3JjTGVuZ3RoKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6dW5pZm9ybU1hdHJpeDJ4M2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29s
ZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQs
IEdDR0x1aW50IHNyY0xlbmd0aCkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZv
cm1NYXRyaXgyeDNmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdD
R0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gZGF0YSkKIHsKICAgICBVTlVTRURfUEFSQU0obG9jYXRp
b24pOwogICAgIFVOVVNFRF9QQVJBTSh0cmFuc3Bvc2UpOwogICAgIFVOVVNFRF9QQVJBTShkYXRh
KTsKLSAgICBVTlVTRURfUEFSQU0oc3JjT2Zmc2V0KTsKLSAgICBVTlVTRURfUEFSQU0oc3JjTGVu
Z3RoKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybU1hdHJpeDN4
MmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZs
b2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKK3ZvaWQg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXgzeDJmdihHQ0dMaW50IGxvY2F0
aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gZGF0
YSkKIHsKICAgICBVTlVTRURfUEFSQU0obG9jYXRpb24pOwogICAgIFVOVVNFRF9QQVJBTSh0cmFu
c3Bvc2UpOwogICAgIFVOVVNFRF9QQVJBTShkYXRhKTsKLSAgICBVTlVTRURfUEFSQU0oc3JjT2Zm
c2V0KTsKLSAgICBVTlVTRURfUEFSQU0oc3JjTGVuZ3RoKTsKIH0KIAotdm9pZCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6dW5pZm9ybU1hdHJpeDJ4NGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xi
b29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZz
ZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVu
aWZvcm1NYXRyaXgyeDRmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2Us
IEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gZGF0YSkKIHsKICAgICBVTlVTRURfUEFSQU0obG9j
YXRpb24pOwogICAgIFVOVVNFRF9QQVJBTSh0cmFuc3Bvc2UpOwogICAgIFVOVVNFRF9QQVJBTShk
YXRhKTsKLSAgICBVTlVTRURfUEFSQU0oc3JjT2Zmc2V0KTsKLSAgICBVTlVTRURfUEFSQU0oc3Jj
TGVuZ3RoKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybU1hdHJp
eDR4MmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NH
TGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKK3Zv
aWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXg0eDJmdihHQ0dMaW50IGxv
Y2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4g
ZGF0YSkKIHsKICAgICBVTlVTRURfUEFSQU0obG9jYXRpb24pOwogICAgIFVOVVNFRF9QQVJBTSh0
cmFuc3Bvc2UpOwogICAgIFVOVVNFRF9QQVJBTShkYXRhKTsKLSAgICBVTlVTRURfUEFSQU0oc3Jj
T2Zmc2V0KTsKLSAgICBVTlVTRURfUEFSQU0oc3JjTGVuZ3RoKTsKIH0KIAotdm9pZCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybU1hdHJpeDN4NGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdD
R0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNP
ZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OnVuaWZvcm1NYXRyaXgzeDRmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bv
c2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gZGF0YSkKIHsKICAgICBVTlVTRURfUEFSQU0o
bG9jYXRpb24pOwogICAgIFVOVVNFRF9QQVJBTSh0cmFuc3Bvc2UpOwogICAgIFVOVVNFRF9QQVJB
TShkYXRhKTsKLSAgICBVTlVTRURfUEFSQU0oc3JjT2Zmc2V0KTsKLSAgICBVTlVTRURfUEFSQU0o
c3JjTGVuZ3RoKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybU1h
dHJpeDR4M2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3Qg
R0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkK
K3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXg0eDNmdihHQ0dMaW50
IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9h
dD4gZGF0YSkKIHsKICAgICBVTlVTRURfUEFSQU0obG9jYXRpb24pOwogICAgIFVOVVNFRF9QQVJB
TSh0cmFuc3Bvc2UpOwogICAgIFVOVVNFRF9QQVJBTShkYXRhKTsKLSAgICBVTlVTRURfUEFSQU0o
c3JjT2Zmc2V0KTsKLSAgICBVTlVTRURfUEFSQU0oc3JjTGVuZ3RoKTsKIH0KIAogdm9pZCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliSTRpKEdDR0x1aW50IGluZGV4LCBHQ0dM
aW50IHgsIEdDR0xpbnQgeSwgR0NHTGludCB6LCBHQ0dMaW50IHcpCkBAIC0yNjI0LDcgKzI2MDIs
NyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2ZXJ0ZXhBdHRyaWJJNGkoR0NHTHVp
bnQgaW5kZXgsIEdDR0xpbnQgeCwgR0NHTGludAogICAgIFVOVVNFRF9QQVJBTSh3KTsKIH0KIAot
dm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliSTRpdihHQ0dMdWludCBp
bmRleCwgY29uc3QgR0NHTGludCogdmFsdWVzKQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6dmVydGV4QXR0cmliSTRpdihHQ0dMdWludCBpbmRleCwgR0NHTFNwYW48Y29uc3QgR0NHTGlu
dD4gdmFsdWVzKQogewogICAgIFVOVVNFRF9QQVJBTShpbmRleCk7CiAgICAgVU5VU0VEX1BBUkFN
KHZhbHVlcyk7CkBAIC0yNjM5LDcgKzI2MTcsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjp2ZXJ0ZXhBdHRyaWJJNHVpKEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCB4LCBHQ0dMdQog
ICAgIFVOVVNFRF9QQVJBTSh3KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
dmVydGV4QXR0cmliSTR1aXYoR0NHTHVpbnQgaW5kZXgsIGNvbnN0IEdDR0x1aW50KiB2YWx1ZXMp
Cit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2ZXJ0ZXhBdHRyaWJJNHVpdihHQ0dMdWlu
dCBpbmRleCwgR0NHTFNwYW48Y29uc3QgR0NHTHVpbnQ+IHZhbHVlcykKIHsKICAgICBVTlVTRURf
UEFSQU0oaW5kZXgpOwogICAgIFVOVVNFRF9QQVJBTSh2YWx1ZXMpOwpAQCAtMjY2NCwzNCArMjY0
MiwzMCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpkcmF3UmFuZ2VFbGVtZW50cyhH
Q0dMZW51bSBtb2RlLCBHQ0dMdWludCBzdGFydCwgRwogICAgIFVOVVNFRF9QQVJBTShvZmZzZXQp
OwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpkcmF3QnVmZmVycyhHQ0dMc2l6
ZWkgbiwgY29uc3QgR0NHTGVudW0qIGJ1ZnMpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpkcmF3QnVmZmVycyhHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4gYnVmcykKIHsKLSAgICBVTlVT
RURfUEFSQU0obik7CiAgICAgVU5VU0VEX1BBUkFNKGJ1ZnMpOwogfQogCi12b2lkIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpjbGVhckJ1ZmZlcml2KEdDR0xlbnVtIGJ1ZmZlciwgR0NHTGludCBk
cmF3YnVmZmVyLCBjb25zdCBHQ0dMaW50KiB2YWx1ZXMsIEdDR0x1aW50IHNyY09mZnNldCkKK3Zv
aWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNsZWFyQnVmZmVyaXYoR0NHTGVudW0gYnVmZmVy
LCBHQ0dMaW50IGRyYXdidWZmZXIsIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+IHZhbHVlcykKIHsK
ICAgICBVTlVTRURfUEFSQU0oYnVmZmVyKTsKICAgICBVTlVTRURfUEFSQU0oZHJhd2J1ZmZlcik7
CiAgICAgVU5VU0VEX1BBUkFNKHZhbHVlcyk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY09mZnNldCk7
CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNsZWFyQnVmZmVydWl2KEdDR0xl
bnVtIGJ1ZmZlciwgR0NHTGludCBkcmF3YnVmZmVyLCBjb25zdCBHQ0dMdWludCogdmFsdWVzLCBH
Q0dMdWludCBzcmNPZmZzZXQpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjbGVhckJ1
ZmZlcnVpdihHQ0dMZW51bSBidWZmZXIsIEdDR0xpbnQgZHJhd2J1ZmZlciwgR0NHTFNwYW48Y29u
c3QgR0NHTHVpbnQ+IHZhbHVlcykKIHsKICAgICBVTlVTRURfUEFSQU0oYnVmZmVyKTsKICAgICBV
TlVTRURfUEFSQU0oZHJhd2J1ZmZlcik7CiAgICAgVU5VU0VEX1BBUkFNKHZhbHVlcyk7Ci0gICAg
VU5VU0VEX1BBUkFNKHNyY09mZnNldCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OmNsZWFyQnVmZmVyZnYoR0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50IGRyYXdidWZmZXIsIGNv
bnN0IEdDR0xmbG9hdCogdmFsdWVzLCBHQ0dMdWludCBzcmNPZmZzZXQpCit2b2lkIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpjbGVhckJ1ZmZlcmZ2KEdDR0xlbnVtIGJ1ZmZlciwgR0NHTGludCBk
cmF3YnVmZmVyLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IHZhbHVlcykKIHsKICAgICBVTlVT
RURfUEFSQU0oYnVmZmVyKTsKICAgICBVTlVTRURfUEFSQU0oZHJhd2J1ZmZlcik7CiAgICAgVU5V
U0VEX1BBUkFNKHZhbHVlcyk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY09mZnNldCk7CiB9CiAKIHZv
aWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNsZWFyQnVmZmVyZmkoR0NHTGVudW0gYnVmZmVy
LCBHQ0dMaW50IGRyYXdidWZmZXIsIEdDR0xmbG9hdCBkZXB0aCwgR0NHTGludCBzdGVuY2lsKQpA
QCAtMzAyMSw5NiArMjk5NSw2IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNvbXBy
ZXNzZWRUZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsCiAgICAgVU5VU0VE
X1BBUkFNKHNyY0xlbmd0aE92ZXJyaWRlKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6dW5pZm9ybTFmdihHQ0dMaW50IGxvY2F0aW9uLCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEs
IEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQotewotICAgIFVOVVNFRF9Q
QVJBTShsb2NhdGlvbik7Ci0gICAgVU5VU0VEX1BBUkFNKGRhdGEpOwotICAgIFVOVVNFRF9QQVJB
TShzcmNPZmZzZXQpOwotICAgIFVOVVNFRF9QQVJBTShzcmNMZW5ndGgpOwotfQotCi12b2lkIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMmZ2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0
IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgp
Ci17Ci0gICAgVU5VU0VEX1BBUkFNKGxvY2F0aW9uKTsKLSAgICBVTlVTRURfUEFSQU0oZGF0YSk7
Ci0gICAgVU5VU0VEX1BBUkFNKHNyY09mZnNldCk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY0xlbmd0
aCk7Ci19Ci0KLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0zZnYoR0NHTGlu
dCBsb2NhdGlvbiwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdD
R0x1aW50IHNyY0xlbmd0aCkKLXsKLSAgICBVTlVTRURfUEFSQU0obG9jYXRpb24pOwotICAgIFVO
VVNFRF9QQVJBTShkYXRhKTsKLSAgICBVTlVTRURfUEFSQU0oc3JjT2Zmc2V0KTsKLSAgICBVTlVT
RURfUEFSQU0oc3JjTGVuZ3RoKTsKLX0KLQotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
dW5pZm9ybTRmdihHQ0dMaW50IGxvY2F0aW9uLCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1
aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQotewotICAgIFVOVVNFRF9QQVJBTShs
b2NhdGlvbik7Ci0gICAgVU5VU0VEX1BBUkFNKGRhdGEpOwotICAgIFVOVVNFRF9QQVJBTShzcmNP
ZmZzZXQpOwotICAgIFVOVVNFRF9QQVJBTShzcmNMZW5ndGgpOwotfQotCi12b2lkIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMWl2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0xp
bnQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQotewotICAg
IFVOVVNFRF9QQVJBTShsb2NhdGlvbik7Ci0gICAgVU5VU0VEX1BBUkFNKGRhdGEpOwotICAgIFVO
VVNFRF9QQVJBTShzcmNPZmZzZXQpOwotICAgIFVOVVNFRF9QQVJBTShzcmNMZW5ndGgpOwotfQot
Ci12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMml2KEdDR0xpbnQgbG9jYXRp
b24sIGNvbnN0IEdDR0xpbnQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3Jj
TGVuZ3RoKQotewotICAgIFVOVVNFRF9QQVJBTShsb2NhdGlvbik7Ci0gICAgVU5VU0VEX1BBUkFN
KGRhdGEpOwotICAgIFVOVVNFRF9QQVJBTShzcmNPZmZzZXQpOwotICAgIFVOVVNFRF9QQVJBTShz
cmNMZW5ndGgpOwotfQotCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtM2l2
KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0xpbnQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNl
dCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQotewotICAgIFVOVVNFRF9QQVJBTShsb2NhdGlvbik7Ci0g
ICAgVU5VU0VEX1BBUkFNKGRhdGEpOwotICAgIFVOVVNFRF9QQVJBTShzcmNPZmZzZXQpOwotICAg
IFVOVVNFRF9QQVJBTShzcmNMZW5ndGgpOwotfQotCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjp1bmlmb3JtNGl2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0xpbnQqIGRhdGEsIEdD
R0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQotewotICAgIFVOVVNFRF9QQVJB
TShsb2NhdGlvbik7Ci0gICAgVU5VU0VEX1BBUkFNKGRhdGEpOwotICAgIFVOVVNFRF9QQVJBTShz
cmNPZmZzZXQpOwotICAgIFVOVVNFRF9QQVJBTShzcmNMZW5ndGgpOwotfQotCi12b2lkIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4MmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdD
R0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNP
ZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKLXsKLSAgICBVTlVTRURfUEFSQU0obG9jYXRpb24p
OwotICAgIFVOVVNFRF9QQVJBTSh0cmFuc3Bvc2UpOwotICAgIFVOVVNFRF9QQVJBTShkYXRhKTsK
LSAgICBVTlVTRURfUEFSQU0oc3JjT2Zmc2V0KTsKLSAgICBVTlVTRURfUEFSQU0oc3JjTGVuZ3Ro
KTsKLX0KLQotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybU1hdHJpeDNmdihH
Q0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCog
ZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCi17Ci0gICAgVU5V
U0VEX1BBUkFNKGxvY2F0aW9uKTsKLSAgICBVTlVTRURfUEFSQU0odHJhbnNwb3NlKTsKLSAgICBV
TlVTRURfUEFSQU0oZGF0YSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY09mZnNldCk7Ci0gICAgVU5V
U0VEX1BBUkFNKHNyY0xlbmd0aCk7Ci19Ci0KLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OnVuaWZvcm1NYXRyaXg0ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3Nl
LCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3Jj
TGVuZ3RoKQotewotICAgIFVOVVNFRF9QQVJBTShsb2NhdGlvbik7Ci0gICAgVU5VU0VEX1BBUkFN
KHRyYW5zcG9zZSk7Ci0gICAgVU5VU0VEX1BBUkFNKGRhdGEpOwotICAgIFVOVVNFRF9QQVJBTShz
cmNPZmZzZXQpOwotICAgIFVOVVNFRF9QQVJBTShzcmNMZW5ndGgpOwotfQogCiB2b2lkIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dM
c2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0g
dHlwZSwgR0NHTGludHB0ciBvZmZzZXQpCiB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>414834</attachid>
            <date>2020-11-24 05:48:31 -0800</date>
            <delta_ts>2020-11-24 07:28:21 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219256-20201124154828.patch</filename>
            <type>text/plain</type>
            <size>179574</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwMTY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzIzYWI2YjRlNmM0NDFj
MDYzZWM1Mzg0YzZmOTA5NDdiZDFhNDY5ZC4uYmZhNDFlODE2MTVkMDI2NzBlNmY1YzIyMjY5NjRl
ZDMwNGYyODUyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyNiBAQAorMjAyMC0xMS0yMyAgS2lt
bW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIEdyYXBoaWNzQ29u
dGV4dEdMIHNob3VsZCBoYXZlIHJvYnVzdCBtdWx0aXZhbHVlIHNldHRlcnMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxOTI1NgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlcGxhY2UgYnVmU2l6ZSwgcG9p
bnRlciBwYWlycyBhbmQgcGxhaW4gcG9pbnRlcnMgaW4gR3JhcGhpY3NDb250ZXh0R0wKKyAgICAg
ICAgd2l0aCBHQ0dMU3Bhbi4gVGhpcyBtYWtlcyBpdCBlYXNpZXIgdG8gdW5kZXJzdGFuZCBob3cg
bWFueSB2YWx1ZXMgdGhlcmUKKyAgICAgICAgYXJlIHBvaW50ZWQgYnkgdGhlIHBvaW50ZXIuIFRo
aXMgaXMgbmVlZGVkIGZvciBzaW1wbGVyIGltcGxlbWVudGF0aW9uIG9mIEdQVQorICAgICAgICBw
cm9jZXNzIElQQywgd2hlcmUgdGhlIElQQyBsYXllciBkb2VzIG5vdCBuZWVkIHRvIGludGVycHJl
dCB0aGUgT3BlbkdMCisgICAgICAgIHByb3BlcnRpZXMuCisgICAgICAgIAorICAgICAgICBJbiBX
ZWJHTCBpbXBsZW1lbnRhdGlvbiwgY2hhbmdlcyB0aGUgdmFsaWRhdGlvbiBmdW5jdGlvbnMgdG8g
cmV0dXJuCisgICAgICAgIHRoZSBtZW1vcnkgcmVmZXJlbmNlIHRoYXQgd2lsbCBiZSB0b3VjaGVk
IGJ5IHRoZSB2YWxpZCBmdW5jdGlvbiBjYWxsLgorICAgICAgICBPbiB2YWxpZGF0aW9uIGZhaWx1
cmUsIG51bGxvcHQgd2lsbCBiZSByZXR1cm5lZC4KKyAgICAgICAgCisgICAgICAgIE5vIG5ldyB0
ZXN0cywgYSByZWZhY3Rvci4KKworICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmlu
Z0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6
aW52YWxpZGF0ZUZyYW1lYnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmlu
Z0NvbnRleHQ6OmludmFsaWRhdGVTdWJGcmFtZWJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtMXVpdik6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtMnVpdik6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtM3Vpdik6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtNHVpdik6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtTWF0cml4MngzZnYpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybU1hdHJpeDN4MmZ2KToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm1NYXRyaXgyeDRmdik6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtTWF0cml4
NHgyZnYpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9y
bU1hdHJpeDN4NGZ2KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6
OnVuaWZvcm1NYXRyaXg0eDNmdik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdD
b250ZXh0Ojp2ZXJ0ZXhBdHRyaWJJNGl2KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRl
cmluZ0NvbnRleHQ6OnZlcnRleEF0dHJpYkk0dWl2KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdM
MlJlbmRlcmluZ0NvbnRleHQ6OmRyYXdCdWZmZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdM
MlJlbmRlcmluZ0NvbnRleHQ6OmNsZWFyQnVmZmVyaXYpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
R0wyUmVuZGVyaW5nQ29udGV4dDo6Y2xlYXJCdWZmZXJ1aXYpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Y2xlYXJCdWZmZXJmdik6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp2YWxpZGF0ZUNsZWFyQnVmZmVyKToKKyAgICAgICAg
KFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm0xZnYpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTJmdik6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtM2Z2KToKKyAgICAgICAgKFdl
YkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm00ZnYpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTFpdik6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtMml2KToKKyAgICAgICAgKFdlYkNv
cmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm0zaXYpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTRpdik6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtTWF0cml4MmZ2KToKKyAgICAgICAgKFdl
YkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm1NYXRyaXgzZnYpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybU1hdHJpeDRmdik6Cisg
ICAgICAgICogaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5oOgorICAgICAgICAq
IGh0bWwvY2FudmFzL1dlYkdMRHJhd0J1ZmZlcnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
R0xEcmF3QnVmZmVyczo6ZHJhd0J1ZmZlcnNXRUJHTCk6CisgICAgICAgICogaHRtbC9jYW52YXMv
V2ViR0xGcmFtZWJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTEZyYW1lYnVmZmVy
OjpkcmF3QnVmZmVyc0lmTmVjZXNzYXJ5KToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2U6OmJ1ZmZlckRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6YnVmZmVyU3ViRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtMWZ2KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm0yZnYpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybTNmdik6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtNGZ2KToKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm0xaXYpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybTJpdik6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtM2l2KToKKyAgICAgICAgKFdl
YkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm00aXYpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybU1hdHJpeDJmdik6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtTWF0cml4
M2Z2KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZv
cm1NYXRyaXg0ZnYpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZTo6dmFsaWRhdGVVbmlmb3JtTWF0cml4UGFyYW1ldGVycyk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2ZXJ0ZXhBdHRyaWJmdkltcGwpOgorICAgICAgICAq
IGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaDoKKyAgICAgICAgKFdlYkNv
cmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0V4dGVuc2lvbnNHTC5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlc0dMLmg6CisgICAgICAgIChHQ0dMU3Bhbjo6R0NHTFNw
YW4pOgorICAgICAgICAoc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgpOgorICAgICAg
ICAobWFrZUdDR0xTcGFuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRl
bnNpb25zR0xBTkdMRS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6
ZHJhd0J1ZmZlcnNFWFQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVu
c2lvbnNHTEFOR0xFLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhp
Y3NDb250ZXh0R0xBTkdMRS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6YnVmZmVyRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6YnVmZmVyU3ViRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6dW5pZm9ybTFmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6dW5pZm9ybTJmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6dW5pZm9ybTNmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6dW5pZm9ybTRmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6dW5pZm9ybTFpdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6dW5pZm9ybTJpdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6dW5pZm9ybTNpdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6dW5pZm9ybTRpdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6dW5pZm9ybU1hdHJpeDJmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybU1hdHJpeDNmdik6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybU1hdHJpeDRmdik6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliMWZ2KToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2ZXJ0ZXhBdHRyaWIyZnYpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYjNmdik6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmli
NGZ2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjppbnZhbGlk
YXRlRnJhbWVidWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OmludmFsaWRhdGVTdWJGcmFtZWJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTF1aXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0ydWl2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtM3Vpdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTR1aXYpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXgyeDNmdik6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybU1hdHJpeDN4MmZ2KToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4Mng0ZnYp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRy
aXg0eDJmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5p
Zm9ybU1hdHJpeDN4NGZ2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjp1bmlmb3JtTWF0cml4NHgzZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYkk0aXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYkk0dWl2KToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpkcmF3QnVmZmVycyk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y2xlYXJCdWZmZXJpdik6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y2xlYXJCdWZmZXJ1aXYpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNsZWFyQnVmZmVyZnYpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2N2L0dyYXBoaWNzQ29udGV4dEdMQ1ZBTkdMRS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTENWQU5HTEU6OmluaXRpYWxpemVVVkNv
bnRleHRPYmplY3RzKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQ1ZBTkdM
RTo6Y29weVBpeGVsQnVmZmVyVG9UZXh0dXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaDoKKwogMjAyMC0xMS0yMiAgQW50dGkg
S29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CiAKICAgICAgICAgW0xGQ11bSW50ZWdyYXRpb25d
IENvbnZlcnQgc29tZSByZW1haW5pbmcgSW5saW5lQm94IGFjY2VzcyB0byB1c2UgaW5saW5lIGl0
ZXJhdG9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5k
ZXJpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRl
cmluZ0NvbnRleHQuY3BwCmluZGV4IDU1YmMxZjhkYjI0OWQzMzgyMmU3ODg5Y2E3ODNmNWJlYzAy
NWEyOTkuLmQzNjliOWZhYTNjNDgwZTNjNDg0NDA5ZWYwNDVhZmQ4NmI1Zjg1ZDUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQu
Y3BwCkBAIC04OTUsNyArODk1LDcgQEAgdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjppbnZh
bGlkYXRlRnJhbWVidWZmZXIoR0NHTGVudW0gdGFyZ2V0LCBjb25zdCBWZWN0b3IKICAgICBWZWN0
b3I8R0NHTGVudW0+IHRyYW5zbGF0ZWRBdHRhY2htZW50cyA9IGF0dGFjaG1lbnRzOwogICAgIGlm
ICghY2hlY2tBbmRUcmFuc2xhdGVBdHRhY2htZW50cygiaW52YWxpZGF0ZUZyYW1lYnVmZmVyIiwg
dGFyZ2V0LCB0cmFuc2xhdGVkQXR0YWNobWVudHMpKQogICAgICAgICByZXR1cm47Ci0gICAgbV9j
b250ZXh0LT5pbnZhbGlkYXRlRnJhbWVidWZmZXIodGFyZ2V0LCB0cmFuc2xhdGVkQXR0YWNobWVu
dHMuc2l6ZSgpLCB0cmFuc2xhdGVkQXR0YWNobWVudHMuZGF0YSgpKTsKKyAgICBtX2NvbnRleHQt
PmludmFsaWRhdGVGcmFtZWJ1ZmZlcih0YXJnZXQsIHRyYW5zbGF0ZWRBdHRhY2htZW50cyk7CiB9
CiAKIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6aW52YWxpZGF0ZVN1YkZyYW1lYnVmZmVy
KEdDR0xlbnVtIHRhcmdldCwgY29uc3QgVmVjdG9yPEdDR0xlbnVtPiYgYXR0YWNobWVudHMsIEdD
R0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpCkBA
IC05MDYsNyArOTA2LDcgQEAgdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjppbnZhbGlkYXRl
U3ViRnJhbWVidWZmZXIoR0NHTGVudW0gdGFyZ2V0LCBjb25zdCBWZWMKICAgICBWZWN0b3I8R0NH
TGVudW0+IHRyYW5zbGF0ZWRBdHRhY2htZW50cyA9IGF0dGFjaG1lbnRzOwogICAgIGlmICghY2hl
Y2tBbmRUcmFuc2xhdGVBdHRhY2htZW50cygiaW52YWxpZGF0ZVN1YkZyYW1lYnVmZmVyIiwgdGFy
Z2V0LCB0cmFuc2xhdGVkQXR0YWNobWVudHMpKQogICAgICAgICByZXR1cm47Ci0gICAgbV9jb250
ZXh0LT5pbnZhbGlkYXRlU3ViRnJhbWVidWZmZXIodGFyZ2V0LCB0cmFuc2xhdGVkQXR0YWNobWVu
dHMuc2l6ZSgpLCB0cmFuc2xhdGVkQXR0YWNobWVudHMuZGF0YSgpLCB4LCB5LCB3aWR0aCwgaGVp
Z2h0KTsKKyAgICBtX2NvbnRleHQtPmludmFsaWRhdGVTdWJGcmFtZWJ1ZmZlcih0YXJnZXQsIHRy
YW5zbGF0ZWRBdHRhY2htZW50cywgeCwgeSwgd2lkdGgsIGhlaWdodCk7CiB9CiAKIHZvaWQgV2Vi
R0wyUmVuZGVyaW5nQ29udGV4dDo6cmVhZEJ1ZmZlcihHQ0dMZW51bSBzcmMpCkBAIC0xMTI5LDcg
KzExMjksNyBAQCB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnRleEltYWdlMkQoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50CiAgICAgaWYgKCF2YWxpZGF0ZVRleEZ1
bmMoInRleEltYWdlMkQiLCBUZXhJbWFnZUZ1bmN0aW9uVHlwZTo6VGV4SW1hZ2UsIFNvdXJjZVVu
cGFja0J1ZmZlciwgdGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQs
IDEsIGJvcmRlciwgZm9ybWF0LCB0eXBlLCAwLCAwLCAwKSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkudGV4SW1hZ2UyRFJvYnVzdEFOR0xFKHRhcmdl
dCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIsIGZvcm1hdCwg
dHlwZSwgMCwgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ob2Zmc2V0KSk7CisgICAgbV9jb250ZXh0
LT50ZXhJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0
LCBib3JkZXIsIGZvcm1hdCwgdHlwZSwgb2Zmc2V0KTsKIH0KIAogRXhjZXB0aW9uT3I8dm9pZD4g
V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xp
bnQgbGV2ZWwsIEdDR0xpbnQgaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNp
emVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlw
ZSwgVGV4SW1hZ2VTb3VyY2UmJiBzb3VyY2UpCkBAIC0xMTczLDcgKzExNzMsNyBAQCB2b2lkIFdl
YkdMMlJlbmRlcmluZ0NvbnRleHQ6OnRleEltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50
IGxldmVsLCBHQ0dMaW50CiAgICAgaWYgKCF2YWxpZGF0ZVRleEZ1bmMoInRleEltYWdlM0QiLCBU
ZXhJbWFnZUZ1bmN0aW9uVHlwZTo6VGV4SW1hZ2UsIFNvdXJjZVVucGFja0J1ZmZlciwgdGFyZ2V0
LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBib3JkZXIsIGZv
cm1hdCwgdHlwZSwgMCwgMCwgMCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fY29udGV4dC0+
Z2V0RXh0ZW5zaW9ucygpLnRleEltYWdlM0RSb2J1c3RBTkdMRSh0YXJnZXQsIGxldmVsLCBpbnRl
cm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGJvcmRlciwgZm9ybWF0LCB0eXBlLCAw
LCByZWludGVycHJldF9jYXN0PHZvaWQqPihvZmZzZXQpKTsKKyAgICBtX2NvbnRleHQtPmdldEV4
dGVuc2lvbnMoKS50ZXhJbWFnZTNEUm9idXN0QU5HTEUodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxm
b3JtYXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBib3JkZXIsIGZvcm1hdCwgdHlwZSwgIHN0YXRp
Y19jYXN0PGludHB0cl90PihvZmZzZXQpKTsKIH0KIAogRXhjZXB0aW9uT3I8dm9pZD4gV2ViR0wy
UmVuZGVyaW5nQ29udGV4dDo6dGV4SW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2
ZWwsIEdDR0xpbnQgaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhl
aWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMaW50IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0LCBH
Q0dMZW51bSB0eXBlLCBUZXhJbWFnZVNvdXJjZSYmIHNvdXJjZSkKQEAgLTEyNTksNyArMTI1OSw3
IEBAIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0
YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpCiAgICAgaWYgKCF2YWxpZGF0ZVRleEZ1bmMoInRl
eFN1YkltYWdlMkQiLCBUZXhJbWFnZUZ1bmN0aW9uVHlwZTo6VGV4U3ViSW1hZ2UsIFNvdXJjZVVu
cGFja0J1ZmZlciwgdGFyZ2V0LCBsZXZlbCwgMCwgd2lkdGgsIGhlaWdodCwgMSwgMCwgZm9ybWF0
LCB0eXBlLCB4b2Zmc2V0LCB5b2Zmc2V0LCAwKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9j
b250ZXh0LT5nZXRFeHRlbnNpb25zKCkudGV4U3ViSW1hZ2UyRFJvYnVzdEFOR0xFKHRhcmdldCwg
bGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgMCwg
cmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ob2Zmc2V0KSk7CisgICAgbV9jb250ZXh0LT5nZXRFeHRl
bnNpb25zKCkudGV4U3ViSW1hZ2UyRFJvYnVzdEFOR0xFKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQs
IHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgb2Zmc2V0KTsKIH0KIAogRXhj
ZXB0aW9uT3I8dm9pZD4gV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dGV4U3ViSW1hZ2UyRChHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zm
c2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwg
R0NHTGVudW0gdHlwZSwgVGV4SW1hZ2VTb3VyY2UmJiBzb3VyY2UpCkBAIC0xMzAzLDcgKzEzMDMs
NyBAQCB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnRleFN1YkltYWdlM0QoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaQogICAgIGlmICghdmFsaWRhdGVUZXhGdW5jKCJ0
ZXhTdWJJbWFnZTNEIiwgVGV4SW1hZ2VGdW5jdGlvblR5cGU6OlRleFN1YkltYWdlLCBTb3VyY2VV
bnBhY2tCdWZmZXIsIHRhcmdldCwgbGV2ZWwsIDAsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCAwLCBm
b3JtYXQsIHR5cGUsIHhvZmZzZXQsIHlvZmZzZXQsIHpvZmZzZXQpKQogICAgICAgICByZXR1cm47
CiAKLSAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS50ZXhTdWJJbWFnZTNEUm9idXN0QU5H
TEUodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgem9mZnNldCwgd2lkdGgsIGhlaWdo
dCwgZGVwdGgsIGZvcm1hdCwgdHlwZSwgMCwgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ob2Zmc2V0
KSk7CisgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkudGV4U3ViSW1hZ2UzRFJvYnVzdEFO
R0xFKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHpvZmZzZXQsIHdpZHRoLCBoZWln
aHQsIGRlcHRoLCBmb3JtYXQsIHR5cGUsIHN0YXRpY19jYXN0PGludHB0cl90PihvZmZzZXQpKTsK
IH0KIAogdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp0ZXhTdWJJbWFnZTNEKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQs
IEdDR0xpbnQgem9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dM
c2l6ZWkgZGVwdGgsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgUmVmUHRyPEFycmF5
QnVmZmVyVmlldz4mJiBzcmNEYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQpCkBAIC0xMzcyLDcgKzEz
NzIsNyBAQCB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmNvbXByZXNzZWRUZXhJbWFnZTJE
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbAogICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5z
aW9ucygpLmNvbXByZXNzZWRUZXhJbWFnZTJEUm9idXN0QU5HTEUoCiAgICAgICAgIHRhcmdldCwg
bGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwKICAgICAgICAgaGVpZ2h0LCBib3JkZXIsIGlt
YWdlU2l6ZSwKLSAgICAgICAgMCwgcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4ob2Zmc2V0KSk7
CisgICAgICAgIHN0YXRpY19jYXN0PGludHB0cl90PihvZmZzZXQpKTsKIH0KIAogdm9pZCBXZWJH
TDJSZW5kZXJpbmdDb250ZXh0Ojpjb21wcmVzc2VkVGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQs
IEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgs
IEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBBcnJheUJ1ZmZlclZpZXcmIHNyY0Rh
dGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoT3ZlcnJpZGUpCkBAIC0x
MzkzLDcgKzEzOTMsNyBAQCB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmNvbXByZXNzZWRU
ZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbAogICAgIG1fY29udGV4dC0+
Z2V0RXh0ZW5zaW9ucygpLmNvbXByZXNzZWRUZXhJbWFnZTJEUm9idXN0QU5HTEUoCiAgICAgICAg
IHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LAogICAgICAgICBi
b3JkZXIsIHNsaWNlLT5ieXRlTGVuZ3RoKCksCi0gICAgICAgIHNsaWNlLT5ieXRlTGVuZ3RoKCks
IHNsaWNlLT5iYXNlQWRkcmVzcygpKTsKKyAgICAgICAgbWFrZUdDR0xTcGFuKHNsaWNlLT5iYXNl
QWRkcmVzcygpLCBzbGljZS0+Ynl0ZUxlbmd0aCgpKSk7CiB9CiAKIHZvaWQgV2ViR0wyUmVuZGVy
aW5nQ29udGV4dDo6Y29tcHJlc3NlZFRleEltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50
IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6
ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMc2l6ZWkgaW1h
Z2VTaXplLCBHQ0dMaW50NjQgb2Zmc2V0KQpAQCAtMTQxMSw3ICsxNDExLDcgQEAgdm9pZCBXZWJH
TDJSZW5kZXJpbmdDb250ZXh0Ojpjb21wcmVzc2VkVGV4SW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQs
IEdDR0xpbnQgbGV2ZWwKICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5jb21wcmVzc2Vk
VGV4SW1hZ2UzRFJvYnVzdEFOR0xFKAogICAgICAgICB0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZv
cm1hdCwgd2lkdGgsCiAgICAgICAgIGhlaWdodCwgZGVwdGgsIGJvcmRlciwgaW1hZ2VTaXplLAot
ICAgICAgICAwLCByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihvZmZzZXQpKTsKKyAgICAgICAg
c3RhdGljX2Nhc3Q8aW50cHRyX3Q+KG9mZnNldCkpOwogfQogCiB2b2lkIFdlYkdMMlJlbmRlcmlu
Z0NvbnRleHQ6OmNvbXByZXNzZWRUZXhJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBs
ZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVp
IGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMaW50IGJvcmRlciwgQXJyYXlCdWZmZXJWaWV3
JiBzcmNEYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aE92ZXJyaWRl
KQpAQCAtMTQzMiw3ICsxNDMyLDcgQEAgdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojpjb21w
cmVzc2VkVGV4SW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwKICAgICBtX2Nv
bnRleHQtPmdldEV4dGVuc2lvbnMoKS5jb21wcmVzc2VkVGV4SW1hZ2UzRFJvYnVzdEFOR0xFKAog
ICAgICAgICB0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwKICAg
ICAgICAgZGVwdGgsIGJvcmRlciwgc2xpY2UtPmJ5dGVMZW5ndGgoKSwKLSAgICAgICAgc2xpY2Ut
PmJ5dGVMZW5ndGgoKSwgc2xpY2UtPmJhc2VBZGRyZXNzKCkpOworICAgICAgICBtYWtlR0NHTFNw
YW4oc2xpY2UtPmJhc2VBZGRyZXNzKCksIHNsaWNlLT5ieXRlTGVuZ3RoKCkpKTsKIH0KIAogdm9p
ZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojpjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChHQ0dMZW51
bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0
LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgQXJy
YXlCdWZmZXJWaWV3JiBzcmNEYXRhKQpAQCAtMTQ2Myw3ICsxNDYzLDcgQEAgdm9pZCBXZWJHTDJS
ZW5kZXJpbmdDb250ZXh0Ojpjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQs
IEdDR0xpbnQgbGUKICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5jb21wcmVzc2VkVGV4
U3ViSW1hZ2UyRFJvYnVzdEFOR0xFKAogICAgICAgICB0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5
b2Zmc2V0LAogICAgICAgICB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIGltYWdlU2l6ZSwKLSAgICAg
ICAgMCwgcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4ob2Zmc2V0KSk7CisgICAgICAgIG9mZnNl
dCk7CiB9CiAKIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Y29tcHJlc3NlZFRleFN1Yklt
YWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdD
R0xpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51
bSBmb3JtYXQsIEFycmF5QnVmZmVyVmlldyYgc3JjRGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBH
Q0dMdWludCBzcmNMZW5ndGhPdmVycmlkZSkKQEAgLTE0ODQsNyArMTQ4NCw3IEBAIHZvaWQgV2Vi
R0wyUmVuZGVyaW5nQ29udGV4dDo6Y29tcHJlc3NlZFRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMaW50IGxlCiAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuY29tcHJlc3Nl
ZFRleFN1YkltYWdlMkRSb2J1c3RBTkdMRSgKICAgICAgICAgdGFyZ2V0LCBsZXZlbCwgeG9mZnNl
dCwgeW9mZnNldCwKICAgICAgICAgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCBzbGljZS0+Ynl0ZUxl
bmd0aCgpLAotICAgICAgICBzbGljZS0+Ynl0ZUxlbmd0aCgpLCBzbGljZS0+YmFzZUFkZHJlc3Mo
KSk7CisgICAgICAgIG1ha2VHQ0dMU3BhbihzbGljZS0+YmFzZUFkZHJlc3MoKSwgc2xpY2UtPmJ5
dGVMZW5ndGgoKSkpOwogfQogCiB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmNvbXByZXNz
ZWRUZXhTdWJJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4
b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xpbnQgem9mZnNldCwgR0NHTHNpemVpIHdpZHRo
LCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xlbnVtIGZvcm1hdCwgR0NH
THNpemVpIGltYWdlU2l6ZSwgR0NHTGludDY0IG9mZnNldCkKQEAgLTE1MDIsNyArMTUwMiw3IEBA
IHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Y29tcHJlc3NlZFRleFN1YkltYWdlM0QoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxlCiAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCku
Y29tcHJlc3NlZFRleFN1YkltYWdlM0RSb2J1c3RBTkdMRSgKICAgICAgICAgdGFyZ2V0LCBsZXZl
bCwgeG9mZnNldCwgeW9mZnNldCwgem9mZnNldCwKICAgICAgICAgd2lkdGgsIGhlaWdodCwgZGVw
dGgsIGZvcm1hdCwgaW1hZ2VTaXplLAotICAgICAgICAwLCByZWludGVycHJldF9jYXN0PHVpbnQ4
X3QqPihvZmZzZXQpKTsKKyAgICAgICAgc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KG9mZnNldCkpOwog
fQogCiB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmNvbXByZXNzZWRUZXhTdWJJbWFnZTNE
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50
IHlvZmZzZXQsIEdDR0xpbnQgem9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVp
Z2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xlbnVtIGZvcm1hdCwgQXJyYXlCdWZmZXJWaWV3JiBz
cmNEYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aE92ZXJyaWRlKQpA
QCAtMTUyMyw3ICsxNTIzLDcgQEAgdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojpjb21wcmVz
c2VkVGV4U3ViSW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGUKICAgICBtX2NvbnRl
eHQtPmdldEV4dGVuc2lvbnMoKS5jb21wcmVzc2VkVGV4U3ViSW1hZ2UzRFJvYnVzdEFOR0xFKAog
ICAgICAgICB0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB6b2Zmc2V0LAogICAgICAg
ICB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgZm9ybWF0LCBzbGljZS0+Ynl0ZUxlbmd0aCgpLAotICAg
ICAgICBzbGljZS0+Ynl0ZUxlbmd0aCgpLCBzbGljZS0+YmFzZUFkZHJlc3MoKSk7CisgICAgICAg
IG1ha2VHQ0dMU3BhbihzbGljZS0+YmFzZUFkZHJlc3MoKSwgc2xpY2UtPmJ5dGVMZW5ndGgoKSkp
OwogfQogCiBHQ0dMaW50IFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldEZyYWdEYXRhTG9jYXRp
b24oV2ViR0xQcm9ncmFtJiBwcm9ncmFtLCBjb25zdCBTdHJpbmcmIG5hbWUpCkBAIC0xNTYzLDcy
ICsxNTYzLDEwMiBAQCB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm00dWkoV2Vi
R0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBHQ0dMdWludAogCiB2b2lkIFdlYkdMMlJlbmRl
cmluZ0NvbnRleHQ6OnVuaWZvcm0xdWl2KFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwg
VWludDMyTGlzdCYmIHZhbHVlLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0
aCkKIHsKLSAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVVuaWZv
cm1QYXJhbWV0ZXJzKCJ1bmlmb3JtMXVpdiIsIGxvY2F0aW9uLCB2YWx1ZSwgMSwgc3JjT2Zmc2V0
LCBzcmNMZW5ndGgpKQorICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCisgICAgICAg
IHJldHVybjsKKyAgICBhdXRvIGRhdGEgPSB2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKCJ1bmlm
b3JtMXVpdiIsIGxvY2F0aW9uLCB2YWx1ZSwgMSwgc3JjT2Zmc2V0LCBzcmNMZW5ndGgpOworICAg
IGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuOwotICAgIG1fY29udGV4dC0+dW5pZm9ybTF1aXYo
bG9jYXRpb24tPmxvY2F0aW9uKCksIHZhbHVlLmRhdGEoKSwgc3JjT2Zmc2V0LCBzcmNMZW5ndGgg
PyBzcmNMZW5ndGggOiAodmFsdWUubGVuZ3RoKCkgLSBzcmNPZmZzZXQpKTsKKyAgICBtX2NvbnRl
eHQtPnVuaWZvcm0xdWl2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCBkYXRhLnZhbHVlKCkpOwogfQog
CiB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm0ydWl2KFdlYkdMVW5pZm9ybUxv
Y2F0aW9uKiBsb2NhdGlvbiwgVWludDMyTGlzdCYmIHZhbHVlLCBHQ0dMdWludCBzcmNPZmZzZXQs
IEdDR0x1aW50IHNyY0xlbmd0aCkKIHsKLSAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygp
IHx8ICF2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKCJ1bmlmb3JtMnVpdiIsIGxvY2F0aW9uLCB2
YWx1ZSwgMiwgc3JjT2Zmc2V0LCBzcmNMZW5ndGgpKQorICAgIGlmIChpc0NvbnRleHRMb3N0T3JQ
ZW5kaW5nKCkpCisgICAgICAgIHJldHVybjsKKyAgICBhdXRvIGRhdGEgPSB2YWxpZGF0ZVVuaWZv
cm1QYXJhbWV0ZXJzKCJ1bmlmb3JtMnVpdiIsIGxvY2F0aW9uLCB2YWx1ZSwgMiwgc3JjT2Zmc2V0
LCBzcmNMZW5ndGgpOworICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuOwotICAgIG1fY29u
dGV4dC0+dW5pZm9ybTJ1aXYobG9jYXRpb24tPmxvY2F0aW9uKCksIHZhbHVlLmRhdGEoKSwgc3Jj
T2Zmc2V0LCAoc3JjTGVuZ3RoID8gc3JjTGVuZ3RoIDogdmFsdWUubGVuZ3RoKCkgLSBzcmNPZmZz
ZXQpIC8gMik7CisgICAgbV9jb250ZXh0LT51bmlmb3JtMnVpdihsb2NhdGlvbi0+bG9jYXRpb24o
KSwgZGF0YS52YWx1ZSgpKTsKIH0KIAogdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlm
b3JtM3VpdihXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIFVpbnQzMkxpc3QmJiB2YWx1
ZSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCiB7Ci0gICAgaWYgKGlz
Q29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycygidW5p
Zm9ybTN1aXYiLCBsb2NhdGlvbiwgdmFsdWUsIDMsIHNyY09mZnNldCwgc3JjTGVuZ3RoKSkKKyAg
ICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpKQorICAgICAgICByZXR1cm47CisgICAgYXV0
byBkYXRhID0gdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycygidW5pZm9ybTN1aXYiLCBsb2NhdGlv
biwgdmFsdWUsIDMsIHNyY09mZnNldCwgc3JjTGVuZ3RoKTsKKyAgICBpZiAoIWRhdGEpCiAgICAg
ICAgIHJldHVybjsKLSAgICBtX2NvbnRleHQtPnVuaWZvcm0zdWl2KGxvY2F0aW9uLT5sb2NhdGlv
bigpLCB2YWx1ZS5kYXRhKCksIHNyY09mZnNldCwgKHNyY0xlbmd0aCA/IHNyY0xlbmd0aCA6IHZh
bHVlLmxlbmd0aCgpIC0gc3JjT2Zmc2V0KSAvIDMpOworICAgIG1fY29udGV4dC0+dW5pZm9ybTN1
aXYobG9jYXRpb24tPmxvY2F0aW9uKCksIGRhdGEudmFsdWUoKSk7CiB9CiAKIHZvaWQgV2ViR0wy
UmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTR1aXYoV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0
aW9uLCBVaW50MzJMaXN0JiYgdmFsdWUsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3Jj
TGVuZ3RoKQogewotICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRl
VW5pZm9ybVBhcmFtZXRlcnMoInVuaWZvcm00dWl2IiwgbG9jYXRpb24sIHZhbHVlLCA0LCBzcmNP
ZmZzZXQsIHNyY0xlbmd0aCkpCisgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSkKKyAg
ICAgICAgcmV0dXJuOworICAgIGF1dG8gZGF0YSA9IHZhbGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMo
InVuaWZvcm00dWl2IiwgbG9jYXRpb24sIHZhbHVlLCA0LCBzcmNPZmZzZXQsIHNyY0xlbmd0aCk7
CisgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm47Ci0gICAgbV9jb250ZXh0LT51bmlmb3Jt
NHVpdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgdmFsdWUuZGF0YSgpLCBzcmNPZmZzZXQsIChzcmNM
ZW5ndGggPyBzcmNMZW5ndGggOiB2YWx1ZS5sZW5ndGgoKSAtIHNyY09mZnNldCkgLyA0KTsKKyAg
ICBtX2NvbnRleHQtPnVuaWZvcm00dWl2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCBkYXRhLnZhbHVl
KCkpOwogfQogCiB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm1NYXRyaXgyeDNm
dihXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwg
RmxvYXQzMkxpc3QmJiB2LCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkK
IHsKLSAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVVuaWZvcm1N
YXRyaXhQYXJhbWV0ZXJzKCJ1bmlmb3JtTWF0cml4MngzZnYiLCBsb2NhdGlvbiwgdHJhbnNwb3Nl
LCB2LCA2LCBzcmNPZmZzZXQsIHNyY0xlbmd0aCkpCisgICAgaWYgKGlzQ29udGV4dExvc3RPclBl
bmRpbmcoKSkKKyAgICAgICAgcmV0dXJuOworICAgIGF1dG8gZGF0YSA9IHZhbGlkYXRlVW5pZm9y
bU1hdHJpeFBhcmFtZXRlcnMoInVuaWZvcm1NYXRyaXgyeDNmdiIsIGxvY2F0aW9uLCB0cmFuc3Bv
c2UsIHYsIDYsIHNyY09mZnNldCwgc3JjTGVuZ3RoKTsKKyAgICBpZiAoIWRhdGEpCiAgICAgICAg
IHJldHVybjsKLSAgICBtX2NvbnRleHQtPnVuaWZvcm1NYXRyaXgyeDNmdihsb2NhdGlvbi0+bG9j
YXRpb24oKSwgdHJhbnNwb3NlLCB2LmRhdGEoKSwgc3JjT2Zmc2V0LCAoc3JjTGVuZ3RoID8gc3Jj
TGVuZ3RoIDogdi5sZW5ndGgoKSAtIHNyY09mZnNldCkgLyA2KTsKKyAgICBtX2NvbnRleHQtPnVu
aWZvcm1NYXRyaXgyeDNmdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgdHJhbnNwb3NlLCBkYXRhLnZh
bHVlKCkpOwogfQogCiB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm1NYXRyaXgz
eDJmdihXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9z
ZSwgRmxvYXQzMkxpc3QmJiB2LCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0
aCkKIHsKLSAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVVuaWZv
cm1NYXRyaXhQYXJhbWV0ZXJzKCJ1bmlmb3JtTWF0cml4M3gyZnYiLCBsb2NhdGlvbiwgdHJhbnNw
b3NlLCB2LCA2LCBzcmNPZmZzZXQsIHNyY0xlbmd0aCkpCisgICAgaWYgKGlzQ29udGV4dExvc3RP
clBlbmRpbmcoKSkKKyAgICAgICAgcmV0dXJuOworICAgIGF1dG8gZGF0YSA9IHZhbGlkYXRlVW5p
Zm9ybU1hdHJpeFBhcmFtZXRlcnMoInVuaWZvcm1NYXRyaXgzeDJmdiIsIGxvY2F0aW9uLCB0cmFu
c3Bvc2UsIHYsIDYsIHNyY09mZnNldCwgc3JjTGVuZ3RoKTsKKyAgICBpZiAoIWRhdGEpCiAgICAg
ICAgIHJldHVybjsKLSAgICBtX2NvbnRleHQtPnVuaWZvcm1NYXRyaXgzeDJmdihsb2NhdGlvbi0+
bG9jYXRpb24oKSwgdHJhbnNwb3NlLCB2LmRhdGEoKSwgc3JjT2Zmc2V0LCAoc3JjTGVuZ3RoID8g
c3JjTGVuZ3RoIDogdi5sZW5ndGgoKSAtIHNyY09mZnNldCkgLyA2KTsKKyAgICBtX2NvbnRleHQt
PnVuaWZvcm1NYXRyaXgzeDJmdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgdHJhbnNwb3NlLCBkYXRh
LnZhbHVlKCkpOwogfQogCiB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm1NYXRy
aXgyeDRmdihXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5z
cG9zZSwgRmxvYXQzMkxpc3QmJiB2LCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xl
bmd0aCkKIHsKLSAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVVu
aWZvcm1NYXRyaXhQYXJhbWV0ZXJzKCJ1bmlmb3JtTWF0cml4Mng0ZnYiLCBsb2NhdGlvbiwgdHJh
bnNwb3NlLCB2LCA4LCBzcmNPZmZzZXQsIHNyY0xlbmd0aCkpCisgICAgaWYgKGlzQ29udGV4dExv
c3RPclBlbmRpbmcoKSkKKyAgICAgICAgcmV0dXJuOworICAgIGF1dG8gZGF0YSA9IHZhbGlkYXRl
VW5pZm9ybU1hdHJpeFBhcmFtZXRlcnMoInVuaWZvcm1NYXRyaXgyeDRmdiIsIGxvY2F0aW9uLCB0
cmFuc3Bvc2UsIHYsIDgsIHNyY09mZnNldCwgc3JjTGVuZ3RoKTsKKyAgICBpZiAoIWRhdGEpCiAg
ICAgICAgIHJldHVybjsKLSAgICBtX2NvbnRleHQtPnVuaWZvcm1NYXRyaXgyeDRmdihsb2NhdGlv
bi0+bG9jYXRpb24oKSwgdHJhbnNwb3NlLCB2LmRhdGEoKSwgc3JjT2Zmc2V0LCAoc3JjTGVuZ3Ro
ID8gc3JjTGVuZ3RoIDogdi5sZW5ndGgoKSAtIHNyY09mZnNldCkgLyA4KTsKKyAgICBtX2NvbnRl
eHQtPnVuaWZvcm1NYXRyaXgyeDRmdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgdHJhbnNwb3NlLCBk
YXRhLnZhbHVlKCkpOwogfQogCiB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm1N
YXRyaXg0eDJmdihXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEdDR0xib29sZWFuIHRy
YW5zcG9zZSwgRmxvYXQzMkxpc3QmJiB2LCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNy
Y0xlbmd0aCkKIHsKLSAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0
ZVVuaWZvcm1NYXRyaXhQYXJhbWV0ZXJzKCJ1bmlmb3JtTWF0cml4NHgyZnYiLCBsb2NhdGlvbiwg
dHJhbnNwb3NlLCB2LCA4LCBzcmNPZmZzZXQsIHNyY0xlbmd0aCkpCisgICAgaWYgKGlzQ29udGV4
dExvc3RPclBlbmRpbmcoKSkKICAgICAgICAgcmV0dXJuOwotICAgIG1fY29udGV4dC0+dW5pZm9y
bU1hdHJpeDR4MmZ2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCB0cmFuc3Bvc2UsIHYuZGF0YSgpLCBz
cmNPZmZzZXQsIChzcmNMZW5ndGggPyBzcmNMZW5ndGggOiB2Lmxlbmd0aCgpIC0gc3JjT2Zmc2V0
KSAvIDgpOworICAgIGF1dG8gZGF0YSA9IHZhbGlkYXRlVW5pZm9ybU1hdHJpeFBhcmFtZXRlcnMo
InVuaWZvcm1NYXRyaXg0eDJmdiIsIGxvY2F0aW9uLCB0cmFuc3Bvc2UsIHYsIDgsIHNyY09mZnNl
dCwgc3JjTGVuZ3RoKTsKKyAgICBpZiAoIWRhdGEpCisgICAgICAgIHJldHVybjsKKyAgICBtX2Nv
bnRleHQtPnVuaWZvcm1NYXRyaXg0eDJmdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgdHJhbnNwb3Nl
LCBkYXRhLnZhbHVlKCkpOwogfQogCiB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZv
cm1NYXRyaXgzeDRmdihXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEdDR0xib29sZWFu
IHRyYW5zcG9zZSwgRmxvYXQzMkxpc3QmJiB2LCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50
IHNyY0xlbmd0aCkKIHsKLSAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxp
ZGF0ZVVuaWZvcm1NYXRyaXhQYXJhbWV0ZXJzKCJ1bmlmb3JtTWF0cml4M3g0ZnYiLCBsb2NhdGlv
biwgdHJhbnNwb3NlLCB2LCAxMiwgc3JjT2Zmc2V0LCBzcmNMZW5ndGgpKQorICAgIGlmIChpc0Nv
bnRleHRMb3N0T3JQZW5kaW5nKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBtX2NvbnRleHQtPnVu
aWZvcm1NYXRyaXgzeDRmdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgdHJhbnNwb3NlLCB2LmRhdGEo
KSwgc3JjT2Zmc2V0LCAoc3JjTGVuZ3RoID8gc3JjTGVuZ3RoIDogdi5sZW5ndGgoKSAtIHNyY09m
ZnNldCkgLyAxMik7CisgICAgYXV0byBkYXRhID0gdmFsaWRhdGVVbmlmb3JtTWF0cml4UGFyYW1l
dGVycygidW5pZm9ybU1hdHJpeDN4NGZ2IiwgbG9jYXRpb24sIHRyYW5zcG9zZSwgdiwgMTIsIHNy
Y09mZnNldCwgc3JjTGVuZ3RoKTsKKyAgICBpZiAoIWRhdGEpCisgICAgICAgIHJldHVybjsKKyAg
ICBtX2NvbnRleHQtPnVuaWZvcm1NYXRyaXgzeDRmdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgdHJh
bnNwb3NlLCBkYXRhLnZhbHVlKCkpOwogfQogCiB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6
OnVuaWZvcm1NYXRyaXg0eDNmdihXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEdDR0xi
b29sZWFuIHRyYW5zcG9zZSwgRmxvYXQzMkxpc3QmJiB2LCBHQ0dMdWludCBzcmNPZmZzZXQsIEdD
R0x1aW50IHNyY0xlbmd0aCkKIHsKLSAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8
ICF2YWxpZGF0ZVVuaWZvcm1NYXRyaXhQYXJhbWV0ZXJzKCJ1bmlmb3JtTWF0cml4NHgzZnYiLCBs
b2NhdGlvbiwgdHJhbnNwb3NlLCB2LCAxMiwgc3JjT2Zmc2V0LCBzcmNMZW5ndGgpKQorICAgIGlm
IChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBtX2NvbnRl
eHQtPnVuaWZvcm1NYXRyaXg0eDNmdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgdHJhbnNwb3NlLCB2
LmRhdGEoKSwgc3JjT2Zmc2V0LCAoc3JjTGVuZ3RoID8gc3JjTGVuZ3RoIDogdi5sZW5ndGgoKSAt
IHNyY09mZnNldCkgLyAxMik7CisgICAgYXV0byBkYXRhID0gdmFsaWRhdGVVbmlmb3JtTWF0cml4
UGFyYW1ldGVycygidW5pZm9ybU1hdHJpeDR4M2Z2IiwgbG9jYXRpb24sIHRyYW5zcG9zZSwgdiwg
MTIsIHNyY09mZnNldCwgc3JjTGVuZ3RoKTsKKyAgICBpZiAoIWRhdGEpCisgICAgICAgIHJldHVy
bjsKKyAgICBtX2NvbnRleHQtPnVuaWZvcm1NYXRyaXg0eDNmdihsb2NhdGlvbi0+bG9jYXRpb24o
KSwgdHJhbnNwb3NlLCBkYXRhLnZhbHVlKCkpOwogfQogCiB2b2lkIFdlYkdMMlJlbmRlcmluZ0Nv
bnRleHQ6OnZlcnRleEF0dHJpYkk0aShHQ0dMdWludCBpbmRleCwgR0NHTGludCB4LCBHQ0dMaW50
IHksIEdDR0xpbnQgeiwgR0NHTGludCB3KQpAQCAtMTY2NCw3ICsxNjk0LDcgQEAgdm9pZCBXZWJH
TDJSZW5kZXJpbmdDb250ZXh0Ojp2ZXJ0ZXhBdHRyaWJJNGl2KEdDR0x1aW50IGluZGV4LCBJbnQz
Mkxpc3QmJiBsaXN0KQogICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRH
TDo6SU5WQUxJRF9WQUxVRSwgInZlcnRleEF0dHJpYkk0aXYiLCAiaW5kZXggb3V0IG9mIHJhbmdl
Iik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgbV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWJJ
NGl2KGluZGV4LCBkYXRhKTsKKyAgICBtX2NvbnRleHQtPnZlcnRleEF0dHJpYkk0aXYoaW5kZXgs
IG1ha2VHQ0dMU3Bhbjw0PihkYXRhKSk7CiAgICAgbV92ZXJ0ZXhBdHRyaWJWYWx1ZVtpbmRleF0u
dHlwZSA9IEdyYXBoaWNzQ29udGV4dEdMOjpJTlQ7CiAgICAgbWVtY3B5KG1fdmVydGV4QXR0cmli
VmFsdWVbaW5kZXhdLmlWYWx1ZSwgZGF0YSwgc2l6ZW9mKG1fdmVydGV4QXR0cmliVmFsdWVbaW5k
ZXhdLmlWYWx1ZSkpOwogfQpAQCAtMTcwMiw3ICsxNzMyLDcgQEAgdm9pZCBXZWJHTDJSZW5kZXJp
bmdDb250ZXh0Ojp2ZXJ0ZXhBdHRyaWJJNHVpdihHQ0dMdWludCBpbmRleCwgVWludDMyTGlzdCYm
IGxpc3QKICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFM
SURfVkFMVUUsICJ2ZXJ0ZXhBdHRyaWJJNHVpdiIsICJpbmRleCBvdXQgb2YgcmFuZ2UiKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBtX2NvbnRleHQtPnZlcnRleEF0dHJpYkk0dWl2KGlu
ZGV4LCBkYXRhKTsKKyAgICBtX2NvbnRleHQtPnZlcnRleEF0dHJpYkk0dWl2KGluZGV4LCBtYWtl
R0NHTFNwYW48ND4oZGF0YSkpOwogICAgIG1fdmVydGV4QXR0cmliVmFsdWVbaW5kZXhdLnR5cGUg
PSBHcmFwaGljc0NvbnRleHRHTDo6VU5TSUdORURfSU5UOwogICAgIG1lbWNweShtX3ZlcnRleEF0
dHJpYlZhbHVlW2luZGV4XS51aVZhbHVlLCBkYXRhLCBzaXplb2YobV92ZXJ0ZXhBdHRyaWJWYWx1
ZVtpbmRleF0udWlWYWx1ZSkpOwogfQpAQCAtMTc2Myw4ICsxNzkzLDggQEAgdm9pZCBXZWJHTDJS
ZW5kZXJpbmdDb250ZXh0OjpkcmF3QnVmZmVycyhjb25zdCBWZWN0b3I8R0NHTGVudW0+JiBidWZm
ZXJzKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIC8vIEJlY2F1c2Ug
dGhlIGJhY2tidWZmZXIgaXMgc2ltdWxhdGVkIG9uIGFsbCBjdXJyZW50IFdlYktpdCBwb3J0cywg
d2UgbmVlZCB0byBjaGFuZ2UgQkFDSyB0byBDT0xPUl9BVFRBQ0hNRU5UMC4KLSAgICAgICAgR0NH
TGVudW0gdmFsdWUgPSAoYnVmc1swXSA9PSBHcmFwaGljc0NvbnRleHRHTDo6QkFDSykgPyBHcmFw
aGljc0NvbnRleHRHTDo6Q09MT1JfQVRUQUNITUVOVDAgOiBHcmFwaGljc0NvbnRleHRHTDo6Tk9O
RTsKLSAgICAgICAgbV9jb250ZXh0LT5kcmF3QnVmZmVycygxLCAmdmFsdWUpOworICAgICAgICBH
Q0dMZW51bSB2YWx1ZVsxXSB7IChidWZzWzBdID09IEdyYXBoaWNzQ29udGV4dEdMOjpCQUNLKSA/
IEdyYXBoaWNzQ29udGV4dEdMOjpDT0xPUl9BVFRBQ0hNRU5UMCA6IEdyYXBoaWNzQ29udGV4dEdM
OjpOT05FIH07CisgICAgICAgIG1fY29udGV4dC0+ZHJhd0J1ZmZlcnModmFsdWUpOwogICAgICAg
ICBzZXRCYWNrRHJhd0J1ZmZlcihidWZzWzBdKTsKICAgICB9IGVsc2UgewogICAgICAgICBpZiAo
biA+IGdldE1heERyYXdCdWZmZXJzKCkpIHsKQEAgLTE3ODMsMjggKzE4MTMsMzYgQEAgdm9pZCBX
ZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpkcmF3QnVmZmVycyhjb25zdCBWZWN0b3I8R0NHTGVudW0+
JiBidWZmZXJzKQogCiB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmNsZWFyQnVmZmVyaXYo
R0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50IGRyYXdidWZmZXIsIEludDMyTGlzdCYmIHZhbHVlcywg
R0NHTHVpbnQgc3JjT2Zmc2V0KQogewotICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkg
fHwgIXZhbGlkYXRlQ2xlYXJCdWZmZXIoImNsZWFyQnVmZmVyaXYiLCBidWZmZXIsIHZhbHVlcy5s
ZW5ndGgoKSwgc3JjT2Zmc2V0KSkKKyAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpKQor
ICAgICAgICByZXR1cm47CisgICAgYXV0byBkYXRhID0gdmFsaWRhdGVDbGVhckJ1ZmZlcigiY2xl
YXJCdWZmZXJpdiIsIGJ1ZmZlciwgdmFsdWVzLCBzcmNPZmZzZXQpOworICAgIGlmICghZGF0YSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9jb250ZXh0LT5jbGVhckJ1ZmZlcml2KGJ1ZmZlciwg
ZHJhd2J1ZmZlciwgdmFsdWVzLmRhdGEoKSwgc3JjT2Zmc2V0KTsKKyAgICBtX2NvbnRleHQtPmNs
ZWFyQnVmZmVyaXYoYnVmZmVyLCBkcmF3YnVmZmVyLCBkYXRhLnZhbHVlKCkpOwogICAgIHVwZGF0
ZUJ1ZmZlcnNUb0F1dG9DbGVhcihDbGVhckJ1ZmZlckNhbGxlcjo6Q2xlYXJCdWZmZXJpdiwgYnVm
ZmVyLCBkcmF3YnVmZmVyKTsKIH0KIAogdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpjbGVh
ckJ1ZmZlcnVpdihHQ0dMZW51bSBidWZmZXIsIEdDR0xpbnQgZHJhd2J1ZmZlciwgVWludDMyTGlz
dCYmIHZhbHVlcywgR0NHTHVpbnQgc3JjT2Zmc2V0KQogewotICAgIGlmIChpc0NvbnRleHRMb3N0
T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlQ2xlYXJCdWZmZXIoImNsZWFyQnVmZmVydWl2IiwgYnVm
ZmVyLCB2YWx1ZXMubGVuZ3RoKCksIHNyY09mZnNldCkpCisgICAgaWYgKGlzQ29udGV4dExvc3RP
clBlbmRpbmcoKSkKICAgICAgICAgcmV0dXJuOwotCi0gICAgbV9jb250ZXh0LT5jbGVhckJ1ZmZl
cnVpdihidWZmZXIsIGRyYXdidWZmZXIsIHZhbHVlcy5kYXRhKCksIHNyY09mZnNldCk7CisgICAg
YXV0byBkYXRhID0gdmFsaWRhdGVDbGVhckJ1ZmZlcigiY2xlYXJCdWZmZXJ1aXYiLCBidWZmZXIs
IHZhbHVlcywgc3JjT2Zmc2V0KTsKKyAgICBpZiAoIWRhdGEpCisgICAgICAgIHJldHVybjsKKyAg
ICBtX2NvbnRleHQtPmNsZWFyQnVmZmVydWl2KGJ1ZmZlciwgZHJhd2J1ZmZlciwgZGF0YS52YWx1
ZSgpKTsKICAgICB1cGRhdGVCdWZmZXJzVG9BdXRvQ2xlYXIoQ2xlYXJCdWZmZXJDYWxsZXI6OkNs
ZWFyQnVmZmVydWl2LCBidWZmZXIsIGRyYXdidWZmZXIpOwogfQogCiB2b2lkIFdlYkdMMlJlbmRl
cmluZ0NvbnRleHQ6OmNsZWFyQnVmZmVyZnYoR0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50IGRyYXdi
dWZmZXIsIEZsb2F0MzJMaXN0JiYgdmFsdWVzLCBHQ0dMdWludCBzcmNPZmZzZXQpCiB7Ci0gICAg
aWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVDbGVhckJ1ZmZlcigiY2xl
YXJCdWZmZXJmdiIsIGJ1ZmZlciwgdmFsdWVzLmxlbmd0aCgpLCBzcmNPZmZzZXQpKQorICAgIGlm
IChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCisgICAgICAgIHJldHVybjsKKyAgICBhdXRvIGRh
dGEgPSB2YWxpZGF0ZUNsZWFyQnVmZmVyKCJjbGVhckJ1ZmZlcmZ2IiwgYnVmZmVyLCB2YWx1ZXMs
IHNyY09mZnNldCk7CisgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2Nv
bnRleHQtPmNsZWFyQnVmZmVyZnYoYnVmZmVyLCBkcmF3YnVmZmVyLCB2YWx1ZXMuZGF0YSgpLCBz
cmNPZmZzZXQpOworICAgIG1fY29udGV4dC0+Y2xlYXJCdWZmZXJmdihidWZmZXIsIGRyYXdidWZm
ZXIsIGRhdGEudmFsdWUoKSk7CiAgICAgLy8gY2xlYXJCdWZmZXJpdiBhbmQgY2xlYXJCdWZmZXJ1
aXYgd2lsbCBjdXJyZW50bHkgZ2VuZXJhdGUgYW4gZXJyb3IKICAgICAvLyBpZiB0aGV5J3JlIGNh
bGxlZCBhZ2FpbnN0IHRoZSBkZWZhdWx0IGJhY2sgYnVmZmVyLiBJZiBzdXBwb3J0IGZvcgogICAg
IC8vIGV4dGVuZGVkIGNhbnZhcyBjb2xvciBzcGFjZXMgaXMgYWRkZWQsIHRoaXMgY2FsbCBtaWdo
dCBuZWVkIHRvIGJlCkBAIC0zMzcyLDExMCArMzQxMCwxNDQgQEAgYm9vbCBXZWJHTDJSZW5kZXJp
bmdDb250ZXh0Ojp2YWxpZGF0ZUNhcGFiaWxpdHkoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBH
Q0dMZW4KICAgICB9CiB9CiAKLWJvb2wgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dmFsaWRhdGVD
bGVhckJ1ZmZlcihjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIEdDR0xlbnVtIGJ1ZmZlciwgc2l6
ZV90IHNpemUsIEdDR0x1aW50IHNyY09mZnNldCkKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVu
YW1lIFR5cGVkQXJyYXlUeXBlPgorT3B0aW9uYWw8R0NHTFNwYW48Y29uc3QgVD4+IFdlYkdMMlJl
bmRlcmluZ0NvbnRleHQ6OnZhbGlkYXRlQ2xlYXJCdWZmZXIoY29uc3QgY2hhciogZnVuY3Rpb25O
YW1lLCBHQ0dMZW51bSBidWZmZXIsIFR5cGVkTGlzdDxUeXBlZEFycmF5VHlwZSwgVD4mIHZhbHVl
cywgR0NHTHVpbnQgc3JjT2Zmc2V0KQogewotICAgIENoZWNrZWQ8R0NHTHNpemVpLCBSZWNvcmRP
dmVyZmxvdz4gY2hlY2tlZFNpemUoc2l6ZSk7CisgICAgQ2hlY2tlZDxHQ0dMc2l6ZWksIFJlY29y
ZE92ZXJmbG93PiBjaGVja2VkU2l6ZSh2YWx1ZXMubGVuZ3RoKCkpOwogICAgIGNoZWNrZWRTaXpl
IC09IHNyY09mZnNldDsKICAgICBpZiAoY2hlY2tlZFNpemUuaGFzT3ZlcmZsb3dlZCgpKSB7CiAg
ICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX1ZBTFVF
LCBmdW5jdGlvbk5hbWUsICJpbnZhbGlkIGFycmF5IHNpemUgLyBzcmNPZmZzZXQiKTsKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4geyB9OwogICAgIH0KICAgICBzd2l0Y2gg
KGJ1ZmZlcikgewogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTE9SOgogICAgICAgICBp
ZiAoY2hlY2tlZFNpemUudW5zYWZlR2V0KCkgPCA0KSB7CiAgICAgICAgICAgICBzeW50aGVzaXpl
R0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9WQUxVRSwgZnVuY3Rpb25OYW1lLCAi
aW52YWxpZCBhcnJheSBzaXplIC8gc3JjT2Zmc2V0Iik7Ci0gICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgICAgICByZXR1cm4geyB9OwogICAgICAgICB9Ci0gICAgICAgIGJyZWFrOwor
ICAgICAgICByZXR1cm4gbWFrZUdDR0xTcGFuKHZhbHVlcy5kYXRhKCkgKyBzcmNPZmZzZXQsIDQp
OwogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkRFUFRIOgogICAgIGNhc2UgR3JhcGhpY3ND
b250ZXh0R0w6OlNURU5DSUw6CiAgICAgICAgIGlmIChjaGVja2VkU2l6ZS51bnNhZmVHZXQoKSA8
IDEpIHsKICAgICAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJ
TlZBTElEX1ZBTFVFLCBmdW5jdGlvbk5hbWUsICJpbnZhbGlkIGFycmF5IHNpemUgLyBzcmNPZmZz
ZXQiKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIHJldHVybiB7IH07
CiAgICAgICAgIH0KLSAgICAgICAgYnJlYWs7CisgICAgICAgIHJldHVybiBtYWtlR0NHTFNwYW4o
dmFsdWVzLmRhdGEoKSArIHNyY09mZnNldCwgMSk7CisKICAgICBkZWZhdWx0OgogICAgICAgICBz
eW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9FTlVNLCBmdW5jdGlv
bk5hbWUsICJpbnZhbGlkIGJ1ZmZlciIpOwotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
IHJldHVybiB7IH07CiAgICAgfQotICAgIHJldHVybiB0cnVlOwogfQogCiB2b2lkIFdlYkdMMlJl
bmRlcmluZ0NvbnRleHQ6OnVuaWZvcm0xZnYoV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9u
LCBGbG9hdDMyTGlzdCBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0
aCkKIHsKLSAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVVuaWZv
cm1QYXJhbWV0ZXJzKCJ1bmlmb3JtMWZ2IiwgbG9jYXRpb24sIGRhdGEsIDEsIHNyY09mZnNldCwg
c3JjTGVuZ3RoKSkKKyAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpKQogICAgICAgICBy
ZXR1cm47Ci0gICAgbV9jb250ZXh0LT51bmlmb3JtMWZ2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCBk
YXRhLmRhdGEoKSwgc3JjT2Zmc2V0LCBzcmNMZW5ndGggPyBzcmNMZW5ndGggOiAoZGF0YS5sZW5n
dGgoKSAtIHNyY09mZnNldCkpOworICAgIGF1dG8gcmVzdWx0ID0gdmFsaWRhdGVVbmlmb3JtUGFy
YW1ldGVycygidW5pZm9ybTFmdiIsIGxvY2F0aW9uLCBkYXRhLCAxLCBzcmNPZmZzZXQsIHNyY0xl
bmd0aCk7CisgICAgaWYgKCFyZXN1bHQpCisgICAgICAgIHJldHVybjsKKyAgICBtX2NvbnRleHQt
PnVuaWZvcm0xZnYobG9jYXRpb24tPmxvY2F0aW9uKCksIHJlc3VsdC52YWx1ZSgpKTsKIH0KIAog
dm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtMmZ2KFdlYkdMVW5pZm9ybUxvY2F0
aW9uKiBsb2NhdGlvbiwgRmxvYXQzMkxpc3QgZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dM
dWludCBzcmNMZW5ndGgpCiB7Ci0gICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAh
dmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycygidW5pZm9ybTJmdiIsIGxvY2F0aW9uLCBkYXRhLCAy
LCBzcmNPZmZzZXQsIHNyY0xlbmd0aCkpCisgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmco
KSkKICAgICAgICAgcmV0dXJuOwotICAgIG1fY29udGV4dC0+dW5pZm9ybTJmdihsb2NhdGlvbi0+
bG9jYXRpb24oKSwgZGF0YS5kYXRhKCksIHNyY09mZnNldCwgKHNyY0xlbmd0aCA/IHNyY0xlbmd0
aCA6IGRhdGEubGVuZ3RoKCkgLSBzcmNPZmZzZXQpIC8gMik7CisgICAgYXV0byByZXN1bHQgPSB2
YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKCJ1bmlmb3JtMmZ2IiwgbG9jYXRpb24sIGRhdGEsIDIs
IHNyY09mZnNldCwgc3JjTGVuZ3RoKTsKKyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgcmV0dXJu
OworICAgIG1fY29udGV4dC0+dW5pZm9ybTJmdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgcmVzdWx0
LnZhbHVlKCkpOwogfQogCiB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm0zZnYo
V2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBGbG9hdDMyTGlzdCBkYXRhLCBHQ0dMdWlu
dCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKIHsKLSAgICBpZiAoaXNDb250ZXh0TG9z
dE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKCJ1bmlmb3JtM2Z2Iiwg
bG9jYXRpb24sIGRhdGEsIDMsIHNyY09mZnNldCwgc3JjTGVuZ3RoKSkKKyAgICBpZiAoaXNDb250
ZXh0TG9zdE9yUGVuZGluZygpKQogICAgICAgICByZXR1cm47Ci0gICAgbV9jb250ZXh0LT51bmlm
b3JtM2Z2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCBkYXRhLmRhdGEoKSwgc3JjT2Zmc2V0LCAoc3Jj
TGVuZ3RoID8gc3JjTGVuZ3RoIDogZGF0YS5sZW5ndGgoKSAtIHNyY09mZnNldCkgLyAzKTsKKyAg
ICBhdXRvIHJlc3VsdCA9IHZhbGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMoInVuaWZvcm0zZnYiLCBs
b2NhdGlvbiwgZGF0YSwgMywgc3JjT2Zmc2V0LCBzcmNMZW5ndGgpOworICAgIGlmICghcmVzdWx0
KQorICAgICAgICByZXR1cm47CisgICAgbV9jb250ZXh0LT51bmlmb3JtM2Z2KGxvY2F0aW9uLT5s
b2NhdGlvbigpLCByZXN1bHQudmFsdWUoKSk7CiB9CiAKIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29u
dGV4dDo6dW5pZm9ybTRmdihXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEZsb2F0MzJM
aXN0IGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQogewotICAg
IGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlVW5pZm9ybVBhcmFtZXRl
cnMoInVuaWZvcm00ZnYiLCBsb2NhdGlvbiwgZGF0YSwgNCwgc3JjT2Zmc2V0LCBzcmNMZW5ndGgp
KQorICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCisgICAgICAgIHJldHVybjsKKyAg
ICBhdXRvIHJlc3VsdCA9IHZhbGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMoInVuaWZvcm00ZnYiLCBs
b2NhdGlvbiwgZGF0YSwgNCwgc3JjT2Zmc2V0LCBzcmNMZW5ndGgpOworICAgIGlmICghcmVzdWx0
KQogICAgICAgICByZXR1cm47Ci0gICAgbV9jb250ZXh0LT51bmlmb3JtNGZ2KGxvY2F0aW9uLT5s
b2NhdGlvbigpLCBkYXRhLmRhdGEoKSwgc3JjT2Zmc2V0LCAoc3JjTGVuZ3RoID8gc3JjTGVuZ3Ro
IDogZGF0YS5sZW5ndGgoKSAtIHNyY09mZnNldCkgLyA0KTsKKyAgICBtX2NvbnRleHQtPnVuaWZv
cm00ZnYobG9jYXRpb24tPmxvY2F0aW9uKCksIHJlc3VsdC52YWx1ZSgpKTsKIH0KIAogdm9pZCBX
ZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtMWl2KFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBs
b2NhdGlvbiwgSW50MzJMaXN0IGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3Jj
TGVuZ3RoKQogewotICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRl
VW5pZm9ybVBhcmFtZXRlcnMoInVuaWZvcm0xaXYiLCBsb2NhdGlvbiwgZGF0YSwgMSwgc3JjT2Zm
c2V0LCBzcmNMZW5ndGgpKQorICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCisgICAg
ICAgIHJldHVybjsKKyAgICBhdXRvIHJlc3VsdCA9IHZhbGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMo
InVuaWZvcm0xaXYiLCBsb2NhdGlvbiwgZGF0YSwgMSwgc3JjT2Zmc2V0LCBzcmNMZW5ndGgpOwor
ICAgIGlmICghcmVzdWx0KQogICAgICAgICByZXR1cm47Ci0gICAgbV9jb250ZXh0LT51bmlmb3Jt
MWl2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCBkYXRhLmRhdGEoKSwgc3JjT2Zmc2V0LCBzcmNMZW5n
dGggPyBzcmNMZW5ndGggOiAoZGF0YS5sZW5ndGgoKSAtIHNyY09mZnNldCkpOworICAgIG1fY29u
dGV4dC0+dW5pZm9ybTFpdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgcmVzdWx0LnZhbHVlKCkpOwog
fQogCiB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm0yaXYoV2ViR0xVbmlmb3Jt
TG9jYXRpb24qIGxvY2F0aW9uLCBJbnQzMkxpc3QgZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBH
Q0dMdWludCBzcmNMZW5ndGgpCiB7Ci0gICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8
fCAhdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycygidW5pZm9ybTJpdiIsIGxvY2F0aW9uLCBkYXRh
LCAyLCBzcmNPZmZzZXQsIHNyY0xlbmd0aCkpCisgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRp
bmcoKSkKKyAgICAgICAgcmV0dXJuOworICAgIGF1dG8gcmVzdWx0ID0gdmFsaWRhdGVVbmlmb3Jt
UGFyYW1ldGVycygidW5pZm9ybTJpdiIsIGxvY2F0aW9uLCBkYXRhLCAyLCBzcmNPZmZzZXQsIHNy
Y0xlbmd0aCk7CisgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgIHJldHVybjsKLSAgICBtX2NvbnRl
eHQtPnVuaWZvcm0yaXYobG9jYXRpb24tPmxvY2F0aW9uKCksIGRhdGEuZGF0YSgpLCBzcmNPZmZz
ZXQsIChzcmNMZW5ndGggPyBzcmNMZW5ndGggOiBkYXRhLmxlbmd0aCgpIC0gc3JjT2Zmc2V0KSAv
IDIpOworICAgIG1fY29udGV4dC0+dW5pZm9ybTJpdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgcmVz
dWx0LnZhbHVlKCkpOwogfQogCiB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm0z
aXYoV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBJbnQzMkxpc3QgZGF0YSwgR0NHTHVp
bnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCiB7Ci0gICAgaWYgKGlzQ29udGV4dExv
c3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycygidW5pZm9ybTNpdiIs
IGxvY2F0aW9uLCBkYXRhLCAzLCBzcmNPZmZzZXQsIHNyY0xlbmd0aCkpCisgICAgaWYgKGlzQ29u
dGV4dExvc3RPclBlbmRpbmcoKSkKKyAgICAgICAgcmV0dXJuOworICAgIGF1dG8gcmVzdWx0ID0g
dmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycygidW5pZm9ybTNpdiIsIGxvY2F0aW9uLCBkYXRhLCAz
LCBzcmNPZmZzZXQsIHNyY0xlbmd0aCk7CisgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgIHJldHVy
bjsKLSAgICBtX2NvbnRleHQtPnVuaWZvcm0zaXYobG9jYXRpb24tPmxvY2F0aW9uKCksIGRhdGEu
ZGF0YSgpLCBzcmNPZmZzZXQsIChzcmNMZW5ndGggPyBzcmNMZW5ndGggOiBkYXRhLmxlbmd0aCgp
IC0gc3JjT2Zmc2V0KSAvIDMpOworICAgIG1fY29udGV4dC0+dW5pZm9ybTNpdihsb2NhdGlvbi0+
bG9jYXRpb24oKSwgcmVzdWx0LnZhbHVlKCkpOwogfQogCiB2b2lkIFdlYkdMMlJlbmRlcmluZ0Nv
bnRleHQ6OnVuaWZvcm00aXYoV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBJbnQzMkxp
c3QgZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCiB7Ci0gICAg
aWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVy
cygidW5pZm9ybTRpdiIsIGxvY2F0aW9uLCBkYXRhLCA0LCBzcmNPZmZzZXQsIHNyY0xlbmd0aCkp
CisgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSkKICAgICAgICAgcmV0dXJuOwotICAg
IG1fY29udGV4dC0+dW5pZm9ybTRpdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgZGF0YS5kYXRhKCks
IHNyY09mZnNldCwgKHNyY0xlbmd0aCA/IHNyY0xlbmd0aCA6IGRhdGEubGVuZ3RoKCkgLSBzcmNP
ZmZzZXQpIC8gNCk7CisgICAgYXV0byByZXN1bHQgPSB2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJz
KCJ1bmlmb3JtNGl2IiwgbG9jYXRpb24sIGRhdGEsIDQsIHNyY09mZnNldCwgc3JjTGVuZ3RoKTsK
KyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgcmV0dXJuOworICAgIG1fY29udGV4dC0+dW5pZm9y
bTRpdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgcmVzdWx0LnZhbHVlKCkpOwogfQogCiB2b2lkIFdl
YkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm1NYXRyaXgyZnYoV2ViR0xVbmlmb3JtTG9jYXRp
b24qIGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEZsb2F0MzJMaXN0IGRhdGEsIEdD
R0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQogewotICAgIGlmIChpc0NvbnRl
eHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlVW5pZm9ybU1hdHJpeFBhcmFtZXRlcnMoInVu
aWZvcm1NYXRyaXgyZnYiLCBsb2NhdGlvbiwgdHJhbnNwb3NlLCBkYXRhLCAyKjIsIHNyY09mZnNl
dCwgc3JjTGVuZ3RoKSkKKyAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpKQogICAgICAg
ICByZXR1cm47Ci0gICAgbV9jb250ZXh0LT51bmlmb3JtTWF0cml4MmZ2KGxvY2F0aW9uLT5sb2Nh
dGlvbigpLCB0cmFuc3Bvc2UsIGRhdGEuZGF0YSgpLCBzcmNPZmZzZXQsIChzcmNMZW5ndGggPyBz
cmNMZW5ndGggOiBkYXRhLmxlbmd0aCgpIC0gc3JjT2Zmc2V0KSAvICgyKjIpKTsKKyAgICBhdXRv
IHJlc3VsdCA9IHZhbGlkYXRlVW5pZm9ybU1hdHJpeFBhcmFtZXRlcnMoInVuaWZvcm1NYXRyaXgy
ZnYiLCBsb2NhdGlvbiwgdHJhbnNwb3NlLCBkYXRhLCAyKjIsIHNyY09mZnNldCwgc3JjTGVuZ3Ro
KTsKKyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgcmV0dXJuOworICAgIG1fY29udGV4dC0+dW5p
Zm9ybU1hdHJpeDJmdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgdHJhbnNwb3NlLCByZXN1bHQudmFs
dWUoKSk7CiB9CiAKIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybU1hdHJpeDNm
dihXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwg
RmxvYXQzMkxpc3QgZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgp
CiB7Ci0gICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVVbmlmb3Jt
TWF0cml4UGFyYW1ldGVycygidW5pZm9ybU1hdHJpeDNmdiIsIGxvY2F0aW9uLCB0cmFuc3Bvc2Us
IGRhdGEsIDMqMywgc3JjT2Zmc2V0LCBzcmNMZW5ndGgpKQorICAgIGlmIChpc0NvbnRleHRMb3N0
T3JQZW5kaW5nKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBtX2NvbnRleHQtPnVuaWZvcm1NYXRy
aXgzZnYobG9jYXRpb24tPmxvY2F0aW9uKCksIHRyYW5zcG9zZSwgZGF0YS5kYXRhKCksIHNyY09m
ZnNldCwgKHNyY0xlbmd0aCA/IHNyY0xlbmd0aCA6IGRhdGEubGVuZ3RoKCkgLSBzcmNPZmZzZXQp
IC8gKDMqMykpOworICAgIGF1dG8gcmVzdWx0ID0gdmFsaWRhdGVVbmlmb3JtTWF0cml4UGFyYW1l
dGVycygidW5pZm9ybU1hdHJpeDNmdiIsIGxvY2F0aW9uLCB0cmFuc3Bvc2UsIGRhdGEsIDMqMywg
c3JjT2Zmc2V0LCBzcmNMZW5ndGgpOworICAgIGlmICghcmVzdWx0KQorICAgICAgICByZXR1cm47
CisgICAgbV9jb250ZXh0LT51bmlmb3JtTWF0cml4M2Z2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCB0
cmFuc3Bvc2UsIHJlc3VsdC52YWx1ZSgpKTsKIH0KIAogdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250
ZXh0Ojp1bmlmb3JtTWF0cml4NGZ2KFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgR0NH
TGJvb2xlYW4gdHJhbnNwb3NlLCBGbG9hdDMyTGlzdCBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQs
IEdDR0x1aW50IHNyY0xlbmd0aCkKIHsKLSAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygp
IHx8ICF2YWxpZGF0ZVVuaWZvcm1NYXRyaXhQYXJhbWV0ZXJzKCJ1bmlmb3JtTWF0cml4NGZ2Iiwg
bG9jYXRpb24sIHRyYW5zcG9zZSwgZGF0YSwgNCo0LCBzcmNPZmZzZXQsIHNyY0xlbmd0aCkpCisg
ICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSkKKyAgICAgICAgcmV0dXJuOworICAgIGF1
dG8gcmVzdWx0ID0gdmFsaWRhdGVVbmlmb3JtTWF0cml4UGFyYW1ldGVycygidW5pZm9ybU1hdHJp
eDRmdiIsIGxvY2F0aW9uLCB0cmFuc3Bvc2UsIGRhdGEsIDQqNCwgc3JjT2Zmc2V0LCBzcmNMZW5n
dGgpOworICAgIGlmICghcmVzdWx0KQogICAgICAgICByZXR1cm47Ci0gICAgbV9jb250ZXh0LT51
bmlmb3JtTWF0cml4NGZ2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCB0cmFuc3Bvc2UsIGRhdGEuZGF0
YSgpLCBzcmNPZmZzZXQsIChzcmNMZW5ndGggPyBzcmNMZW5ndGggOiBkYXRhLmxlbmd0aCgpIC0g
c3JjT2Zmc2V0KSAvICg0KjQpKTsKKyAgICBtX2NvbnRleHQtPnVuaWZvcm1NYXRyaXg0ZnYobG9j
YXRpb24tPmxvY2F0aW9uKCksIHRyYW5zcG9zZSwgcmVzdWx0LnZhbHVlKCkpOwogfQogCiB2b2lk
IFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnJlYWRQaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHks
IEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dM
ZW51bSB0eXBlLCBBcnJheUJ1ZmZlclZpZXcmIHBpeGVscykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuaAppbmRleCBiOGIwMzZlNDQ3
NmE0ZjE1ZDRlNTA2NzU4YzU3NTkzNWUwYTA2MjRmLi41ZjQ3ZTYxZjBhNDQ0NGEyODhjMWI0NjBm
YjRlMGY3MzY2NzQ2Njc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTDJSZW5kZXJpbmdDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0wyUmVuZGVyaW5nQ29udGV4dC5oCkBAIC0yOTIsNyArMjkyLDggQEAgcHJpdmF0ZToKICAg
ICBib29sIHZhbGlkYXRlSW5kZXhBcnJheUNvbnNlcnZhdGl2ZShHQ0dMZW51bSB0eXBlLCB1bnNp
Z25lZCYgbnVtRWxlbWVudHNSZXF1aXJlZCkgZmluYWw7CiAgICAgYm9vbCB2YWxpZGF0ZUJsZW5k
RXF1YXRpb24oY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBHQ0dMZW51bSBtb2RlKSBmaW5hbDsK
ICAgICBib29sIHZhbGlkYXRlQ2FwYWJpbGl0eShjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIEdD
R0xlbnVtIGNhcCkgZmluYWw7Ci0gICAgYm9vbCB2YWxpZGF0ZUNsZWFyQnVmZmVyKGNvbnN0IGNo
YXIqIGZ1bmN0aW9uTmFtZSwgR0NHTGVudW0gYnVmZmVyLCBzaXplX3QsIEdDR0x1aW50IHNyY09m
ZnNldCk7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVHlwZWRBcnJheVR5cGU+
CisgICAgT3B0aW9uYWw8R0NHTFNwYW48Y29uc3QgVD4+IHZhbGlkYXRlQ2xlYXJCdWZmZXIoY29u
c3QgY2hhciogZnVuY3Rpb25OYW1lLCBHQ0dMZW51bSBidWZmZXIsIFR5cGVkTGlzdDxUeXBlZEFy
cmF5VHlwZSwgVD4mIHZhbHVlcywgR0NHTHVpbnQgc3JjT2Zmc2V0KTsKICAgICBib29sIHZhbGlk
YXRlRnJhbWVidWZmZXJUYXJnZXQoR0NHTGVudW0gdGFyZ2V0KSBmaW5hbDsKICAgICBXZWJHTEZy
YW1lYnVmZmVyKiBnZXRGcmFtZWJ1ZmZlckJpbmRpbmcoR0NHTGVudW0gdGFyZ2V0KSBmaW5hbDsK
ICAgICBXZWJHTEZyYW1lYnVmZmVyKiBnZXRSZWFkRnJhbWVidWZmZXJCaW5kaW5nKCkgZmluYWw7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTERyYXdCdWZmZXJz
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRHJhd0J1ZmZlcnMuY3BwCmlu
ZGV4IDQ5NDE1NmUxZTY1YjYwMjkxOTBkYjdjMWMwMjZhZGY4MDNkZGE4ZDIuLmU1Y2ViNGJkZGNj
NGMwNTFkYjhiOWFhOWNlMDIwODFiZjIyMzA1MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMRHJhd0J1ZmZlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMRHJhd0J1ZmZlcnMuY3BwCkBAIC03NCw4ICs3NCw4IEBAIHZvaWQgV2Vi
R0xEcmF3QnVmZmVyczo6ZHJhd0J1ZmZlcnNXRUJHTChjb25zdCBWZWN0b3I8R0NHTGVudW0+JiBi
dWZmZXJzKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIC8vIEJlY2F1
c2UgdGhlIGJhY2tidWZmZXIgaXMgc2ltdWxhdGVkIG9uIGFsbCBjdXJyZW50IFdlYktpdCBwb3J0
cywgd2UgbmVlZCB0byBjaGFuZ2UgQkFDSyB0byBDT0xPUl9BVFRBQ0hNRU5UMC4KLSAgICAgICAg
R0NHTGVudW0gdmFsdWUgPSAoYnVmc1swXSA9PSBHcmFwaGljc0NvbnRleHRHTDo6QkFDSykgPyBH
cmFwaGljc0NvbnRleHRHTDo6Q09MT1JfQVRUQUNITUVOVDAgOiBHcmFwaGljc0NvbnRleHRHTDo6
Tk9ORTsKLSAgICAgICAgbV9jb250ZXh0LT5ncmFwaGljc0NvbnRleHRHTCgpLT5nZXRFeHRlbnNp
b25zKCkuZHJhd0J1ZmZlcnNFWFQoMSwgJnZhbHVlKTsKKyAgICAgICAgR0NHTGVudW0gdmFsdWVb
MV0geyAoYnVmc1swXSA9PSBHcmFwaGljc0NvbnRleHRHTDo6QkFDSykgPyBHcmFwaGljc0NvbnRl
eHRHTDo6Q09MT1JfQVRUQUNITUVOVDAgOiBHcmFwaGljc0NvbnRleHRHTDo6Tk9ORSB9OworICAg
ICAgICBtX2NvbnRleHQtPmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5kcmF3
QnVmZmVyc0VYVCh2YWx1ZSk7CiAgICAgICAgIG1fY29udGV4dC0+c2V0QmFja0RyYXdCdWZmZXIo
YnVmc1swXSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgaWYgKG4gPiBtX2NvbnRleHQtPmdldE1h
eERyYXdCdWZmZXJzKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMRnJhbWVidWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xG
cmFtZWJ1ZmZlci5jcHAKaW5kZXggMzY1OGVlOGVhYWY3ZjBkYmI4ODYzY2VkNTAyNDI1ZjRmYjRl
MjNhNS4uYjE5OGIzNjZiMTFmMTViMWI4MDNiZDA2M2M3NmM0ZjJjZDhkMTE3OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5jcHAKQEAgLTcwMiwx
MyArNzAyLDEwIEBAIHZvaWQgV2ViR0xGcmFtZWJ1ZmZlcjo6ZHJhd0J1ZmZlcnNJZk5lY2Vzc2Fy
eShib29sIGZvcmNlKQogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGlmIChyZXNl
dCkgewotICAgICAgICAgICAgaWYgKGNvbnRleHQoKS0+aXNXZWJHTDIoKSkgewotICAgICAgICAg
ICAgICAgIGNvbnRleHQoKS0+Z3JhcGhpY3NDb250ZXh0R0woKS0+ZHJhd0J1ZmZlcnMoCi0gICAg
ICAgICAgICAgICAgICAgIG1fZmlsdGVyZWREcmF3QnVmZmVycy5zaXplKCksIG1fZmlsdGVyZWRE
cmF3QnVmZmVycy5kYXRhKCkpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAg
ICBjb250ZXh0KCktPmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5kcmF3QnVm
ZmVyc0VYVCgKLSAgICAgICAgICAgICAgICAgICAgbV9maWx0ZXJlZERyYXdCdWZmZXJzLnNpemUo
KSwgbV9maWx0ZXJlZERyYXdCdWZmZXJzLmRhdGEoKSk7Ci0gICAgICAgICAgICB9CisgICAgICAg
ICAgICBpZiAoY29udGV4dCgpLT5pc1dlYkdMMigpKQorICAgICAgICAgICAgICAgIGNvbnRleHQo
KS0+Z3JhcGhpY3NDb250ZXh0R0woKS0+ZHJhd0J1ZmZlcnMobV9maWx0ZXJlZERyYXdCdWZmZXJz
KTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBjb250ZXh0KCktPmdyYXBoaWNz
Q29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5kcmF3QnVmZmVyc0VYVChtX2ZpbHRlcmVkRHJh
d0J1ZmZlcnMpOwogICAgICAgICB9CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAppbmRleCAxODVl
OGM2MmU2ZmJlMzFmMzEzODhjMGM5ZjgwZDgxY2VlMjRhM2IxLi4yNTRjYzk3YjQxNTU1MzQwMzZm
NWJkMmVhZjg3ZjA2OTYxNDc0NWQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcApAQCAtMTYwMyw3ICsxNjAz
LDcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpidWZmZXJEYXRhKEdDR0xlbnVt
IHRhcmdldCwgT3B0aW9uYWw8QnVmZmVyRGF0YVMKICAgICAgICAgfQogCiAgICAgICAgIG1fY29u
dGV4dC0+bW92ZUVycm9yc1RvU3ludGhldGljRXJyb3JMaXN0KCk7Ci0gICAgICAgIG1fY29udGV4
dC0+YnVmZmVyRGF0YSh0YXJnZXQsIGRhdGEtPmJ5dGVMZW5ndGgoKSwgZGF0YS0+ZGF0YSgpLCB1
c2FnZSk7CisgICAgICAgIG1fY29udGV4dC0+YnVmZmVyRGF0YSh0YXJnZXQsIEdDR0xTcGFuPGNv
bnN0IEdDR0x2b2lkPihkYXRhLT5kYXRhKCksIGRhdGEtPmJ5dGVMZW5ndGgoKSksIHVzYWdlKTsK
ICAgICAgICAgaWYgKG1fY29udGV4dC0+bW92ZUVycm9yc1RvU3ludGhldGljRXJyb3JMaXN0KCkp
IHsKICAgICAgICAgICAgIC8vIFRoZSBidWZmZXJEYXRhIGZ1bmN0aW9uIGZhaWxlZC4gVGVsbCB0
aGUgYnVmZmVyIGl0IGRvZXNuJ3QgaGF2ZSB0aGUgZGF0YSBpdCB0aGlua3MgaXQgZG9lcy4KICAg
ICAgICAgICAgIGJ1ZmZlci0+ZGlzYXNzb2NpYXRlQnVmZmVyRGF0YSgpOwpAQCAtMTYzMCw3ICsx
NjMwLDcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpidWZmZXJTdWJEYXRhKEdD
R0xlbnVtIHRhcmdldCwgbG9uZyBsb25nIG9mZnNldCwKICAgICAgICAgfQogCiAgICAgICAgIG1f
Y29udGV4dC0+bW92ZUVycm9yc1RvU3ludGhldGljRXJyb3JMaXN0KCk7Ci0gICAgICAgIG1fY29u
dGV4dC0+YnVmZmVyU3ViRGF0YSh0YXJnZXQsIHN0YXRpY19jYXN0PEdDR0xpbnRwdHI+KG9mZnNl
dCksIGRhdGEtPmJ5dGVMZW5ndGgoKSwgZGF0YS0+ZGF0YSgpKTsKKyAgICAgICAgbV9jb250ZXh0
LT5idWZmZXJTdWJEYXRhKHRhcmdldCwgc3RhdGljX2Nhc3Q8R0NHTGludHB0cj4ob2Zmc2V0KSwg
R0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+KGRhdGEtPmRhdGEoKSwgZGF0YS0+Ynl0ZUxlbmd0aCgp
KSk7CiAgICAgICAgIGlmIChtX2NvbnRleHQtPm1vdmVFcnJvcnNUb1N5bnRoZXRpY0Vycm9yTGlz
dCgpKSB7CiAgICAgICAgICAgICAvLyBUaGUgYnVmZmVyU3ViRGF0YSBmdW5jdGlvbiBmYWlsZWQu
IFRlbGwgdGhlIGJ1ZmZlciBpdCBkb2Vzbid0IGhhdmUgdGhlIGRhdGEgaXQgdGhpbmtzIGl0IGRv
ZXMuCiAgICAgICAgICAgICBidWZmZXItPmRpc2Fzc29jaWF0ZUJ1ZmZlckRhdGEoKTsKQEAgLTE3
NTcsNyArMTc1Nyw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Y29tcHJlc3Nl
ZFRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxlCiAgICAgaWYgKCF2YWxpZGF0
ZVRleHR1cmUyREJpbmRpbmcoImNvbXByZXNzZWRUZXhJbWFnZTJEIiwgdGFyZ2V0KSkKICAgICAg
ICAgcmV0dXJuOwogICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmNvbXByZXNzZWRUZXhJ
bWFnZTJEUm9idXN0QU5HTEUodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBo
ZWlnaHQsCi0gICAgICAgIGJvcmRlciwgZGF0YS5ieXRlTGVuZ3RoKCksIGRhdGEuYnl0ZUxlbmd0
aCgpLCBkYXRhLmJhc2VBZGRyZXNzKCkpOworICAgICAgICBib3JkZXIsIGRhdGEuYnl0ZUxlbmd0
aCgpLCBtYWtlR0NHTFNwYW4oZGF0YS5iYXNlQWRkcmVzcygpLCBkYXRhLmJ5dGVMZW5ndGgoKSkp
OwogI2Vsc2UKICAgICBpZiAoIXZhbGlkYXRlVGV4RnVuY0xldmVsKCJjb21wcmVzc2VkVGV4SW1h
Z2UyRCIsIHRhcmdldCwgbGV2ZWwpKQogICAgICAgICByZXR1cm47CkBAIC0xODAxLDcgKzE4MDEs
NyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmNvbXByZXNzZWRUZXhTdWJJbWFn
ZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludAogI2lmIFVTRShBTkdMRSkKICAgICBpZiAoIXZh
bGlkYXRlVGV4dHVyZTJEQmluZGluZygiY29tcHJlc3NlZFRleFN1YkltYWdlMkQiLCB0YXJnZXQp
KQogICAgICAgICByZXR1cm47Ci0gICAgZ3JhcGhpY3NDb250ZXh0R0woKS0+Z2V0RXh0ZW5zaW9u
cygpLmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEUm9idXN0QU5HTEUodGFyZ2V0LCBsZXZlbCwgeG9m
ZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCBkYXRhLmJ5dGVMZW5ndGgoKSwg
ZGF0YS5ieXRlTGVuZ3RoKCksIGRhdGEuYmFzZUFkZHJlc3MoKSk7CisgICAgZ3JhcGhpY3NDb250
ZXh0R0woKS0+Z2V0RXh0ZW5zaW9ucygpLmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEUm9idXN0QU5H
TEUodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0
LCBkYXRhLmJ5dGVMZW5ndGgoKSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+KGRhdGEuYmFzZUFk
ZHJlc3MoKSwgZGF0YS5ieXRlTGVuZ3RoKCkpKTsKICNlbHNlCiAgICAgaWYgKCF2YWxpZGF0ZVRl
eEZ1bmNMZXZlbCgiY29tcHJlc3NlZFRleFN1YkltYWdlMkQiLCB0YXJnZXQsIGxldmVsKSkKICAg
ICAgICAgcmV0dXJuOwpAQCAtNDcwOSwxMiArNDcwOSwxMiBAQCBFeGNlcHRpb25Pcjx2b2lkPiBX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp0ZXhJbWFnZVNvdXJjZUhlbHBlcihUZXhJbWFnZUZ1
bmN0aQogICAgICAgICAgICAgaWYgKGZ1bmN0aW9uSUQgPT0gVGV4SW1hZ2VGdW5jdGlvbklEOjpU
ZXhJbWFnZTNEKSB7CiAgICAgICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCku
dGV4SW1hZ2UzRFJvYnVzdEFOR0xFKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LAogICAg
ICAgICAgICAgICAgICAgICBhZGp1c3RlZFNvdXJjZUltYWdlUmVjdC53aWR0aCgpLCBhZGp1c3Rl
ZFNvdXJjZUltYWdlUmVjdC5oZWlnaHQoKSwgZGVwdGgsIDAsCi0gICAgICAgICAgICAgICAgICAg
IGZvcm1hdCwgdHlwZSwgYnl0ZUxlbmd0aCwgbmVlZENvbnZlcnNpb24gPyBkYXRhLmRhdGEoKSA6
IHBpeGVscy0+ZGF0YSgpLT5kYXRhKCkpOworICAgICAgICAgICAgICAgICAgICBmb3JtYXQsIHR5
cGUsIG1ha2VHQ0dMU3BhbihuZWVkQ29udmVyc2lvbiA/IGRhdGEuZGF0YSgpIDogcGl4ZWxzLT5k
YXRhKCktPmRhdGEoKSwgYnl0ZUxlbmd0aCkpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAg
ICAgICAgICAgICBBU1NFUlQoZnVuY3Rpb25JRCA9PSBUZXhJbWFnZUZ1bmN0aW9uSUQ6OlRleFN1
YkltYWdlM0QpOwogICAgICAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnRl
eFN1YkltYWdlM0RSb2J1c3RBTkdMRSh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB6
b2Zmc2V0LAogICAgICAgICAgICAgICAgICAgICBhZGp1c3RlZFNvdXJjZUltYWdlUmVjdC53aWR0
aCgpLCBhZGp1c3RlZFNvdXJjZUltYWdlUmVjdC5oZWlnaHQoKSwgZGVwdGgsCi0gICAgICAgICAg
ICAgICAgICAgIGZvcm1hdCwgdHlwZSwgYnl0ZUxlbmd0aCwgbmVlZENvbnZlcnNpb24gPyBkYXRh
LmRhdGEoKSA6IHBpeGVscy0+ZGF0YSgpLT5kYXRhKCkpOworICAgICAgICAgICAgICAgICAgICBm
b3JtYXQsIHR5cGUsIG1ha2VHQ0dMU3BhbihuZWVkQ29udmVyc2lvbiA/IGRhdGEuZGF0YSgpIDog
cGl4ZWxzLT5kYXRhKCktPmRhdGEoKSwgYnl0ZUxlbmd0aCkpOwogICAgICAgICAgICAgfQogI2Vs
c2UKICAgICAgICAgICAgIC8vIFdlYkdMIDIuMCBpcyBvbmx5IHN1cHBvcnRlZCB3aXRoIHRoZSBB
TkdMRSBiYWNrZW5kLgpAQCAtNDg5NCwxMSArNDg5NCwxMSBAQCB2b2lkIFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2U6OnRleEltYWdlQXJyYXlCdWZmZXJWaWV3SGVscGVyKFRleEltYWdlRnVuY3Rp
b25JRAogICAgIH0KICNpZiBVU0UoQU5HTEUpCiAgICAgaWYgKGZ1bmN0aW9uSUQgPT0gVGV4SW1h
Z2VGdW5jdGlvbklEOjpUZXhJbWFnZTNEKSB7Ci0gICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5z
aW9ucygpLnRleEltYWdlM0RSb2J1c3RBTkdMRSh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1h
dCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGJvcmRlciwgZm9ybWF0LCB0eXBlLCBieXRlTGVuZ3Ro
LCBkYXRhKTsKKyAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkudGV4SW1hZ2UzRFJv
YnVzdEFOR0xFKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBk
ZXB0aCwgYm9yZGVyLCBmb3JtYXQsIHR5cGUsIG1ha2VHQ0dMU3BhbihkYXRhLCBieXRlTGVuZ3Ro
KSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgaWYgKGZ1bmN0aW9uSUQgPT0gVGV4SW1h
Z2VGdW5jdGlvbklEOjpUZXhTdWJJbWFnZTNEKSB7Ci0gICAgICAgIG1fY29udGV4dC0+Z2V0RXh0
ZW5zaW9ucygpLnRleFN1YkltYWdlM0RSb2J1c3RBTkdMRSh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0
LCB5b2Zmc2V0LCB6b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgZm9ybWF0LCB0eXBlLCBi
eXRlTGVuZ3RoLCBkYXRhKTsKKyAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkudGV4
U3ViSW1hZ2UzRFJvYnVzdEFOR0xFKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHpv
ZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBmb3JtYXQsIHR5cGUsIG1ha2VHQ0dMU3Bhbihk
YXRhLCBieXRlTGVuZ3RoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAjZW5kaWYgLy8gVVNF
KEFOR0xFKQpAQCAtNDk3NSwxMiArNDk3NSwxMiBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2U6OnRleEltYWdlSW1wbChUZXhJbWFnZUZ1bmN0aW9uSUQgZnVuY3Rpb25JRCwgR0NHTAog
ICAgICAgICBpZiAoZnVuY3Rpb25JRCA9PSBUZXhJbWFnZUZ1bmN0aW9uSUQ6OlRleEltYWdlM0Qp
IHsKICAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnRleEltYWdlM0RSb2J1
c3RBTkdMRSh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwKICAgICAgICAgICAgICAgICBh
ZGp1c3RlZFNvdXJjZUltYWdlUmVjdC53aWR0aCgpLCBhZGp1c3RlZFNvdXJjZUltYWdlUmVjdC5o
ZWlnaHQoKSwgZGVwdGgsIDAsCi0gICAgICAgICAgICAgICAgZm9ybWF0LCB0eXBlLCBieXRlTGVu
Z3RoLCBuZWVkQ29udmVyc2lvbiA/IGRhdGEuZGF0YSgpIDogaW1hZ2VQaXhlbERhdGEpOworICAg
ICAgICAgICAgICAgIGZvcm1hdCwgdHlwZSwgbWFrZUdDR0xTcGFuKG5lZWRDb252ZXJzaW9uID8g
ZGF0YS5kYXRhKCkgOiBpbWFnZVBpeGVsRGF0YSwgYnl0ZUxlbmd0aCkpOwogICAgICAgICB9IGVs
c2UgewogICAgICAgICAgICAgQVNTRVJUKGZ1bmN0aW9uSUQgPT0gVGV4SW1hZ2VGdW5jdGlvbklE
OjpUZXhTdWJJbWFnZTNEKTsKICAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygp
LnRleFN1YkltYWdlM0RSb2J1c3RBTkdMRSh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0
LCB6b2Zmc2V0LAogICAgICAgICAgICAgICAgIGFkanVzdGVkU291cmNlSW1hZ2VSZWN0LndpZHRo
KCksIGFkanVzdGVkU291cmNlSW1hZ2VSZWN0LmhlaWdodCgpLCBkZXB0aCwKLSAgICAgICAgICAg
ICAgICBmb3JtYXQsIHR5cGUsIGJ5dGVMZW5ndGgsIG5lZWRDb252ZXJzaW9uID8gZGF0YS5kYXRh
KCkgOiBpbWFnZVBpeGVsRGF0YSk7CisgICAgICAgICAgICAgICAgZm9ybWF0LCB0eXBlLCBtYWtl
R0NHTFNwYW4obmVlZENvbnZlcnNpb24gPyBkYXRhLmRhdGEoKSA6IGltYWdlUGl4ZWxEYXRhLCBi
eXRlTGVuZ3RoKSk7CiAgICAgICAgIH0KICNlbHNlCiAgICAgICAgIFVOVVNFRF9QQVJBTSh6b2Zm
c2V0KTsKQEAgLTQ5OTMsNyArNDk5Myw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZTo6dGV4SW1hZ2VJbXBsKFRleEltYWdlRnVuY3Rpb25JRCBmdW5jdGlvbklELCBHQ0dMCiB2b2lk
IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnRleEltYWdlMkRCYXNlKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEdDR0xzaXplaSB3aWR0
aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NH
TGVudW0gdHlwZSwgR0NHTHNpemVpIGJ5dGVMZW5ndGgsIGNvbnN0IHZvaWQqIHBpeGVscykKIHsK
ICNpZiBVU0UoQU5HTEUpCi0gICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkudGV4SW1hZ2Uy
RFJvYnVzdEFOR0xFKHRhcmdldCwgbGV2ZWwsIGludGVybmFsRm9ybWF0LCB3aWR0aCwgaGVpZ2h0
LCBib3JkZXIsIGZvcm1hdCwgdHlwZSwgYnl0ZUxlbmd0aCwgcGl4ZWxzKTsKKyAgICBtX2NvbnRl
eHQtPmdldEV4dGVuc2lvbnMoKS50ZXhJbWFnZTJEUm9idXN0QU5HTEUodGFyZ2V0LCBsZXZlbCwg
aW50ZXJuYWxGb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGJvcmRlciwgZm9ybWF0LCB0eXBlLCBtYWtl
R0NHTFNwYW4ocGl4ZWxzLCBieXRlTGVuZ3RoKSk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShi
eXRlTGVuZ3RoKTsKICAgICAvLyBGSVhNRTogRm9yIG5vdyB3ZSBpZ25vcmUgYW55IGVycm9ycyBy
ZXR1cm5lZC4KQEAgLTUwMjMsNyArNTAyMyw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZTo6dGV4U3ViSW1hZ2UyREJhc2UoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsCiAg
ICAgQVNTRVJUKCFpc0NvbnRleHRMb3N0KCkpOwogI2lmIFVTRShBTkdMRSkKICAgICBVTlVTRURf
UEFSQU0oaW50ZXJuYWxGb3JtYXQpOwotICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnRl
eFN1YkltYWdlMkRSb2J1c3RBTkdMRSh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB3
aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIGJ5dGVMZW5ndGgsIHBpeGVscyk7CisgICAgbV9j
b250ZXh0LT5nZXRFeHRlbnNpb25zKCkudGV4U3ViSW1hZ2UyRFJvYnVzdEFOR0xFKHRhcmdldCwg
bGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgbWFr
ZUdDR0xTcGFuKHBpeGVscywgYnl0ZUxlbmd0aCkpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0o
Ynl0ZUxlbmd0aCk7CiAgICAgQVNTRVJUKHZhbGlkYXRlVGV4RnVuY1BhcmFtZXRlcnMoInRleFN1
YkltYWdlMkQiLCBUZXhJbWFnZUZ1bmN0aW9uVHlwZTo6VGV4U3ViSW1hZ2UsIFNvdXJjZUFycmF5
QnVmZmVyVmlldywgdGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxGb3JtYXQsIHdpZHRoLCBoZWlnaHQs
IDEsIDAsIGZvcm1hdCwgdHlwZSkpOwpAQCAtNTgyNiwxMDAgKzU4MjYsMTI1IEBAIHZvaWQgV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybTRpKGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0
aW9uKiBsb2NhdGlvbiwKIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3Jt
MWZ2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgRmxvYXQzMkxpc3QmJiB2
KQogewotICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlVW5pZm9y
bVBhcmFtZXRlcnMoInVuaWZvcm0xZnYiLCBsb2NhdGlvbiwgdiwgMSwgMCwgdi5sZW5ndGgoKSkp
CisgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSkKICAgICAgICAgcmV0dXJuOwotCi0g
ICAgbV9jb250ZXh0LT51bmlmb3JtMWZ2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCB2Lmxlbmd0aCgp
LCB2LmRhdGEoKSk7CisgICAgYXV0byBkYXRhID0gdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycygi
dW5pZm9ybTFmdiIsIGxvY2F0aW9uLCB2LCAxKTsKKyAgICBpZiAoIWRhdGEpCisgICAgICAgIHJl
dHVybjsKKyAgICBtX2NvbnRleHQtPnVuaWZvcm0xZnYobG9jYXRpb24tPmxvY2F0aW9uKCksIGRh
dGEudmFsdWUoKSk7CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9y
bTJmdihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEZsb2F0MzJMaXN0JiYg
dikKIHsKLSAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVVuaWZv
cm1QYXJhbWV0ZXJzKCJ1bmlmb3JtMmZ2IiwgbG9jYXRpb24sIHYsIDIsIDAsIHYubGVuZ3RoKCkp
KQorICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCiAgICAgICAgIHJldHVybjsKLQot
ICAgIG1fY29udGV4dC0+dW5pZm9ybTJmdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgdi5sZW5ndGgo
KSAvIDIsIHYuZGF0YSgpKTsKKyAgICBhdXRvIGRhdGEgPSB2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0
ZXJzKCJ1bmlmb3JtMmZ2IiwgbG9jYXRpb24sIHYsIDIpOworICAgIGlmICghZGF0YSkKKyAgICAg
ICAgcmV0dXJuOworICAgIG1fY29udGV4dC0+dW5pZm9ybTJmdihsb2NhdGlvbi0+bG9jYXRpb24o
KSwgZGF0YS52YWx1ZSgpKTsKIH0KIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1
bmlmb3JtM2Z2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgRmxvYXQzMkxp
c3QmJiB2KQogewotICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRl
VW5pZm9ybVBhcmFtZXRlcnMoInVuaWZvcm0zZnYiLCBsb2NhdGlvbiwgdiwgMywgMCwgdi5sZW5n
dGgoKSkpCisgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSkKICAgICAgICAgcmV0dXJu
OwotCi0gICAgbV9jb250ZXh0LT51bmlmb3JtM2Z2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCB2Lmxl
bmd0aCgpIC8gMywgdi5kYXRhKCkpOworICAgIGF1dG8gZGF0YSA9IHZhbGlkYXRlVW5pZm9ybVBh
cmFtZXRlcnMoInVuaWZvcm0zZnYiLCBsb2NhdGlvbiwgdiwgMyk7CisgICAgaWYgKCFkYXRhKQor
ICAgICAgICByZXR1cm47CisgICAgbV9jb250ZXh0LT51bmlmb3JtM2Z2KGxvY2F0aW9uLT5sb2Nh
dGlvbigpLCBkYXRhLnZhbHVlKCkpOwogfQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U6OnVuaWZvcm00ZnYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBGbG9h
dDMyTGlzdCYmIHYpCiB7Ci0gICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhdmFs
aWRhdGVVbmlmb3JtUGFyYW1ldGVycygidW5pZm9ybTRmdiIsIGxvY2F0aW9uLCB2LCA0LCAwLCB2
Lmxlbmd0aCgpKSkKKyAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpKQogICAgICAgICBy
ZXR1cm47Ci0KLSAgICBtX2NvbnRleHQtPnVuaWZvcm00ZnYobG9jYXRpb24tPmxvY2F0aW9uKCks
IHYubGVuZ3RoKCkgLyA0LCB2LmRhdGEoKSk7CisgICAgYXV0byBkYXRhID0gdmFsaWRhdGVVbmlm
b3JtUGFyYW1ldGVycygidW5pZm9ybTRmdiIsIGxvY2F0aW9uLCB2LCA0KTsKKyAgICBpZiAoIWRh
dGEpCisgICAgICAgIHJldHVybjsKKyAgICBtX2NvbnRleHQtPnVuaWZvcm00ZnYobG9jYXRpb24t
PmxvY2F0aW9uKCksIGRhdGEudmFsdWUoKSk7CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZTo6dW5pZm9ybTFpdihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24s
IEludDMyTGlzdCYmIHYpCiB7Ci0gICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAh
dmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycygidW5pZm9ybTFpdiIsIGxvY2F0aW9uLCB2LCAxLCAw
LCB2Lmxlbmd0aCgpKSkKKyAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpKQorICAgICAg
ICByZXR1cm47CisgICAgYXV0byByZXN1bHQgPSB2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKCJ1
bmlmb3JtMWl2IiwgbG9jYXRpb24sIHYsIDEpOworICAgIGlmICghcmVzdWx0KQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBhdXRvIGRhdGEgPSB2LmRhdGEoKTsKLSAgICBhdXRvIGxlbmd0aCA9IHYu
bGVuZ3RoKCk7CisgICAgYXV0byBkYXRhID0gcmVzdWx0LnZhbHVlKCk7CiAKICAgICBpZiAobG9j
YXRpb24tPnR5cGUoKSA9PSBHcmFwaGljc0NvbnRleHRHTDo6U0FNUExFUl8yRCB8fCBsb2NhdGlv
bi0+dHlwZSgpID09IEdyYXBoaWNzQ29udGV4dEdMOjpTQU1QTEVSX0NVQkUpIHsKLSAgICAgICAg
Zm9yIChhdXRvIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKKyAgICAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBkYXRhLmJ1ZlNpemU7ICsraSkgewogICAgICAgICAgICAgaWYgKGRhdGFbaV0g
Pj0gc3RhdGljX2Nhc3Q8aW50PihtX3RleHR1cmVVbml0cy5zaXplKCkpKSB7Ci0gICAgICAgICAg
ICAgICAgTE9HKFdlYkdMLCAiVGV4dHVyZSB1bml0IHNpemU9JXp1LCB2WyVkXT0lZC4gTG9jYXRp
b24gdHlwZSA9ICUwNFguIiwgbV90ZXh0dXJlVW5pdHMuc2l6ZSgpLCBpLCBkYXRhW2ldLCBsb2Nh
dGlvbi0+dHlwZSgpKTsKKyAgICAgICAgICAgICAgICBMT0coV2ViR0wsICJUZXh0dXJlIHVuaXQg
c2l6ZT0lenUsIHZbJXp1XT0lZC4gTG9jYXRpb24gdHlwZSA9ICUwNFguIiwgbV90ZXh0dXJlVW5p
dHMuc2l6ZSgpLCBpLCBkYXRhW2ldLCBsb2NhdGlvbi0+dHlwZSgpKTsKICAgICAgICAgICAgICAg
ICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9WQUxVRSwgInVu
aWZvcm0xaXYiLCAiaW52YWxpZCB0ZXh0dXJlIHVuaXQiKTsKICAgICAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBtX2NvbnRleHQtPnVu
aWZvcm0xaXYobG9jYXRpb24tPmxvY2F0aW9uKCksIGxlbmd0aCwgZGF0YSk7CisgICAgbV9jb250
ZXh0LT51bmlmb3JtMWl2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCBkYXRhKTsKIH0KIAogdm9pZCBX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtMml2KGNvbnN0IFdlYkdMVW5pZm9ybUxv
Y2F0aW9uKiBsb2NhdGlvbiwgSW50MzJMaXN0JiYgdikKIHsKLSAgICBpZiAoaXNDb250ZXh0TG9z
dE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKCJ1bmlmb3JtMml2Iiwg
bG9jYXRpb24sIHYsIDIsIDAsIHYubGVuZ3RoKCkpKQorICAgIGlmIChpc0NvbnRleHRMb3N0T3JQ
ZW5kaW5nKCkpCiAgICAgICAgIHJldHVybjsKLQotICAgIG1fY29udGV4dC0+dW5pZm9ybTJpdihs
b2NhdGlvbi0+bG9jYXRpb24oKSwgdi5sZW5ndGgoKSAvIDIsIHYuZGF0YSgpKTsKKyAgICBhdXRv
IGRhdGEgPSB2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKCJ1bmlmb3JtMml2IiwgbG9jYXRpb24s
IHYsIDIpOworICAgIGlmICghZGF0YSkKKyAgICAgICAgcmV0dXJuOworICAgIG1fY29udGV4dC0+
dW5pZm9ybTJpdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgZGF0YS52YWx1ZSgpKTsKIH0KIAogdm9p
ZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtM2l2KGNvbnN0IFdlYkdMVW5pZm9y
bUxvY2F0aW9uKiBsb2NhdGlvbiwgSW50MzJMaXN0JiYgdikKIHsKLSAgICBpZiAoaXNDb250ZXh0
TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKCJ1bmlmb3JtM2l2
IiwgbG9jYXRpb24sIHYsIDMsIDAsIHYubGVuZ3RoKCkpKQorICAgIGlmIChpc0NvbnRleHRMb3N0
T3JQZW5kaW5nKCkpCiAgICAgICAgIHJldHVybjsKLQotICAgIG1fY29udGV4dC0+dW5pZm9ybTNp
dihsb2NhdGlvbi0+bG9jYXRpb24oKSwgdi5sZW5ndGgoKSAvIDMsIHYuZGF0YSgpKTsKKyAgICBh
dXRvIGRhdGEgPSB2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKCJ1bmlmb3JtM2l2IiwgbG9jYXRp
b24sIHYsIDMpOworICAgIGlmICghZGF0YSkKKyAgICAgICAgcmV0dXJuOworICAgIG1fY29udGV4
dC0+dW5pZm9ybTNpdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgZGF0YS52YWx1ZSgpKTsKIH0KIAog
dm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtNGl2KGNvbnN0IFdlYkdMVW5p
Zm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgSW50MzJMaXN0JiYgdikKIHsKLSAgICBpZiAoaXNDb250
ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKCJ1bmlmb3Jt
NGl2IiwgbG9jYXRpb24sIHYsIDQsIDAsIHYubGVuZ3RoKCkpKQorICAgIGlmIChpc0NvbnRleHRM
b3N0T3JQZW5kaW5nKCkpCiAgICAgICAgIHJldHVybjsKLQotICAgIG1fY29udGV4dC0+dW5pZm9y
bTRpdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgdi5sZW5ndGgoKSAvIDQsIHYuZGF0YSgpKTsKKyAg
ICBhdXRvIGRhdGEgPSB2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKCJ1bmlmb3JtNGl2IiwgbG9j
YXRpb24sIHYsIDQpOworICAgIGlmICghZGF0YSkKKyAgICAgICAgcmV0dXJuOworICAgIG1fY29u
dGV4dC0+dW5pZm9ybTRpdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgZGF0YS52YWx1ZSgpKTsKIH0K
IAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtTWF0cml4MmZ2KGNvbnN0
IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBG
bG9hdDMyTGlzdCYmIHYpCiB7Ci0gICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAh
dmFsaWRhdGVVbmlmb3JtTWF0cml4UGFyYW1ldGVycygidW5pZm9ybU1hdHJpeDJmdiIsIGxvY2F0
aW9uLCB0cmFuc3Bvc2UsIHYsIDQsIDAsIHYubGVuZ3RoKCkpKQorICAgIGlmIChpc0NvbnRleHRM
b3N0T3JQZW5kaW5nKCkpCisgICAgICAgIHJldHVybjsKKyAgICBhdXRvIGRhdGEgPSB2YWxpZGF0
ZVVuaWZvcm1NYXRyaXhQYXJhbWV0ZXJzKCJ1bmlmb3JtTWF0cml4MmZ2IiwgbG9jYXRpb24sIHRy
YW5zcG9zZSwgdiwgNCk7CisgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm47Ci0gICAgbV9j
b250ZXh0LT51bmlmb3JtTWF0cml4MmZ2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCB2Lmxlbmd0aCgp
IC8gNCwgdHJhbnNwb3NlLCB2LmRhdGEoKSk7CisgICAgbV9jb250ZXh0LT51bmlmb3JtTWF0cml4
MmZ2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCB0cmFuc3Bvc2UsIGRhdGEudmFsdWUoKSk7CiB9CiAK
IHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybU1hdHJpeDNmdihjb25zdCBX
ZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgRmxv
YXQzMkxpc3QmJiB2KQogewotICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZh
bGlkYXRlVW5pZm9ybU1hdHJpeFBhcmFtZXRlcnMoInVuaWZvcm1NYXRyaXgzZnYiLCBsb2NhdGlv
biwgdHJhbnNwb3NlLCB2LCA5LCAwLCB2Lmxlbmd0aCgpKSkKKyAgICBpZiAoaXNDb250ZXh0TG9z
dE9yUGVuZGluZygpKQorICAgICAgICByZXR1cm47CisgICAgYXV0byBkYXRhID0gdmFsaWRhdGVV
bmlmb3JtTWF0cml4UGFyYW1ldGVycygidW5pZm9ybU1hdHJpeDNmdiIsIGxvY2F0aW9uLCB0cmFu
c3Bvc2UsIHYsIDkpOworICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuOwotICAgIG1fY29u
dGV4dC0+dW5pZm9ybU1hdHJpeDNmdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgdi5sZW5ndGgoKSAv
IDksIHRyYW5zcG9zZSwgdi5kYXRhKCkpOworICAgIG1fY29udGV4dC0+dW5pZm9ybU1hdHJpeDNm
dihsb2NhdGlvbi0+bG9jYXRpb24oKSwgdHJhbnNwb3NlLCBkYXRhLnZhbHVlKCkpOwogfQogCiB2
b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm1NYXRyaXg0ZnYoY29uc3QgV2Vi
R0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEZsb2F0
MzJMaXN0JiYgdikKIHsKLSAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxp
ZGF0ZVVuaWZvcm1NYXRyaXhQYXJhbWV0ZXJzKCJ1bmlmb3JtTWF0cml4NGZ2IiwgbG9jYXRpb24s
IHRyYW5zcG9zZSwgdiwgMTYsIDAsIHYubGVuZ3RoKCkpKQorICAgIGlmIChpc0NvbnRleHRMb3N0
T3JQZW5kaW5nKCkpCisgICAgICAgIHJldHVybjsKKyAgICBhdXRvIGRhdGEgPSB2YWxpZGF0ZVVu
aWZvcm1NYXRyaXhQYXJhbWV0ZXJzKCJ1bmlmb3JtTWF0cml4NGZ2IiwgbG9jYXRpb24sIHRyYW5z
cG9zZSwgdiwgMTYpOworICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuOwotICAgIG1fY29u
dGV4dC0+dW5pZm9ybU1hdHJpeDRmdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgdi5sZW5ndGgoKSAv
IDE2LCB0cmFuc3Bvc2UsIHYuZGF0YSgpKTsKKyAgICBtX2NvbnRleHQtPnVuaWZvcm1NYXRyaXg0
ZnYobG9jYXRpb24tPmxvY2F0aW9uKCksIHRyYW5zcG9zZSwgZGF0YS52YWx1ZSgpKTsKIH0KIAog
dm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1c2VQcm9ncmFtKFdlYkdMUHJvZ3JhbSog
cHJvZ3JhbSkKQEAgLTcwNDcsNjIgKzcwNzIsNDggQEAgYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlOjp2YWxpZGF0ZUNhcGFiaWxpdHkoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBHQ0cK
ICAgICB9CiB9CiAKLWJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmFsaWRhdGVVbmlm
b3JtUGFyYW1ldGVycyhjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIGNvbnN0IFdlYkdMVW5pZm9y
bUxvY2F0aW9uKiBsb2NhdGlvbiwgY29uc3QgRmxvYXQzMkxpc3QmIHYsIEdDR0xzaXplaSByZXF1
aXJlZE1pblNpemUsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQotewot
ICAgIHJldHVybiB2YWxpZGF0ZVVuaWZvcm1NYXRyaXhQYXJhbWV0ZXJzKGZ1bmN0aW9uTmFtZSwg
bG9jYXRpb24sIGZhbHNlLCB2LmRhdGEoKSwgdi5sZW5ndGgoKSwgcmVxdWlyZWRNaW5TaXplLCBz
cmNPZmZzZXQsIHNyY0xlbmd0aCk7Ci19Ci0KLWJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZTo6dmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycyhjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIGNv
bnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgY29uc3QgSW50MzJMaXN0JiB2LCBH
Q0dMc2l6ZWkgcmVxdWlyZWRNaW5TaXplLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNy
Y0xlbmd0aCkKLXsKLSAgICByZXR1cm4gdmFsaWRhdGVVbmlmb3JtTWF0cml4UGFyYW1ldGVycyhm
dW5jdGlvbk5hbWUsIGxvY2F0aW9uLCBmYWxzZSwgdi5kYXRhKCksIHYubGVuZ3RoKCksIHJlcXVp
cmVkTWluU2l6ZSwgc3JjT2Zmc2V0LCBzcmNMZW5ndGgpOwotfQogCi1ib29sIFdlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMoY29uc3QgY2hhciogZnVu
Y3Rpb25OYW1lLCBjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIGNvbnN0IFVp
bnQzMkxpc3QmIHYsIEdDR0xzaXplaSByZXF1aXJlZE1pblNpemUsIEdDR0x1aW50IHNyY09mZnNl
dCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQotewotICAgIHJldHVybiB2YWxpZGF0ZVVuaWZvcm1NYXRy
aXhQYXJhbWV0ZXJzKGZ1bmN0aW9uTmFtZSwgbG9jYXRpb24sIGZhbHNlLCB2LmRhdGEoKSwgdi5s
ZW5ndGgoKSwgcmVxdWlyZWRNaW5TaXplLCBzcmNPZmZzZXQsIHNyY0xlbmd0aCk7Ci19Ci0KLWJv
b2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycyhj
b25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2Nh
dGlvbiwgdm9pZCogdiwgR0NHTHNpemVpIHNpemUsIEdDR0xzaXplaSByZXF1aXJlZE1pblNpemUs
IEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQotewotICAgIHJldHVybiB2
YWxpZGF0ZVVuaWZvcm1NYXRyaXhQYXJhbWV0ZXJzKGZ1bmN0aW9uTmFtZSwgbG9jYXRpb24sIGZh
bHNlLCB2LCBzaXplLCByZXF1aXJlZE1pblNpemUsIHNyY09mZnNldCwgc3JjTGVuZ3RoKTsKLX0K
LQotYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZVVuaWZvcm1NYXRyaXhQ
YXJhbWV0ZXJzKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgY29uc3QgV2ViR0xVbmlmb3JtTG9j
YXRpb24qIGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEZsb2F0MzJMaXN0
JiB2LCBHQ0dMc2l6ZWkgcmVxdWlyZWRNaW5TaXplLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1
aW50IHNyY0xlbmd0aCkKLXsKLSAgICByZXR1cm4gdmFsaWRhdGVVbmlmb3JtTWF0cml4UGFyYW1l
dGVycyhmdW5jdGlvbk5hbWUsIGxvY2F0aW9uLCB0cmFuc3Bvc2UsIHYuZGF0YSgpLCB2Lmxlbmd0
aCgpLCByZXF1aXJlZE1pblNpemUsIHNyY09mZnNldCwgc3JjTGVuZ3RoKTsKLX0KLQotYm9vbCBX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZVVuaWZvcm1NYXRyaXhQYXJhbWV0ZXJz
KGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxv
Y2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IHZvaWQqIHYsIEdDR0xzaXplaSBz
aXplLCBHQ0dMc2l6ZWkgcmVxdWlyZWRNaW5TaXplLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1
aW50IHNyY0xlbmd0aCkKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFR5cGVkTGlzdFR5
cGU+CitPcHRpb25hbDxHQ0dMU3Bhbjxjb25zdCBUPj4gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZTo6dmFsaWRhdGVVbmlmb3JtTWF0cml4UGFyYW1ldGVycyhjb25zdCBjaGFyKiBmdW5jdGlvbk5h
bWUsIGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJh
bnNwb3NlLCBjb25zdCBUeXBlZExpc3Q8VHlwZWRMaXN0VHlwZSwgVD4mIHZhbHVlcywgR0NHTHNp
emVpIHJlcXVpcmVkTWluU2l6ZSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5n
dGgpCiB7CiAgICAgaWYgKCF2YWxpZGF0ZVVuaWZvcm1Mb2NhdGlvbihmdW5jdGlvbk5hbWUsIGxv
Y2F0aW9uKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICghdikgeworICAgICAgICBy
ZXR1cm4geyB9OworICAgIGlmICghdmFsdWVzLmRhdGEoKSkgewogICAgICAgICBzeW50aGVzaXpl
R0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9WQUxVRSwgZnVuY3Rpb25OYW1lLCAi
bm8gYXJyYXkiKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4geyB9Owog
ICAgIH0KICAgICBpZiAodHJhbnNwb3NlICYmICFpc1dlYkdMMigpKSB7CiAgICAgICAgIHN5bnRo
ZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX1ZBTFVFLCBmdW5jdGlvbk5h
bWUsICJ0cmFuc3Bvc2Ugbm90IEZBTFNFIik7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgcmV0dXJuIHsgfTsKICAgICB9Ci0gICAgaWYgKHNyY09mZnNldCA+PSBzdGF0aWNfY2FzdDxH
Q0dMdWludD4oc2l6ZSkpIHsKKyAgICBpZiAoc3JjT2Zmc2V0ID49IHN0YXRpY19jYXN0PEdDR0x1
aW50Pih2YWx1ZXMubGVuZ3RoKCkpKSB7CiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBo
aWNzQ29udGV4dEdMOjpJTlZBTElEX1ZBTFVFLCBmdW5jdGlvbk5hbWUsICJpbnZhbGlkIHNyY09m
ZnNldCIpOwotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiB7IH07CiAgICAg
fQotICAgIEdDR0xzaXplaSBhY3R1YWxTaXplID0gc2l6ZSAtIHNyY09mZnNldDsKKyAgICBHQ0dM
c2l6ZWkgYWN0dWFsU2l6ZSA9IHZhbHVlcy5sZW5ndGgoKSAtIHNyY09mZnNldDsKICAgICBpZiAo
c3JjTGVuZ3RoID4gMCkgewogICAgICAgICBpZiAoc3JjTGVuZ3RoID4gc3RhdGljX2Nhc3Q8R0NH
THVpbnQ+KGFjdHVhbFNpemUpKSB7CiAgICAgICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFw
aGljc0NvbnRleHRHTDo6SU5WQUxJRF9WQUxVRSwgZnVuY3Rpb25OYW1lLCAiaW52YWxpZCBzcmNP
ZmZzZXQgKyBzcmNMZW5ndGgiKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
ICAgIHJldHVybiB7IH07CiAgICAgICAgIH0KICAgICAgICAgYWN0dWFsU2l6ZSA9IHNyY0xlbmd0
aDsKICAgICB9CiAgICAgaWYgKGFjdHVhbFNpemUgPCByZXF1aXJlZE1pblNpemUgfHwgKGFjdHVh
bFNpemUgJSByZXF1aXJlZE1pblNpemUpKSB7CiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdy
YXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX1ZBTFVFLCBmdW5jdGlvbk5hbWUsICJpbnZhbGlkIHNp
emUiKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4geyB9OwogICAgIH0K
LSAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gbWFrZUdDR0xTcGFuKHZhbHVlcy5kYXRhKCkg
KyBzcmNPZmZzZXQsIGFjdHVhbFNpemUpOwogfQogCit0ZW1wbGF0ZQorT3B0aW9uYWw8R0NHTFNw
YW48Y29uc3QgR0NHTHVpbnQ+PiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZVVu
aWZvcm1NYXRyaXhQYXJhbWV0ZXJzPEdDR0x1aW50LCBVaW50MzJBcnJheT4oY29uc3QgY2hhciog
ZnVuY3Rpb25OYW1lLCBjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiosIEdDR0xib29sZWFuIHRy
YW5zcG9zZSwgY29uc3QgVHlwZWRMaXN0PFVpbnQzMkFycmF5LCB1aW50MzJfdD4mIHZhbHVlcywg
R0NHTHNpemVpIHJlcXVpcmVkTWluU2l6ZSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBz
cmNMZW5ndGgpOworCit0ZW1wbGF0ZQorT3B0aW9uYWw8R0NHTFNwYW48Y29uc3QgR0NHTGludD4+
IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlVW5pZm9ybU1hdHJpeFBhcmFtZXRl
cnM8R0NHTGludCwgSW50MzJBcnJheT4oY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBjb25zdCBX
ZWJHTFVuaWZvcm1Mb2NhdGlvbiosIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgVHlwZWRM
aXN0PEludDMyQXJyYXksIGludDMyX3Q+JiB2YWx1ZXMsIEdDR0xzaXplaSByZXF1aXJlZE1pblNp
emUsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKTsKKwordGVtcGxhdGUK
K09wdGlvbmFsPEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4+IFdlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2U6OnZhbGlkYXRlVW5pZm9ybU1hdHJpeFBhcmFtZXRlcnM8R0NHTGZsb2F0LCBGbG9hdDMy
QXJyYXk+KGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRp
b24qLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IFR5cGVkTGlzdDxGbG9hdDMyQXJyYXks
IGZsb2F0PiYgdmFsdWVzLCBHQ0dMc2l6ZWkgcmVxdWlyZWRNaW5TaXplLCBHQ0dMdWludCBzcmNP
ZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCk7CisKIFdlYkdMQnVmZmVyKiBXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlOjp2YWxpZGF0ZUJ1ZmZlckRhdGFQYXJhbWV0ZXJzKGNvbnN0IGNoYXIqIGZ1
bmN0aW9uTmFtZSwgR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSB1c2FnZSkKIHsKICAgICBXZWJH
TEJ1ZmZlciogYnVmZmVyID0gdmFsaWRhdGVCdWZmZXJEYXRhVGFyZ2V0KGZ1bmN0aW9uTmFtZSwg
dGFyZ2V0KTsKQEAgLTcyNDYsMTYgKzcyNTcsMTYgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlOjp2ZXJ0ZXhBdHRyaWJmdkltcGwoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBHQ0cK
ICAgICB7CiAgICAgICAgIHN3aXRjaCAoZXhwZWN0ZWRTaXplKSB7CiAgICAgICAgIGNhc2UgMToK
LSAgICAgICAgICAgIG1fY29udGV4dC0+dmVydGV4QXR0cmliMWZ2KGluZGV4LCBkYXRhKTsKKyAg
ICAgICAgICAgIG1fY29udGV4dC0+dmVydGV4QXR0cmliMWZ2KGluZGV4LCBtYWtlR0NHTFNwYW48
MT4oZGF0YSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgMjoKLSAgICAgICAg
ICAgIG1fY29udGV4dC0+dmVydGV4QXR0cmliMmZ2KGluZGV4LCBkYXRhKTsKKyAgICAgICAgICAg
IG1fY29udGV4dC0+dmVydGV4QXR0cmliMmZ2KGluZGV4LCBtYWtlR0NHTFNwYW48Mj4oZGF0YSkp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgMzoKLSAgICAgICAgICAgIG1fY29u
dGV4dC0+dmVydGV4QXR0cmliM2Z2KGluZGV4LCBkYXRhKTsKKyAgICAgICAgICAgIG1fY29udGV4
dC0+dmVydGV4QXR0cmliM2Z2KGluZGV4LCBtYWtlR0NHTFNwYW48Mz4oZGF0YSkpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgNDoKLSAgICAgICAgICAgIG1fY29udGV4dC0+dmVy
dGV4QXR0cmliNGZ2KGluZGV4LCBkYXRhKTsKKyAgICAgICAgICAgIG1fY29udGV4dC0+dmVydGV4
QXR0cmliNGZ2KGluZGV4LCBtYWtlR0NHTFNwYW48ND4oZGF0YSkpOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KICAgICB9CkBAIC03MzMwLDcgKzczNDEsNyBAQCBPcHRpb25hbDxib29s
PiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpzaW11bGF0ZVZlcnRleEF0dHJpYjAoR0NHTHVp
bnQgbnVtVmVydAogCiAgICAgaWYgKGJ1ZmZlckRhdGFTaXplID4gbV92ZXJ0ZXhBdHRyaWIwQnVm
ZmVyU2l6ZSkgewogICAgICAgICBtX2NvbnRleHQtPm1vdmVFcnJvcnNUb1N5bnRoZXRpY0Vycm9y
TGlzdCgpOwotICAgICAgICBtX2NvbnRleHQtPmJ1ZmZlckRhdGEoR3JhcGhpY3NDb250ZXh0R0w6
OkFSUkFZX0JVRkZFUiwgYnVmZmVyRGF0YVNpemUsIDAsIEdyYXBoaWNzQ29udGV4dEdMOjpEWU5B
TUlDX0RSQVcpOworICAgICAgICBtX2NvbnRleHQtPmJ1ZmZlckRhdGEoR3JhcGhpY3NDb250ZXh0
R0w6OkFSUkFZX0JVRkZFUiwgYnVmZmVyRGF0YVNpemUsIEdyYXBoaWNzQ29udGV4dEdMOjpEWU5B
TUlDX0RSQVcpOwogICAgICAgICBpZiAobV9jb250ZXh0LT5nZXRFcnJvcigpICE9IEdyYXBoaWNz
Q29udGV4dEdMOjpOT19FUlJPUikgewogICAgICAgICAgICAgLy8gV2Ugd2VyZSB1bmFibGUgdG8g
Y3JlYXRlIGEgYnVmZmVyLgogICAgICAgICAgICAgbV92ZXJ0ZXhBdHRyaWIwVXNlZEJlZm9yZSA9
IGZhbHNlOwpAQCAtNzM2NSw3ICs3Mzc2LDcgQEAgT3B0aW9uYWw8Ym9vbD4gV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6c2ltdWxhdGVWZXJ0ZXhBdHRyaWIwKEdDR0x1aW50IG51bVZlcnQKICAg
ICAgICAgbV92ZXJ0ZXhBdHRyaWIwQnVmZmVyVmFsdWVbMl0gPSBhdHRyaWJWYWx1ZS5mVmFsdWVb
Ml07CiAgICAgICAgIG1fdmVydGV4QXR0cmliMEJ1ZmZlclZhbHVlWzNdID0gYXR0cmliVmFsdWUu
ZlZhbHVlWzNdOwogICAgICAgICBtX2ZvcmNlQXR0cmliMEJ1ZmZlclJlZmlsbCA9IGZhbHNlOwot
ICAgICAgICBtX2NvbnRleHQtPmJ1ZmZlclN1YkRhdGEoR3JhcGhpY3NDb250ZXh0R0w6OkFSUkFZ
X0JVRkZFUiwgMCwgYnVmZmVyRGF0YVNpemUsIGJ1ZmZlckRhdGEuZ2V0KCkpOworICAgICAgICBt
X2NvbnRleHQtPmJ1ZmZlclN1YkRhdGEoR3JhcGhpY3NDb250ZXh0R0w6OkFSUkFZX0JVRkZFUiwg
MCwgbWFrZUdDR0xTcGFuKGJ1ZmZlckRhdGEuZ2V0KCksIGJ1ZmZlckRhdGFTaXplKSk7CiAgICAg
fQogICAgIG1fY29udGV4dC0+dmVydGV4QXR0cmliUG9pbnRlcigwLCA0LCBHcmFwaGljc0NvbnRl
eHRHTDo6RkxPQVQsIDAsIDAsIDApOwogICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oCmluZGV4
IGE3MWQwMzZhYTBkZWE1MmI0NTc5MDlmYmZmZGMzYWRmODBmNTEwY2MuLjAwNzgyOGY3ZmQ1NzNl
YTUwMDU5NDBlZDU2ZTQzOTc1MTU3NDNlNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmgKQEAgLTEwMDUsMTIgKzEw
MDUsMTMgQEAgcHJvdGVjdGVkOgogCiAgICAgLy8gSGVscGVyIGZ1bmN0aW9uIHRvIHZhbGlkYXRl
IGlucHV0IHBhcmFtZXRlcnMgZm9yIHVuaWZvcm0gZnVuY3Rpb25zLgogICAgIGJvb2wgdmFsaWRh
dGVVbmlmb3JtTG9jYXRpb24oY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBjb25zdCBXZWJHTFVu
aWZvcm1Mb2NhdGlvbiopOwotICAgIGJvb2wgdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycyhjb25z
dCBjaGFyKiBmdW5jdGlvbk5hbWUsIGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiwgY29uc3Qg
RmxvYXQzMkxpc3QmLCBHQ0dMc2l6ZWkgcmVxdWlyZWRNaW5TaXplLCBHQ0dMdWludCBzcmNPZmZz
ZXQsIEdDR0x1aW50IHNyY0xlbmd0aCk7Ci0gICAgYm9vbCB2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0
ZXJzKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24q
LCBjb25zdCBJbnQzMkxpc3QmLCBHQ0dMc2l6ZWkgcmVxdWlyZWRNaW5TaXplLCBHQ0dMdWludCBz
cmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCk7Ci0gICAgYm9vbCB2YWxpZGF0ZVVuaWZvcm1Q
YXJhbWV0ZXJzKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgY29uc3QgV2ViR0xVbmlmb3JtTG9j
YXRpb24qLCBjb25zdCBVaW50MzJMaXN0JiwgR0NHTHNpemVpIHJlcXVpcmVkTWluU2l6ZSwgR0NH
THVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpOwotICAgIGJvb2wgdmFsaWRhdGVV
bmlmb3JtUGFyYW1ldGVycyhjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIGNvbnN0IFdlYkdMVW5p
Zm9ybUxvY2F0aW9uKiwgdm9pZCosIEdDR0xzaXplaSwgR0NHTHNpemVpIHJlcXVpcmVkTWluU2l6
ZSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpOwotICAgIGJvb2wgdmFs
aWRhdGVVbmlmb3JtTWF0cml4UGFyYW1ldGVycyhjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIGNv
bnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBG
bG9hdDMyTGlzdCYsIEdDR0xzaXplaSByZXF1aXJlZE1pblNpemUsIEdDR0x1aW50IHNyY09mZnNl
dCwgR0NHTHVpbnQgc3JjTGVuZ3RoKTsKLSAgICBib29sIHZhbGlkYXRlVW5pZm9ybU1hdHJpeFBh
cmFtZXRlcnMoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBjb25zdCBXZWJHTFVuaWZvcm1Mb2Nh
dGlvbiosIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3Qgdm9pZCosIEdDR0xzaXplaSwgR0NH
THNpemVpIHJlcXVpcmVkTWluU2l6ZSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNM
ZW5ndGgpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFR5cGVkTGlzdFR5cGU+
CisgICAgT3B0aW9uYWw8R0NHTFNwYW48Y29uc3QgVD4+IHZhbGlkYXRlVW5pZm9ybVBhcmFtZXRl
cnMoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiog
bG9jYXRpb24sIGNvbnN0IFR5cGVkTGlzdDxUeXBlZExpc3RUeXBlLCBUPiYgdmFsdWVzLCBHQ0dM
c2l6ZWkgcmVxdWlyZWRNaW5TaXplLCBHQ0dMdWludCBzcmNPZmZzZXQgPSAwLCBHQ0dMdWludCBz
cmNMZW5ndGggPSAwKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHZhbGlkYXRlVW5pZm9ybU1hdHJp
eFBhcmFtZXRlcnMoZnVuY3Rpb25OYW1lLCBsb2NhdGlvbiwgZmFsc2UsIHZhbHVlcywgcmVxdWly
ZWRNaW5TaXplLCBzcmNPZmZzZXQsIHNyY0xlbmd0aCk7CisgICAgfQorICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFQsIHR5cGVuYW1lIFR5cGVkTGlzdFR5cGU+CisgICAgT3B0aW9uYWw8R0NHTFNwYW48
Y29uc3QgVD4+IHZhbGlkYXRlVW5pZm9ybU1hdHJpeFBhcmFtZXRlcnMoY29uc3QgY2hhciogZnVu
Y3Rpb25OYW1lLCBjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiosIEdDR0xib29sZWFuIHRyYW5z
cG9zZSwgY29uc3QgVHlwZWRMaXN0PFR5cGVkTGlzdFR5cGUsIFQ+JiwgR0NHTHNpemVpIHJlcXVp
cmVkTWluU2l6ZSwgR0NHTHVpbnQgc3JjT2Zmc2V0ID0gMCwgR0NHTHVpbnQgc3JjTGVuZ3RoID0g
MCk7CiAKICAgICAvLyBIZWxwZXIgZnVuY3Rpb24gdG8gdmFsaWRhdGUgcGFyYW1ldGVycyBmb3Ig
YnVmZmVyRGF0YS4KICAgICAvLyBSZXR1cm4gdGhlIGN1cnJlbnQgYm91bmQgYnVmZmVyIHRvIHRh
cmdldCwgb3IgMCBpZiBwYXJhbWV0ZXJzIGFyZSBpbnZhbGlkLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRXh0ZW5zaW9uc0dMLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNpb25zR0wuaAppbmRleCBiYTg2NWIzMzA4ZTZjOTQ1
ODIyMTIyMzc3OTZkNmZkNTc3NDg0N2Y4Li44ZjY4NDA2MWZhNmRkYjc2M2E3NWI0OWYzODJlNTk1
NTZkOTkyZmRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9F
eHRlbnNpb25zR0wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRl
bnNpb25zR0wuaApAQCAtMjk4LDcgKzI5OCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQg
cG9wR3JvdXBNYXJrZXJFWFQodm9pZCkgPSAwOwogCiAgICAgLy8gR0xfQVJCX2RyYXdfYnVmZmVy
cyAvIEdMX0VYVF9kcmF3X2J1ZmZlcnMKLSAgICB2aXJ0dWFsIHZvaWQgZHJhd0J1ZmZlcnNFWFQo
R0NHTHNpemVpIG4sIGNvbnN0IEdDR0xlbnVtKiBidWZzKSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IGRyYXdCdWZmZXJzRVhUKEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVtPiBidWZzKSA9IDA7CiAKICAg
ICAvLyBHTF9BTkdMRV9pbnN0YW5jZWRfYXJyYXlzCiAgICAgdmlydHVhbCB2b2lkIGRyYXdBcnJh
eXNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHNpemVpIGNvdW50
LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSA9IDA7CkBAIC0zMDcsMTcgKzMwNywxNyBAQCBwdWJsaWM6
CiAKICAgICAvLyBHTF9BTkdMRV9yb2J1c3RfY2xpZW50X21lbW9yeQogICAgIHZpcnR1YWwgdm9p
ZCByZWFkUGl4ZWxzUm9idXN0QU5HTEUoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3
aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xzaXplaSogY29sdW1ucywg
R0NHTHNpemVpKiByb3dzLCBHQ0dMdm9pZCogcGl4ZWxzKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lk
IHRleEltYWdlMkRSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdD
R0xpbnQgaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwg
R0NHTGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIGNvbnN0IEdDR0x2b2lkKiBwaXhlbHMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
dGV4SW1hZ2UyRFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NH
TGludCBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBH
Q0dMaW50IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bhbjxj
b25zdCBHQ0dMdm9pZD4gcGl4ZWxzKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHRleFBhcmFtZXRl
cmZ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIGNvbnN0IEdDR0xmbG9hdCogcGFyYW1zKSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IHRleFBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFt
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQqIHBhcmFtcykgPSAwOwotICAgIHZp
cnR1YWwgdm9pZCB0ZXhTdWJJbWFnZTJEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
aW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdp
ZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdD
R0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMdm9pZCogcGl4ZWxzKSA9IDA7Ci0gICAgdmlydHVh
bCB2b2lkIGNvbXByZXNzZWRUZXhJbWFnZTJEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBH
Q0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NH
THNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0x2b2lkKiBkYXRhKSA9IDA7Ci0gICAgdmlydHVhbCB2
b2lkIGNvbXByZXNzZWRUZXhTdWJJbWFnZTJEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTHNpemVp
IHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFn
ZVNpemUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMdm9pZCogZGF0YSkgPSAwOwotICAg
IHZpcnR1YWwgdm9pZCBjb21wcmVzc2VkVGV4SW1hZ2UzRFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRh
cmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3
aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMaW50IGJvcmRlciwg
R0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0x2b2lkKiBk
YXRhKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGNvbXByZXNzZWRUZXhTdWJJbWFnZTNEUm9idXN0
QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdD
R0xpbnQgeW9mZnNldCwgR0NHTGludCB6b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXpl
aSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMc2l6ZWkgaW1h
Z2VTaXplLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTHZvaWQqIGRhdGEpID0gMDsKLQot
ICAgIHZpcnR1YWwgdm9pZCB0ZXhJbWFnZTNEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMaW50IGxldmVsLCBHQ0dMaW50IGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdD
R0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGludCBib3JkZXIsIEdDR0xlbnVt
IGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0x2b2lk
KiBwaXhlbHMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdGV4U3ViSW1hZ2UzRFJvYnVzdEFOR0xF
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50
IHlvZmZzZXQsIEdDR0xpbnQgem9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVp
Z2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NH
THNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0x2b2lkKiBwaXhlbHMpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgdGV4U3ViSW1hZ2UyRFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBs
ZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwg
R0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bh
bjxjb25zdCBHQ0dMdm9pZD4gcGl4ZWxzKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNvbXByZXNz
ZWRUZXhJbWFnZTJEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBH
Q0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0
LCBHQ0dMaW50IGJvcmRlciwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTFNwYW48Y29uc3QgR0NH
THZvaWQ+IGRhdGEpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY29tcHJlc3NlZFRleFN1YkltYWdl
MkRSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9m
ZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQs
IEdDR0xlbnVtIGZvcm1hdCwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTFNwYW48Y29uc3QgR0NH
THZvaWQ+IGRhdGEpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY29tcHJlc3NlZFRleEltYWdlM0RS
b2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVy
bmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBk
ZXB0aCwgR0NHTGludCBib3JkZXIsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xTcGFuPGNvbnN0
IEdDR0x2b2lkPiBkYXRhKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNvbXByZXNzZWRUZXhTdWJJ
bWFnZTNEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50
IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTGludCB6b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lk
dGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGVudW0gZm9ybWF0LCBH
Q0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gZGF0YSkgPSAwOwor
CisgICAgdmlydHVhbCB2b2lkIHRleEltYWdlM0RSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQs
IEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwg
R0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMaW50IGJvcmRlciwgR0NHTGVu
dW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gcGl4ZWxz
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHRleFN1YkltYWdlM0RSb2J1c3RBTkdMRShHQ0dMZW51
bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0
LCBHQ0dMaW50IHpvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NH
THNpemVpIGRlcHRoLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPGNv
bnN0IEdDR0x2b2lkPiBwaXhlbHMpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0UXVlcnlpdlJv
YnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZT
aXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIGdldFF1ZXJ5T2JqZWN0dWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVt
IHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1aW50KiBw
YXJhbXMpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0QnVmZmVyUG9pbnRlcnZSb2J1c3RBTkdM
RShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NH
THNpemVpKiBsZW5ndGgsIEdDR0x2b2lkKiogcGFyYW1zKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaAppbmRleCAwYTcx
NTQwY2U4MDIwZmQ5ZjU4MTY4NjAzZjY3NjliOTQ0NTIyNDE1Li44ZWIyY2VmYzczNzhkNDUwNzhk
MTkwYTVmMTEzZmI4MjNmMWRiOTZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmgKQEAgLTM3Myw3ICszNzMsNyBAQCBwdWJs
aWM6CiAgICAgICAgIFVOUEFDS19DT0xPUlNQQUNFX0NPTlZFUlNJT05fV0VCR0wgPSAweDkyNDMs
CiAgICAgICAgIEJST1dTRVJfREVGQVVMVF9XRUJHTCA9IDB4OTI0NCwKICAgICAgICAgVkVSVEVY
X0FUVFJJQl9BUlJBWV9ESVZJU09SX0FOR0xFID0gMHg4OEZFLAotICAgICAgICAKKwogICAgICAg
ICAvLyBXZWJHTDIgY29uc3RhbnRzCiAgICAgICAgIFJFQURfQlVGRkVSID0gMHgwQzAyLAogICAg
ICAgICBVTlBBQ0tfUk9XX0xFTkdUSCA9IDB4MENGMiwKQEAgLTEwNjMsNDkgKzEwNjMsNDkgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB0ZXhQYXJhbWV0ZXJpKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGVudW0gcG5hbWUsIEdDR0xpbnQgcGFyYW0pID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCB1
bmlmb3JtMWYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGZsb2F0IHgpID0gMDsKLSAgICB2aXJ0dWFs
IHZvaWQgdW5pZm9ybTFmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWksIGNvbnN0IEdDR0xm
bG9hdCogdikgPSAwOworICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtMWZ2KEdDR0xpbnQgbG9jYXRp
b24sIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gdikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB1
bmlmb3JtMWkoR0NHTGludCBsb2NhdGlvbiwgR0NHTGludCB4KSA9IDA7Ci0gICAgdmlydHVhbCB2
b2lkIHVuaWZvcm0xaXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpLCBjb25zdCBHQ0dMaW50
KiB2KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVuaWZvcm0xaXYoR0NHTGludCBsb2NhdGlvbiwg
R0NHTFNwYW48Y29uc3QgR0NHTGludD4gdikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB1bmlmb3Jt
MmYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGZsb2F0IHgsIEdDR0xmbG9hdCB5KSA9IDA7Ci0gICAg
dmlydHVhbCB2b2lkIHVuaWZvcm0yZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpLCBjb25z
dCBHQ0dMZmxvYXQqIHYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybTJmdihHQ0dMaW50
IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IHYpID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgdW5pZm9ybTJpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xpbnQgeCwgR0NHTGludCB5KSA9
IDA7Ci0gICAgdmlydHVhbCB2b2lkIHVuaWZvcm0yaXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTHNp
emVpLCBjb25zdCBHQ0dMaW50KiB2KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVuaWZvcm0yaXYo
R0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gdikgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCB1bmlmb3JtM2YoR0NHTGludCBsb2NhdGlvbiwgR0NHTGZsb2F0IHgsIEdDR0xm
bG9hdCB5LCBHQ0dMZmxvYXQgeikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtM2Z2KEdD
R0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSwgY29uc3QgR0NHTGZsb2F0KiB2KSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIHVuaWZvcm0zZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3Qg
R0NHTGZsb2F0PiB2KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHVuaWZvcm0zaShHQ0dMaW50IGxv
Y2F0aW9uLCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTGludCB6KSA9IDA7Ci0gICAgdmlydHVh
bCB2b2lkIHVuaWZvcm0zaXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpLCBjb25zdCBHQ0dM
aW50KiB2KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVuaWZvcm0zaXYoR0NHTGludCBsb2NhdGlv
biwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gdikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB1bmlm
b3JtNGYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGZsb2F0IHgsIEdDR0xmbG9hdCB5LCBHQ0dMZmxv
YXQgeiwgR0NHTGZsb2F0IHcpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybTRmdihHQ0dM
aW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWksIGNvbnN0IEdDR0xmbG9hdCogdikgPSAwOworICAgIHZp
cnR1YWwgdm9pZCB1bmlmb3JtNGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdD
R0xmbG9hdD4gdikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtNGkoR0NHTGludCBsb2Nh
dGlvbiwgR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xpbnQgeiwgR0NHTGludCB3KSA9IDA7Ci0g
ICAgdmlydHVhbCB2b2lkIHVuaWZvcm00aXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpLCBj
b25zdCBHQ0dMaW50KiB2KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHVuaWZvcm1NYXRyaXgyZnYo
R0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0
IEdDR0xmbG9hdCogdmFsdWUpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybU1hdHJpeDNm
dihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWksIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29u
c3QgR0NHTGZsb2F0KiB2YWx1ZSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtTWF0cml4
NGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBj
b25zdCBHQ0dMZmxvYXQqIHZhbHVlKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVuaWZvcm00aXYo
R0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gdikgPSAwOworICAgIHZp
cnR1YWwgdm9pZCB1bmlmb3JtTWF0cml4MmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFu
IHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiB2YWx1ZSkgPSAwOworICAgIHZp
cnR1YWwgdm9pZCB1bmlmb3JtTWF0cml4M2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFu
IHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiB2YWx1ZSkgPSAwOworICAgIHZp
cnR1YWwgdm9pZCB1bmlmb3JtTWF0cml4NGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFu
IHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiB2YWx1ZSkgPSAwOwogCiAgICAg
dmlydHVhbCB2b2lkIHVzZVByb2dyYW0oUGxhdGZvcm1HTE9iamVjdCkgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCB2YWxpZGF0ZVByb2dyYW0oUGxhdGZvcm1HTE9iamVjdCkgPSAwOwogCiAgICAgdmly
dHVhbCB2b2lkIHZlcnRleEF0dHJpYjFmKEdDR0x1aW50IGluZGV4LCBHQ0dMZmxvYXQgeCkgPSAw
OwotICAgIHZpcnR1YWwgdm9pZCB2ZXJ0ZXhBdHRyaWIxZnYoR0NHTHVpbnQgaW5kZXgsIGNvbnN0
IEdDR0xmbG9hdCogdmFsdWVzKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHZlcnRleEF0dHJpYjFm
dihHQ0dMdWludCBpbmRleCwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0LCAxPiB2YWx1ZXMpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgdmVydGV4QXR0cmliMmYoR0NHTHVpbnQgaW5kZXgsIEdDR0xm
bG9hdCB4LCBHQ0dMZmxvYXQgeSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB2ZXJ0ZXhBdHRyaWIy
ZnYoR0NHTHVpbnQgaW5kZXgsIGNvbnN0IEdDR0xmbG9hdCogdmFsdWVzKSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIHZlcnRleEF0dHJpYjJmdihHQ0dMdWludCBpbmRleCwgR0NHTFNwYW48Y29uc3Qg
R0NHTGZsb2F0LCAyPiB2YWx1ZXMpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdmVydGV4QXR0cmli
M2YoR0NHTHVpbnQgaW5kZXgsIEdDR0xmbG9hdCB4LCBHQ0dMZmxvYXQgeSwgR0NHTGZsb2F0IHop
ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdmVydGV4QXR0cmliM2Z2KEdDR0x1aW50IGluZGV4LCBj
b25zdCBHQ0dMZmxvYXQqIHZhbHVlcykgPSAwOworICAgIHZpcnR1YWwgdm9pZCB2ZXJ0ZXhBdHRy
aWIzZnYoR0NHTHVpbnQgaW5kZXgsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdCwgMz4gdmFsdWVz
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHZlcnRleEF0dHJpYjRmKEdDR0x1aW50IGluZGV4LCBH
Q0dMZmxvYXQgeCwgR0NHTGZsb2F0IHksIEdDR0xmbG9hdCB6LCBHQ0dMZmxvYXQgdykgPSAwOwot
ICAgIHZpcnR1YWwgdm9pZCB2ZXJ0ZXhBdHRyaWI0ZnYoR0NHTHVpbnQgaW5kZXgsIGNvbnN0IEdD
R0xmbG9hdCogdmFsdWVzKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHZlcnRleEF0dHJpYjRmdihH
Q0dMdWludCBpbmRleCwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0LCA0PiB2YWx1ZXMpID0gMDsK
IAogICAgIHZpcnR1YWwgdm9pZCB2ZXJ0ZXhBdHRyaWJQb2ludGVyKEdDR0x1aW50IGluZGV4LCBH
Q0dMaW50IHNpemUsIEdDR0xlbnVtIHR5cGUsIEdDR0xib29sZWFuIG5vcm1hbGl6ZWQsIEdDR0xz
aXplaSBzdHJpZGUsIEdDR0xpbnRwdHIgb2Zmc2V0KSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQg
dmlld3BvcnQoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVp
IGhlaWdodCkgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIGJ1ZmZlckRhdGEoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMc2l6ZWlwdHIsIEdDR0xlbnVtIHVzYWdlKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lk
IGJ1ZmZlckRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWlwdHIsIGNvbnN0IEdDR0x2b2lk
KiBkYXRhLCBHQ0dMZW51bSB1c2FnZSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBidWZmZXJTdWJE
YXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludHB0ciBvZmZzZXQsIEdDR0xzaXplaXB0ciwgY29u
c3QgR0NHTHZvaWQqIGRhdGEpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgYnVmZmVyRGF0YShHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRhLCBHQ0dMZW51bSB1c2Fn
ZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBidWZmZXJTdWJEYXRhKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGludHB0ciBvZmZzZXQsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRhKSA9IDA7CiAK
ICAgICB2aXJ0dWFsIHZvaWQgcmVhZFBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNp
emVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5
cGUsIEdDR0x2b2lkKiBkYXRhKSA9IDA7CiAKLSAgICB2aXJ0dWFsIGJvb2wgdGV4SW1hZ2UyRChH
Q0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBH
Q0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51
bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIGNvbnN0IEdDR0x2b2lkKiBwaXhlbHMpID0gMDsKLSAg
ICB2aXJ0dWFsIHZvaWQgdGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2
ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdD
R0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgY29uc3QgR0NH
THZvaWQqIHBpeGVscykgPSAwOworICAgIHZpcnR1YWwgYm9vbCB0ZXhJbWFnZTJEKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXpl
aSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1h
dCwgR0NHTGVudW0gdHlwZSwgIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBwaXhlbHMpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgdGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQg
bGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgs
IEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTFNw
YW48Y29uc3QgR0NHTHZvaWQ+IHBpeGVscykgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIGRyYXdB
cnJheXNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHNpemVpIGNv
dW50LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRyYXdFbGVt
ZW50c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5
cGUsIEdDR0xpbnRwdHIgb2Zmc2V0LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSA9IDA7CkBAIC0xMTI1
LDggKzExMjUsOCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgYmxpdEZyYW1lYnVmZmVy
KEdDR0xpbnQgc3JjWDAsIEdDR0xpbnQgc3JjWTAsIEdDR0xpbnQgc3JjWDEsIEdDR0xpbnQgc3Jj
WTEsIEdDR0xpbnQgZHN0WDAsIEdDR0xpbnQgZHN0WTAsIEdDR0xpbnQgZHN0WDEsIEdDR0xpbnQg
ZHN0WTEsIEdDR0xiaXRmaWVsZCBtYXNrLCBHQ0dMZW51bSBmaWx0ZXIpID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgZnJhbWVidWZmZXJUZXh0dXJlTGF5ZXIoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51
bSBhdHRhY2htZW50LCBQbGF0Zm9ybUdMT2JqZWN0IHRleHR1cmUsIEdDR0xpbnQgbGV2ZWwsIEdD
R0xpbnQgbGF5ZXIpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZUZyYW1lYnVmZmVy
KEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpIG51bUF0dGFjaG1lbnRzLCBjb25zdCBHQ0dMZW51
bSogYXR0YWNobWVudHMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZVN1YkZyYW1l
YnVmZmVyKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpIG51bUF0dGFjaG1lbnRzLCBjb25zdCBH
Q0dMZW51bSogYXR0YWNobWVudHMsIEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lk
dGgsIEdDR0xzaXplaSBoZWlnaHQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZUZy
YW1lYnVmZmVyKEdDR0xlbnVtIHRhcmdldCwgR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+IGF0dGFj
aG1lbnRzKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGVTdWJGcmFtZWJ1ZmZlcihH
Q0dMZW51bSB0YXJnZXQsIEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVtPiBhdHRhY2htZW50cywgR0NH
TGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCByZWFkQnVmZmVyKEdDR0xlbnVtIHNyYykgPSAwOwogCiAgICAg
Ly8gZ2V0SW50ZXJuYWxGb3JtYXRQYXJhbWV0ZXIKQEAgLTExNDgsMjggKzExNDgsMjggQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtMnVpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0x1
aW50IHYwLCBHQ0dMdWludCB2MSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtM3VpKEdD
R0xpbnQgbG9jYXRpb24sIEdDR0x1aW50IHYwLCBHQ0dMdWludCB2MSwgR0NHTHVpbnQgdjIpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybTR1aShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMdWlu
dCB2MCwgR0NHTHVpbnQgdjEsIEdDR0x1aW50IHYyLCBHQ0dMdWludCB2MykgPSAwOwotICAgIHZp
cnR1YWwgdm9pZCB1bmlmb3JtMXVpdihHQ0dMaW50IGxvY2F0aW9uLCBjb25zdCBHQ0dMdWludCog
ZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpID0gMDsKLSAgICB2
aXJ0dWFsIHZvaWQgdW5pZm9ybTJ1aXYoR0NHTGludCBsb2NhdGlvbiwgY29uc3QgR0NHTHVpbnQq
IGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKSA9IDA7Ci0gICAg
dmlydHVhbCB2b2lkIHVuaWZvcm0zdWl2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0x1aW50
KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkgPSAwOwotICAg
IHZpcnR1YWwgdm9pZCB1bmlmb3JtNHVpdihHQ0dMaW50IGxvY2F0aW9uLCBjb25zdCBHQ0dMdWlu
dCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpID0gMDsKLSAg
ICB2aXJ0dWFsIHZvaWQgdW5pZm9ybU1hdHJpeDJ4M2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xi
b29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZz
ZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtTWF0
cml4M3gyZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBH
Q0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKSA9
IDA7Ci0gICAgdmlydHVhbCB2b2lkIHVuaWZvcm1NYXRyaXgyeDRmdihHQ0dMaW50IGxvY2F0aW9u
LCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQg
c3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdW5p
Zm9ybU1hdHJpeDR4MmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwg
Y29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xl
bmd0aCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtTWF0cml4M3g0ZnYoR0NHTGludCBs
b2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdD
R0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKSA9IDA7Ci0gICAgdmlydHVhbCB2
b2lkIHVuaWZvcm1NYXRyaXg0eDNmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFu
c3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWlu
dCBzcmNMZW5ndGgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybTF1aXYoR0NHTGludCBs
b2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTHVpbnQ+IGRhdGEpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgdW5pZm9ybTJ1aXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTHVp
bnQ+IGRhdGEpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybTN1aXYoR0NHTGludCBsb2Nh
dGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTHVpbnQ+IGRhdGEpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgdW5pZm9ybTR1aXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTHVpbnQ+
IGRhdGEpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybU1hdHJpeDJ4M2Z2KEdDR0xpbnQg
bG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0
PiBkYXRhKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVuaWZvcm1NYXRyaXgzeDJmdihHQ0dMaW50
IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9h
dD4gZGF0YSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtTWF0cml4Mng0ZnYoR0NHTGlu
dCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxv
YXQ+IGRhdGEpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybU1hdHJpeDR4MmZ2KEdDR0xp
bnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZs
b2F0PiBkYXRhKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVuaWZvcm1NYXRyaXgzeDRmdihHQ0dM
aW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xm
bG9hdD4gZGF0YSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtTWF0cml4NHgzZnYoR0NH
TGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dM
ZmxvYXQ+IGRhdGEpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdmVydGV4QXR0cmliSTRpKEdDR0x1
aW50IGluZGV4LCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTGludCB6LCBHQ0dMaW50IHcpID0g
MDsKLSAgICB2aXJ0dWFsIHZvaWQgdmVydGV4QXR0cmliSTRpdihHQ0dMdWludCBpbmRleCwgY29u
c3QgR0NHTGludCogdmFsdWVzKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHZlcnRleEF0dHJpYkk0
aXYoR0NHTHVpbnQgaW5kZXgsIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQsIDQ+IHZhbHVlcykgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCB2ZXJ0ZXhBdHRyaWJJNHVpKEdDR0x1aW50IGluZGV4LCBHQ0dM
dWludCB4LCBHQ0dMdWludCB5LCBHQ0dMdWludCB6LCBHQ0dMdWludCB3KSA9IDA7Ci0gICAgdmly
dHVhbCB2b2lkIHZlcnRleEF0dHJpYkk0dWl2KEdDR0x1aW50IGluZGV4LCBjb25zdCBHQ0dMdWlu
dCogdmFsdWVzKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHZlcnRleEF0dHJpYkk0dWl2KEdDR0x1
aW50IGluZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdWludCwgND4gdmFsdWVzKSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIHZlcnRleEF0dHJpYklQb2ludGVyKEdDR0x1aW50IGluZGV4LCBHQ0dMaW50
IHNpemUsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBzdHJpZGUsIEdDR0xpbnRwdHIgb2Zmc2V0
KSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgZHJhd1JhbmdlRWxlbWVudHMoR0NHTGVudW0gbW9k
ZSwgR0NHTHVpbnQgc3RhcnQsIEdDR0x1aW50IGVuZCwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51
bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCkgPSAwOwogCi0gICAgdmlydHVhbCB2b2lkIGRyYXdC
dWZmZXJzKEdDR0xzaXplaSBuLCBjb25zdCBHQ0dMZW51bSogYnVmcykgPSAwOwotICAgIHZpcnR1
YWwgdm9pZCBjbGVhckJ1ZmZlcml2KEdDR0xlbnVtIGJ1ZmZlciwgR0NHTGludCBkcmF3YnVmZmVy
LCBjb25zdCBHQ0dMaW50KiB2YWx1ZXMsIEdDR0x1aW50IHNyY09mZnNldCkgPSAwOwotICAgIHZp
cnR1YWwgdm9pZCBjbGVhckJ1ZmZlcnVpdihHQ0dMZW51bSBidWZmZXIsIEdDR0xpbnQgZHJhd2J1
ZmZlciwgY29uc3QgR0NHTHVpbnQqIHZhbHVlcywgR0NHTHVpbnQgc3JjT2Zmc2V0KSA9IDA7Ci0g
ICAgdmlydHVhbCB2b2lkIGNsZWFyQnVmZmVyZnYoR0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50IGRy
YXdidWZmZXIsIGNvbnN0IEdDR0xmbG9hdCogdmFsdWVzLCBHQ0dMdWludCBzcmNPZmZzZXQpID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd0J1ZmZlcnMoR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+
IGJ1ZnMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY2xlYXJCdWZmZXJpdihHQ0dMZW51bSBidWZm
ZXIsIEdDR0xpbnQgZHJhd2J1ZmZlciwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gdmFsdWVzKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIGNsZWFyQnVmZmVydWl2KEdDR0xlbnVtIGJ1ZmZlciwgR0NH
TGludCBkcmF3YnVmZmVyLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdWludD4gdmFsdWVzKSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIGNsZWFyQnVmZmVyZnYoR0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50IGRy
YXdidWZmZXIsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gdmFsdWVzKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIGNsZWFyQnVmZmVyZmkoR0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50IGRyYXdidWZm
ZXIsIEdDR0xmbG9hdCBkZXB0aCwgR0NHTGludCBzdGVuY2lsKSA9IDA7CiAKICAgICB2aXJ0dWFs
IFBsYXRmb3JtR0xPYmplY3QgY3JlYXRlUXVlcnkoKSA9IDA7CkBAIC0xMjIxLDIwICsxMjIxLDYg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgU3RyaW5nIGdldEFjdGl2ZVVuaWZvcm1CbG9ja05hbWUo
UGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMdWludCB1bmlmb3JtQmxvY2tJbmRleCkgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtQmxvY2tCaW5kaW5nKFBsYXRmb3JtR0xPYmplY3Qg
cHJvZ3JhbSwgR0NHTHVpbnQgdW5pZm9ybUJsb2NrSW5kZXgsIEdDR0x1aW50IHVuaWZvcm1CbG9j
a0JpbmRpbmcpID0gMDsKIAotICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtMWZ2KEdDR0xpbnQgbG9j
YXRpb24sIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWlu
dCBzcmNMZW5ndGgpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybTJmdihHQ0dMaW50IGxv
Y2F0aW9uLCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVp
bnQgc3JjTGVuZ3RoKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHVuaWZvcm0zZnYoR0NHTGludCBs
b2NhdGlvbiwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1
aW50IHNyY0xlbmd0aCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtNGZ2KEdDR0xpbnQg
bG9jYXRpb24sIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dM
dWludCBzcmNMZW5ndGgpID0gMDsKLQotICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtMWl2KEdDR0xp
bnQgbG9jYXRpb24sIGNvbnN0IEdDR0xpbnQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NH
THVpbnQgc3JjTGVuZ3RoKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHVuaWZvcm0yaXYoR0NHTGlu
dCBsb2NhdGlvbiwgY29uc3QgR0NHTGludCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dM
dWludCBzcmNMZW5ndGgpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybTNpdihHQ0dMaW50
IGxvY2F0aW9uLCBjb25zdCBHQ0dMaW50KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1
aW50IHNyY0xlbmd0aCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtNGl2KEdDR0xpbnQg
bG9jYXRpb24sIGNvbnN0IEdDR0xpbnQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVp
bnQgc3JjTGVuZ3RoKSA9IDA7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybU1hdHJpeDJmdihH
Q0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCog
ZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpID0gMDsKLSAgICB2
aXJ0dWFsIHZvaWQgdW5pZm9ybU1hdHJpeDNmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVh
biB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBH
Q0dMdWludCBzcmNMZW5ndGgpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybU1hdHJpeDRm
dihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9h
dCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpID0gMDsKLQog
ICAgIHZpcnR1YWwgdm9pZCBnZXRBY3RpdmVVbmlmb3JtQmxvY2tpdihHQ0dMdWludCBwcm9ncmFt
LCBHQ0dMdWludCB1bmlmb3JtQmxvY2tJbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdD
R0xpbnQ+IHBhcmFtcykgPSAwOwogCiAgICAgLy8gT3RoZXIgZnVuY3Rpb25zLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlc0dMLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5cGVzR0wuaAppbmRleCBl
N2M2OWIyOGRjZTQ2NTgyNTc1NzczMzMyNWI4ZjQ0ZGYyNzIwN2I5Li4wNjJlNTU2N2EyYzE5ZGI3
YjI4MTkxYmFhODVkMzc3Y2MwMTZjNGUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5cGVzR0wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5cGVzR0wuaApAQCAtNjgsNiArNjgsMTAgQEAgc3RydWN0
IEdDR0xTcGFuIHsKICAgICBHQ0dMU3BhbihUICgmYXJyYXkpW0V4dGVudF0pCiAgICAgICAgIDog
ZGF0YShhcnJheSkKICAgICB7IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPgorICAgIEdDR0xT
cGFuKGNvbnN0IEdDR0xTcGFuPFUsIEV4dGVudD4mIG90aGVyLCBzdGQ6OmVuYWJsZV9pZl90PHN0
ZDo6aXNfY29udmVydGlibGVfdjxVKCopW10sIFQoKilbXT4sIG51bGxwdHJfdD4gPSBudWxscHRy
KQorICAgICAgICA6IGRhdGEob3RoZXIuZGF0YSkKKyAgICB7IH0KICAgICBUJiBvcGVyYXRvcltd
KHNpemVfdCBpKSB7IFJFTEVBU0VfQVNTRVJUKGRhdGEgJiYgaSA8IGJ1ZlNpemUpOyByZXR1cm4g
ZGF0YVtpXTsgfQogICAgIFQmIG9wZXJhdG9yKigpIHsgUkVMRUFTRV9BU1NFUlQoZGF0YSAmJiBi
dWZTaXplKTsgcmV0dXJuICpkYXRhOyB9CiAgICAgVCogZGF0YTsKQEAgLTgwLDExICs4NCwxOCBA
QCBzdHJ1Y3QgR0NHTFNwYW48VCwgc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKT4g
ewogICAgICAgICA6IGRhdGEoYXJyYXkpCiAgICAgICAgICwgYnVmU2l6ZShidWZTaXplXykKICAg
ICB7IH0KLSAgICB0ZW1wbGF0ZTxzaXplX3QgU3o+IEdDR0xTcGFuKFQgKCZhcnJheSlbU3pdKQor
ICAgIHRlbXBsYXRlPHNpemVfdCBTej4KKyAgICBHQ0dMU3BhbihUICgmYXJyYXkpW1N6XSkKICAg
ICAgICAgOiBkYXRhKGFycmF5KQogICAgICAgICAsIGJ1ZlNpemUoU3opCiAgICAgeyB9Ci0gICAg
R0NHTFNwYW4oV1RGOjpWZWN0b3I8VD4mIGFycmF5KQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUs
IHNpemVfdCBVRXh0ZW50PgorICAgIEdDR0xTcGFuKGNvbnN0IEdDR0xTcGFuPFUsIFVFeHRlbnQ+
JiBvdGhlciwgc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2NvbnZlcnRpYmxlX3Y8VSgqKVtdLCBU
KCopW10+LCBudWxscHRyX3Q+ID0gbnVsbHB0cikKKyAgICAgICAgOiBkYXRhKG90aGVyLmRhdGEp
CisgICAgICAgICwgYnVmU2l6ZShvdGhlci5idWZTaXplKQorICAgIHsgfQorICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFUsIHNpemVfdCBpbmxpbmVDYXBhY2l0eT4KKyAgICBHQ0dMU3BhbihXVEY6OlZl
Y3RvcjxVLCBpbmxpbmVDYXBhY2l0eT4mIGFycmF5LCBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNf
Y29udmVydGlibGVfdjxVKCopW10sIFQoKilbXT4sIG51bGxwdHJfdD4gPSBudWxscHRyKQogICAg
ICAgICA6IGRhdGEoYXJyYXkuZGF0YSgpKQogICAgICAgICAsIGJ1ZlNpemUoYXJyYXkuc2l6ZSgp
KQogICAgIHsgfQpAQCAtOTQsNiArMTA1LDU0IEBAIHN0cnVjdCBHQ0dMU3BhbjxULCBzdGQ6Om51
bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpPiB7CiAgICAgY29uc3Qgc2l6ZV90IGJ1ZlNpemU7
CiB9OwogCit0ZW1wbGF0ZTw+CitzdHJ1Y3QgR0NHTFNwYW48R0NHTHZvaWQ+IHsKKyAgICBHQ0dM
U3BhbihHQ0dMdm9pZCogYXJyYXksIHNpemVfdCBidWZTaXplXykKKyAgICAgICAgOiBkYXRhKGFy
cmF5KQorICAgICAgICAsIGJ1ZlNpemUoYnVmU2l6ZV8pCisgICAgeyB9CisgICAgdGVtcGxhdGU8
dHlwZW5hbWUgVSwgc2l6ZV90IFN6PgorICAgIEdDR0xTcGFuKFUgKCZhcnJheSlbU3pdKQorICAg
ICAgICA6IGRhdGEoYXJyYXkpCisgICAgICAgICwgYnVmU2l6ZShTeiAqIHNpemVvZihVKSkKKyAg
ICB7IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVLCBzaXplX3QgVUV4dGVudD4KKyAgICBHQ0dM
U3Bhbihjb25zdCBHQ0dMU3BhbjxVLCBVRXh0ZW50PiYgb3RoZXIpCisgICAgICAgIDogZGF0YShv
dGhlci5kYXRhKQorICAgICAgICAsIGJ1ZlNpemUob3RoZXIuYnVmU2l6ZSAqIHNpemVvZihVKSkK
KyAgICB7IH0KKyAgICBHQ0dMdm9pZCogZGF0YTsKKyAgICBjb25zdCBzaXplX3QgYnVmU2l6ZTsK
K307CisKK3RlbXBsYXRlPD4KK3N0cnVjdCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4geworICAg
IEdDR0xTcGFuKGNvbnN0IEdDR0x2b2lkKiBhcnJheSwgc2l6ZV90IGJ1ZlNpemVfKQorICAgICAg
ICA6IGRhdGEoYXJyYXkpCisgICAgICAgICwgYnVmU2l6ZShidWZTaXplXykKKyAgICB7IH0KKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBVLCBzaXplX3QgU3o+CisgICAgR0NHTFNwYW4oVSAoJmFycmF5
KVtTel0pCisgICAgICAgIDogZGF0YShhcnJheSkKKyAgICAgICAgLCBidWZTaXplKFN6ICogc2l6
ZW9mKFUpKQorICAgIHsgfQorICAgIEdDR0xTcGFuKGNvbnN0IEdDR0xTcGFuPEdDR0x2b2lkPiYg
b3RoZXIpCisgICAgICAgIDogZGF0YShvdGhlci5kYXRhKQorICAgICAgICAsIGJ1ZlNpemUob3Ro
ZXIuYnVmU2l6ZSkKKyAgICB7IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVLCBzaXplX3QgVUV4
dGVudD4KKyAgICBHQ0dMU3Bhbihjb25zdCBHQ0dMU3BhbjxVLCBVRXh0ZW50PiYgb3RoZXIpCisg
ICAgICAgIDogZGF0YShvdGhlci5kYXRhKQorICAgICAgICAsIGJ1ZlNpemUob3RoZXIuYnVmU2l6
ZSAqIHNpemVvZihVKSkKKyAgICB7IH0KKyAgICBHQ0dMU3BhbihpbnRwdHJfdCBvZmZzZXQpCisg
ICAgICAgIDogZGF0YShyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0x2b2lkKj4ob2Zmc2V0KSkK
KyAgICAgICAgLCBidWZTaXplKDApCisgICAgeyB9CisgICAgY29uc3QgR0NHTHZvaWQqIGRhdGE7
CisgICAgY29uc3Qgc2l6ZV90IGJ1ZlNpemU7Cit9OworCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBz
aXplX3QgTj4KIEdDR0xTcGFuKFQgKCYpW05dKSAtPiBHQ0dMU3BhbjxULCBOPjsKIApAQCAtMTA1
LDMgKzE2NCw5IEBAIEdDR0xTcGFuPFQ+IG1ha2VHQ0dMU3BhbihUKiBkYXRhLCBzaXplX3QgY291
bnQpCiB7CiAgICAgcmV0dXJuIEdDR0xTcGFuPFQ+IHsgZGF0YSwgY291bnQgfTsKIH0KKwordGVt
cGxhdGU8c2l6ZV90IEV4dGVudCwgdHlwZW5hbWUgVD4KK0dDR0xTcGFuPFQsIEV4dGVudD4gbWFr
ZUdDR0xTcGFuKFQqIGRhdGEpCit7CisgICAgcmV0dXJuIEdDR0xTcGFuPFQsIEV4dGVudD4geyBk
YXRhIH07Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
bmdsZS9FeHRlbnNpb25zR0xBTkdMRS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5jcHAKaW5kZXggNGQwMjViOTkzNDIyNzc2Yjli
NWY0YWFiYzM5YTBjNzg5MTk0MGE5OS4uMTA3MTNhYzU2ZDBkZWNhZDkxYmM1Y2IxNjc0MWFiMjli
NDVhZTRkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5n
bGUvRXh0ZW5zaW9uc0dMQU5HTEUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmNwcApAQCAtMjI3LDEyICsyMjcsMTIgQEAg
Ym9vbCBFeHRlbnNpb25zR0xBTkdMRTo6c3VwcG9ydHNFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBu
YW1lKQogICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMobmFtZSkgfHwg
bV9yZXF1ZXN0YWJsZUV4dGVuc2lvbnMuY29udGFpbnMobmFtZSk7CiB9CiAKLXZvaWQgRXh0ZW5z
aW9uc0dMQU5HTEU6OmRyYXdCdWZmZXJzRVhUKEdDR0xzaXplaSBuLCBjb25zdCBHQ0dMZW51bSog
YnVmcykKK3ZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmRyYXdCdWZmZXJzRVhUKEdDR0xTcGFuPGNv
bnN0IEdDR0xlbnVtPiBidWZzKQogewogICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1
cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZ2w6OkRyYXdCdWZmZXJzRVhUKG4sIGJ1
ZnMpOworICAgIGdsOjpEcmF3QnVmZmVyc0VYVChidWZzLmJ1ZlNpemUsIGJ1ZnMuZGF0YSk7CiB9
CiAKIHZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmRyYXdBcnJheXNJbnN0YW5jZWQoR0NHTGVudW0g
bW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHNpemVpIGNvdW50LCBHQ0dMc2l6ZWkgcHJpbWNvdW50
KQpAQCAtMjg2LDE0ICsyODYsMTQgQEAgdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6cmVhZFBpeGVs
c1JvYnVzdEFOR0xFKGludCB4LCBpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0cKICAgICBnbDo6
UmVhZFBpeGVsc1JvYnVzdEFOR0xFKHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwg
YnVmU2l6ZSwgbGVuZ3RoLCBjb2x1bW5zLCByb3dzLCBwaXhlbHMpOwogfQogCi12b2lkIEV4dGVu
c2lvbnNHTEFOR0xFOjp0ZXhJbWFnZTJEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBpbnQg
bGV2ZWwsIGludCBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVp
Z2h0LCBpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXpl
aSBidWZTaXplLCBjb25zdCB2b2lkICpwaXhlbHMpCit2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjp0
ZXhJbWFnZTJEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWwsIGludCBpbnRl
cm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBpbnQgYm9yZGVy
LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lk
PiBwaXhlbHMpCiB7CiAgICAgaWYgKCFtX2NvbnRleHQtPm1faXNGb3JXZWJHTDIpCiAgICAgICAg
IGludGVybmFsZm9ybWF0ID0gYWRqdXN0V2ViR0wxVGV4dHVyZUludGVybmFsRm9ybWF0KGludGVy
bmFsZm9ybWF0LCBmb3JtYXQsIHR5cGUpOwogICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4
dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZ2w6OlRleEltYWdlMkRSb2J1c3RB
TkdMRSh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgYm9yZGVy
LCBmb3JtYXQsIHR5cGUsIGJ1ZlNpemUsIHBpeGVscyk7CisgICAgZ2w6OlRleEltYWdlMkRSb2J1
c3RBTkdMRSh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgYm9y
ZGVyLCBmb3JtYXQsIHR5cGUsIHBpeGVscy5idWZTaXplLCBwaXhlbHMuZGF0YSk7CiB9CiAKIHZv
aWQgRXh0ZW5zaW9uc0dMQU5HTEU6OnRleFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xmbG9h
dCAqcGFyYW1zKQpAQCAtMzEyLDY0ICszMTIsNjQgQEAgdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6
dGV4UGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW0K
ICAgICBnbDo6VGV4UGFyYW1ldGVyaXZSb2J1c3RBTkdMRSh0YXJnZXQsIHBuYW1lLCBidWZTaXpl
LCBwYXJhbXMpOwogfQogCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjp0ZXhTdWJJbWFnZTJEUm9i
dXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWwsIGludCB4b2Zmc2V0LCBpbnQgeW9m
ZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQs
IEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCB2b2lkICpwaXhlbHMpCit2
b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjp0ZXhTdWJJbWFnZTJEUm9idXN0QU5HTEUoR0NHTGVudW0g
dGFyZ2V0LCBpbnQgbGV2ZWwsIGludCB4b2Zmc2V0LCBpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdp
ZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdD
R0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBwaXhlbHMpCiB7CiAgICAgaWYgKCFtX2NvbnRleHQtPm1h
a2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBnbDo6VGV4U3ViSW1h
Z2UyRFJvYnVzdEFOR0xFKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBo
ZWlnaHQsIGZvcm1hdCwgdHlwZSwgYnVmU2l6ZSwgcGl4ZWxzKTsKKyAgICBnbDo6VGV4U3ViSW1h
Z2UyRFJvYnVzdEFOR0xFKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBo
ZWlnaHQsIGZvcm1hdCwgdHlwZSwgcGl4ZWxzLmJ1ZlNpemUsIHBpeGVscy5kYXRhKTsKIH0KIAot
dm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Y29tcHJlc3NlZFRleEltYWdlMkRSb2J1c3RBTkdMRShH
Q0dMZW51bSB0YXJnZXQsIGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xz
aXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgaW50IGJvcmRlciwgR0NHTHNpemVpIGltYWdl
U2l6ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IHZvaWQqIGRhdGEpCit2b2lkIEV4dGVuc2lv
bnNHTEFOR0xFOjpjb21wcmVzc2VkVGV4SW1hZ2UyRFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdl
dCwgaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBH
Q0dMc2l6ZWkgaGVpZ2h0LCBpbnQgYm9yZGVyLCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMU3Bh
bjxjb25zdCBHQ0dMdm9pZD4gZGF0YSkKIHsKICAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRl
eHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGdsOjpDb21wcmVzc2VkVGV4SW1h
Z2UyRFJvYnVzdEFOR0xFKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVp
Z2h0LCBib3JkZXIsIGltYWdlU2l6ZSwgYnVmU2l6ZSwgZGF0YSk7CisgICAgZ2w6OkNvbXByZXNz
ZWRUZXhJbWFnZTJEUm9idXN0QU5HTEUodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdp
ZHRoLCBoZWlnaHQsIGJvcmRlciwgaW1hZ2VTaXplLCBkYXRhLmJ1ZlNpemUsIGRhdGEuZGF0YSk7
CiAgICAgbV9jb250ZXh0LT5tX3N0YXRlLnRleHR1cmVTZWVkQ291bnQuYWRkKG1fY29udGV4dC0+
bV9zdGF0ZS5jdXJyZW50Qm91bmRUZXh0dXJlKCkpOwogCiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dM
QU5HTEU6OmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0
LCBpbnQgbGV2ZWwsIGludCB4b2Zmc2V0LCBpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBH
Q0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdD
R0xzaXplaSBidWZTaXplLCBjb25zdCB2b2lkKiBkYXRhKQordm9pZCBFeHRlbnNpb25zR0xBTkdM
RTo6Y29tcHJlc3NlZFRleFN1YkltYWdlMkRSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIGlu
dCBsZXZlbCwgaW50IHhvZmZzZXQsIGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xz
aXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTFNw
YW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEpCiB7CiAgICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250
ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBnbDo6Q29tcHJlc3NlZFRleFN1
YkltYWdlMkRSb2J1c3RBTkdMRSh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0
aCwgaGVpZ2h0LCBmb3JtYXQsIGltYWdlU2l6ZSwgYnVmU2l6ZSwgZGF0YSk7CisgICAgZ2w6OkNv
bXByZXNzZWRUZXhTdWJJbWFnZTJEUm9idXN0QU5HTEUodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwg
eW9mZnNldCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCBpbWFnZVNpemUsIGRhdGEuYnVmU2l6ZSwg
ZGF0YS5kYXRhKTsKICAgICBtX2NvbnRleHQtPm1fc3RhdGUudGV4dHVyZVNlZWRDb3VudC5hZGQo
bV9jb250ZXh0LT5tX3N0YXRlLmN1cnJlbnRCb3VuZFRleHR1cmUoKSk7CiB9CiAKLXZvaWQgRXh0
ZW5zaW9uc0dMQU5HTEU6OmNvbXByZXNzZWRUZXhJbWFnZTNEUm9idXN0QU5HTEUoR0NHTGVudW0g
dGFyZ2V0LCBpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lk
dGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgaW50IGJvcmRlciwgR0NHTHNp
emVpIGltYWdlU2l6ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IHZvaWQqIGRhdGEpCit2b2lk
IEV4dGVuc2lvbnNHTEFOR0xFOjpjb21wcmVzc2VkVGV4SW1hZ2UzRFJvYnVzdEFOR0xFKEdDR0xl
bnVtIHRhcmdldCwgaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVp
IHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIGludCBib3JkZXIsIEdD
R0xzaXplaSBpbWFnZVNpemUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRhKQogewogICAg
IGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgZ2w6OkNvbXByZXNzZWRUZXhJbWFnZTNEUm9idXN0QU5HTEUodGFyZ2V0LCBsZXZlbCwg
aW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBib3JkZXIsIGltYWdlU2l6ZSwg
YnVmU2l6ZSwgZGF0YSk7CisgICAgZ2w6OkNvbXByZXNzZWRUZXhJbWFnZTNEUm9idXN0QU5HTEUo
dGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBib3Jk
ZXIsIGltYWdlU2l6ZSwgZGF0YS5idWZTaXplLCBkYXRhLmRhdGEpOwogfQogCi12b2lkIEV4dGVu
c2lvbnNHTEFOR0xFOjpjb21wcmVzc2VkVGV4U3ViSW1hZ2UzRFJvYnVzdEFOR0xFKEdDR0xlbnVt
IHRhcmdldCwgaW50IGxldmVsLCBpbnQgeG9mZnNldCwgaW50IHlvZmZzZXQsIGludCB6b2Zmc2V0
LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NH
TGVudW0gZm9ybWF0LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29u
c3Qgdm9pZCogZGF0YSkKK3ZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmNvbXByZXNzZWRUZXhTdWJJ
bWFnZTNEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWwsIGludCB4b2Zmc2V0
LCBpbnQgeW9mZnNldCwgaW50IHpvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhl
aWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFnZVNp
emUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRhKQogewogICAgIGlmICghbV9jb250ZXh0
LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZ2w6OkNvbXBy
ZXNzZWRUZXhTdWJJbWFnZTNEUm9idXN0QU5HTEUodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9m
ZnNldCwgem9mZnNldCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGZvcm1hdCwgaW1hZ2VTaXplLCBi
dWZTaXplLCBkYXRhKTsKKyAgICBnbDo6Q29tcHJlc3NlZFRleFN1YkltYWdlM0RSb2J1c3RBTkdM
RSh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB6b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0
LCBkZXB0aCwgZm9ybWF0LCBpbWFnZVNpemUsIGRhdGEuYnVmU2l6ZSwgZGF0YS5kYXRhKTsKIH0K
IAogCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjp0ZXhJbWFnZTNEUm9idXN0QU5HTEUoR0NHTGVu
dW0gdGFyZ2V0LCBpbnQgbGV2ZWwsIGludCBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRo
LCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIGludCBib3JkZXIsIEdDR0xlbnVt
IGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IHZvaWQgKnBp
eGVscykKK3ZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OnRleEltYWdlM0RSb2J1c3RBTkdMRShHQ0dM
ZW51bSB0YXJnZXQsIGludCBsZXZlbCwgaW50IGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lk
dGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgaW50IGJvcmRlciwgR0NHTGVu
dW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gcGl4ZWxz
KQogewogICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgZ2w6OlRleEltYWdlM0RSb2J1c3RBTkdMRSh0YXJnZXQsIGxldmVsLCBp
bnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGJvcmRlciwgZm9ybWF0LCB0eXBl
LCBidWZTaXplLCBwaXhlbHMpOworICAgIGdsOjpUZXhJbWFnZTNEUm9idXN0QU5HTEUodGFyZ2V0
LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBib3JkZXIsIGZv
cm1hdCwgdHlwZSwgcGl4ZWxzLmJ1ZlNpemUsIHBpeGVscy5kYXRhKTsKIH0KIAotdm9pZCBFeHRl
bnNpb25zR0xBTkdMRTo6dGV4U3ViSW1hZ2UzRFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwg
aW50IGxldmVsLCBpbnQgeG9mZnNldCwgaW50IHlvZmZzZXQsIGludCB6b2Zmc2V0LCBHQ0dMc2l6
ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGVudW0gZm9y
bWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3Qgdm9pZCAqcGl4ZWxz
KQordm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6dGV4U3ViSW1hZ2UzRFJvYnVzdEFOR0xFKEdDR0xl
bnVtIHRhcmdldCwgaW50IGxldmVsLCBpbnQgeG9mZnNldCwgaW50IHlvZmZzZXQsIGludCB6b2Zm
c2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwg
R0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4g
cGl4ZWxzKQogewogICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgZ2w6OlRleFN1YkltYWdlM0RSb2J1c3RBTkdMRSh0YXJnZXQs
IGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB6b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwg
Zm9ybWF0LCB0eXBlLCBidWZTaXplLCBwaXhlbHMpOworICAgIGdsOjpUZXhTdWJJbWFnZTNEUm9i
dXN0QU5HTEUodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgem9mZnNldCwgd2lkdGgs
IGhlaWdodCwgZGVwdGgsIGZvcm1hdCwgdHlwZSwgcGl4ZWxzLmJ1ZlNpemUsIHBpeGVscy5kYXRh
KTsKIH0KIAogdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0UXVlcnlpdlJvYnVzdEFOR0xFKEdD
R0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6
ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmgKaW5kZXggNTdi
YjkzYmM4NGMzMzU5MGZiY2Y0YjNmN2ExZWI1YTU1YzU5MjU2Yy4uYWRhZWFmOTEwMWMxNGY3ZGNk
NGY5OTkwODIwZmE5ZWEyNGJjODk0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5oCkBAIC01Miw3ICs1
Miw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGluc2VydEV2ZW50TWFya2VyRVhUKGNvbnN0IFN0cmlu
ZyYpIG92ZXJyaWRlOwogICAgIHZvaWQgcHVzaEdyb3VwTWFya2VyRVhUKGNvbnN0IFN0cmluZyYp
IG92ZXJyaWRlOwogICAgIHZvaWQgcG9wR3JvdXBNYXJrZXJFWFQodm9pZCkgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCBkcmF3QnVmZmVyc0VYVChHQ0dMc2l6ZWksIGNvbnN0IEdDR0xlbnVtKikgb3ZlcnJp
ZGU7CisgICAgdm9pZCBkcmF3QnVmZmVyc0VYVChHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4pIG92
ZXJyaWRlOwogCiAgICAgU3RyaW5nIGdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRShQbGF0
Zm9ybUdMT2JqZWN0KSBvdmVycmlkZTsKIApAQCAtNzQsMTcgKzc0LDE3IEBAIHB1YmxpYzoKIAog
ICAgIC8vIEdMX0FOR0xFX3JvYnVzdF9jbGllbnRfbWVtb3J5CiAgICAgdm9pZCByZWFkUGl4ZWxz
Um9idXN0QU5HTEUoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNp
emVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xzaXplaSAqY29sdW1ucywgR0NHTHNpemVpICpy
b3dzLCB2b2lkICpwaXhlbHMpIG92ZXJyaWRlOwotICAgIHZvaWQgdGV4SW1hZ2UyRFJvYnVzdEFO
R0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCBpbnRlcm5hbGZvcm1h
dCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NH
TGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3Qgdm9p
ZCAqcGl4ZWxzKSBvdmVycmlkZTsKKyAgICB2b2lkIHRleEltYWdlMkRSb2J1c3RBTkdMRShHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgaW50ZXJuYWxmb3JtYXQsIEdDR0xz
aXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xlbnVtIGZv
cm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IHBpeGVscykgb3Zl
cnJpZGU7CiAgICAgdm9pZCB0ZXhQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMZmxvYXQgKnBh
cmFtcykgb3ZlcnJpZGU7CiAgICAgdm9pZCB0ZXhQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dM
aW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgdGV4U3ViSW1hZ2UyRFJvYnVzdEFOR0xF
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50
IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9y
bWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3Qgdm9pZCAqcGl4ZWxz
KSBvdmVycmlkZTsKLSAgICB2b2lkIGNvbXByZXNzZWRUZXhJbWFnZTJEUm9idXN0QU5HTEUoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NH
THNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTHNpemVp
IGltYWdlU2l6ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0x2b2lkKiBkYXRhKSBvdmVy
cmlkZTsKLSAgICB2b2lkIGNvbXByZXNzZWRUZXhTdWJJbWFnZTJEUm9idXN0QU5HTEUoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNl
dCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdD
R0xzaXplaSBpbWFnZVNpemUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMdm9pZCogZGF0
YSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBjb21wcmVzc2VkVGV4SW1hZ2UzRFJvYnVzdEFOR0xFKEdD
R0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdD
R0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMaW50
IGJvcmRlciwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdD
R0x2b2lkKiBkYXRhKSBvdmVycmlkZTsKLSAgICB2b2lkIGNvbXByZXNzZWRUZXhTdWJJbWFnZTNE
Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZz
ZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTGludCB6b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdD
R0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMc2l6
ZWkgaW1hZ2VTaXplLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTHZvaWQqIGRhdGEpIG92
ZXJyaWRlOwotCi0gICAgdm9pZCB0ZXhJbWFnZTNEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgs
IEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGludCBib3JkZXIsIEdDR0xl
bnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IHZvaWQg
KnBpeGVscykgb3ZlcnJpZGU7Ci0gICAgdm9pZCB0ZXhTdWJJbWFnZTNEUm9idXN0QU5HTEUoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9m
ZnNldCwgR0NHTGludCB6b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQs
IEdDR0xzaXplaSBkZXB0aCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgY29uc3Qgdm9pZCAqcGl4ZWxzKSBvdmVycmlkZTsKKyAgICB2b2lkIHRleFN1
YkltYWdlMkRSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xp
bnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBo
ZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48Y29uc3QgR0NH
THZvaWQ+IHBpeGVscykgb3ZlcnJpZGU7CisgICAgdm9pZCBjb21wcmVzc2VkVGV4SW1hZ2UyRFJv
YnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJu
YWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3Jk
ZXIsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRhKSBv
dmVycmlkZTsKKyAgICB2b2lkIGNvbXByZXNzZWRUZXhTdWJJbWFnZTJEUm9idXN0QU5HTEUoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9m
ZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQs
IEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRhKSBvdmVy
cmlkZTsKKyAgICB2b2lkIGNvbXByZXNzZWRUZXhJbWFnZTNEUm9idXN0QU5HTEUoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVp
IHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xpbnQgYm9yZGVy
LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gZGF0YSkgb3Zl
cnJpZGU7CisgICAgdm9pZCBjb21wcmVzc2VkVGV4U3ViSW1hZ2UzRFJvYnVzdEFOR0xFKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZz
ZXQsIEdDR0xpbnQgem9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBH
Q0dMc2l6ZWkgZGVwdGgsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NH
TFNwYW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEpIG92ZXJyaWRlOworCisgICAgdm9pZCB0ZXhJbWFn
ZTNEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IGlu
dGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXpl
aSBkZXB0aCwgR0NHTGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwg
R0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IHBpeGVscykgb3ZlcnJpZGU7CisgICAgdm9pZCB0ZXhT
dWJJbWFnZTNEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dM
aW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTGludCB6b2Zmc2V0LCBHQ0dMc2l6ZWkg
d2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGVudW0gZm9ybWF0
LCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gcGl4ZWxzKSBvdmVycmlk
ZTsKICAgICB2b2lkIGdldFF1ZXJ5aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xl
bnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQg
KnBhcmFtcykgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRRdWVyeU9iamVjdHVpdlJvYnVzdEFOR0xF
KEdDR0x1aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXpl
aSAqbGVuZ3RoLCBHQ0dMdWludCAqcGFyYW1zKSBvdmVycmlkZTsKICAgICB2b2lkIGdldEJ1ZmZl
clBvaW50ZXJ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NH
THNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCB2b2lkICoqcGFyYW1zKSBvdmVycmlk
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dy
YXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAKaW5kZXggZmViMGJlYmVmMzE1ZjBl
MTM4YmE5OWQ2MmViNmNmY2VkNTE5MzY3YS4uNzNmNGM0ZjMwM2FjNTBkN2FmYzg2YTI5MjBhNDYx
NjZkY2E4ZTBiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAKQEAgLTM2Miwx
NCArMzYyLDE5IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFNoYWRlclByZWNp
c2lvbkZvcm1hdChHQ0dMZW51bSBzaGFkZXJUeXBlLCBHQ0dMCiAgICAgZ2w6OkdldFNoYWRlclBy
ZWNpc2lvbkZvcm1hdChzaGFkZXJUeXBlLCBwcmVjaXNpb25UeXBlLCByYW5nZS5kYXRhLCBwcmVj
aXNpb24pOwogfQogCi1ib29sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp0ZXhJbWFnZTJEKEdD
R0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdD
R0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xlbnVt
IGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgY29uc3Qgdm9pZCogcGl4ZWxzKQorYm9vbCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6dGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2
ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBo
ZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdD
R0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBwaXhlbHMpCiB7Ci0gICAgaWYgKHdpZHRoICYmIGhlaWdo
dCAmJiAhcGl4ZWxzKSB7CisgICAgaWYgKHdpZHRoICYmIGhlaWdodCAmJiAhcGl4ZWxzLmRhdGEp
IHsKICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoSU5WQUxJRF9WQUxVRSk7CiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICB9CisgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCi0gICAgdGV4SW1hZ2UyRERpcmVjdCh0YXJnZXQsIGxldmVsLCBp
bnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgYm9yZGVyLCBmb3JtYXQsIHR5cGUsIHBpeGVs
cyk7CisgICAgaWYgKCFtX2lzRm9yV2ViR0wyICYmIG1fZXh0ZW5zaW9ucykKKyAgICAgICAgaW50
ZXJuYWxmb3JtYXQgPSBtX2V4dGVuc2lvbnMtPmFkanVzdFdlYkdMMVRleHR1cmVJbnRlcm5hbEZv
cm1hdChpbnRlcm5hbGZvcm1hdCwgZm9ybWF0LCB0eXBlKTsKKyAgICBnbDo6VGV4SW1hZ2UyRFJv
YnVzdEFOR0xFKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBi
b3JkZXIsIGZvcm1hdCwgdHlwZSwgcGl4ZWxzLmJ1ZlNpemUsIHBpeGVscy5kYXRhKTsKKyAgICBt
X3N0YXRlLnRleHR1cmVTZWVkQ291bnQuYWRkKG1fc3RhdGUuY3VycmVudEJvdW5kVGV4dHVyZSgp
KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtODM1LDIwICs4NDAsMjAgQEAgdm9pZCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6YnVmZmVyRGF0YShHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXpl
aXB0ciBzaXplLCBHQ0cKICAgICBnbDo6QnVmZmVyRGF0YSh0YXJnZXQsIHNpemUsIDAsIHVzYWdl
KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6YnVmZmVyRGF0YShHQ0dMZW51
bSB0YXJnZXQsIEdDR0xzaXplaXB0ciBzaXplLCBjb25zdCB2b2lkKiBkYXRhLCBHQ0dMZW51bSB1
c2FnZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmJ1ZmZlckRhdGEoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gZGF0YSwgR0NHTGVudW0gdXNhZ2UpCiB7
CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
Z2w6OkJ1ZmZlckRhdGEodGFyZ2V0LCBzaXplLCBkYXRhLCB1c2FnZSk7CisgICAgZ2w6OkJ1ZmZl
ckRhdGEodGFyZ2V0LCBkYXRhLmJ1ZlNpemUsIGRhdGEuZGF0YSwgdXNhZ2UpOwogfQogCi12b2lk
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpidWZmZXJTdWJEYXRhKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGludHB0ciBvZmZzZXQsIEdDR0xzaXplaXB0ciBzaXplLCBjb25zdCB2b2lkKiBkYXRhKQor
dm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6YnVmZmVyU3ViRGF0YShHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xpbnRwdHIgb2Zmc2V0LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gZGF0YSkKIHsK
ICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBn
bDo6QnVmZmVyU3ViRGF0YSh0YXJnZXQsIG9mZnNldCwgc2l6ZSwgZGF0YSk7CisgICAgZ2w6OkJ1
ZmZlclN1YkRhdGEodGFyZ2V0LCBvZmZzZXQsIGRhdGEuYnVmU2l6ZSwgZGF0YS5kYXRhKTsKIH0K
IAogdm9pZCogR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Om1hcEJ1ZmZlclJhbmdlKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGludHB0ciBvZmZzZXQsIEdDR0xzaXplaXB0ciBsZW5ndGgsIEdDR0xiaXRm
aWVsZCBhY2Nlc3MpCkBAIC0xNTAxLDEyICsxNTA2LDEyIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OnVuaWZvcm0xZihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMZmxvYXQgdjApCiAgICAg
Z2w6OlVuaWZvcm0xZihsb2NhdGlvbiwgdjApOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjp1bmlmb3JtMWZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBzaXplLCBjb25z
dCBHQ0dMZmxvYXQqIGFycmF5KQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9y
bTFmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGFycmF5KQog
ewogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAg
IGdsOjpVbmlmb3JtMWZ2KGxvY2F0aW9uLCBzaXplLCBhcnJheSk7CisgICAgZ2w6OlVuaWZvcm0x
ZnYobG9jYXRpb24sIGFycmF5LmJ1ZlNpemUsIGFycmF5LmRhdGEpOwogfQogCiB2b2lkIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMmYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGZsb2F0
IHYwLCBHQ0dMZmxvYXQgdjEpCkBAIC0xNTE3LDEzICsxNTIyLDEzIEBAIHZvaWQgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OnVuaWZvcm0yZihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMZmxvYXQgdjAs
IEdDR0xmbG9hCiAgICAgZ2w6OlVuaWZvcm0yZihsb2NhdGlvbiwgdjAsIHYxKTsKIH0KIAotdm9p
ZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTJmdihHQ0dMaW50IGxvY2F0aW9uLCBH
Q0dMc2l6ZWkgc2l6ZSwgY29uc3QgR0NHTGZsb2F0KiBhcnJheSkKK3ZvaWQgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OnVuaWZvcm0yZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3Qg
R0NHTGZsb2F0PiBhcnJheSkKIHsKLSAgICAvLyBGSVhNRTogbGVuZ3RoIG5lZWRzIHRvIGJlIGEg
bXVsdGlwbGUgb2YgMi4KKyAgICBBU1NFUlQoIShhcnJheS5idWZTaXplICUgMikpOwogICAgIGlm
ICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGdsOjpVbmlm
b3JtMmZ2KGxvY2F0aW9uLCBzaXplLCBhcnJheSk7CisgICAgZ2w6OlVuaWZvcm0yZnYobG9jYXRp
b24sIGFycmF5LmJ1ZlNpemUgLyAyLCBhcnJheS5kYXRhKTsKIH0KIAogdm9pZCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6dW5pZm9ybTNmKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xmbG9hdCB2MCwg
R0NHTGZsb2F0IHYxLCBHQ0dMZmxvYXQgdjIpCkBAIC0xNTM0LDEzICsxNTM5LDEzIEBAIHZvaWQg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0zZihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dM
ZmxvYXQgdjAsIEdDR0xmbG9hCiAgICAgZ2w6OlVuaWZvcm0zZihsb2NhdGlvbiwgdjAsIHYxLCB2
Mik7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0zZnYoR0NHTGlu
dCBsb2NhdGlvbiwgR0NHTHNpemVpIHNpemUsIGNvbnN0IEdDR0xmbG9hdCogYXJyYXkpCit2b2lk
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtM2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdD
R0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gYXJyYXkpCiB7Ci0gICAgLy8gRklYTUU6IGxlbmd0aCBu
ZWVkcyB0byBiZSBhIG11bHRpcGxlIG9mIDMuCisgICAgQVNTRVJUKCEoYXJyYXkuYnVmU2l6ZSAl
IDMpKTsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBnbDo6VW5pZm9ybTNmdihsb2NhdGlvbiwgc2l6ZSwgYXJyYXkpOworICAgIGdsOjpVbmlm
b3JtM2Z2KGxvY2F0aW9uLCBhcnJheS5idWZTaXplIC8gMywgYXJyYXkuZGF0YSk7CiB9CiAKIHZv
aWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm00ZihHQ0dMaW50IGxvY2F0aW9uLCBH
Q0dMZmxvYXQgdjAsIEdDR0xmbG9hdCB2MSwgR0NHTGZsb2F0IHYyLCBHQ0dMZmxvYXQgdjMpCkBA
IC0xNTUxLDEzICsxNTU2LDEzIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZv
cm00ZihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMZmxvYXQgdjAsIEdDR0xmbG9hCiAgICAgZ2w6OlVu
aWZvcm00Zihsb2NhdGlvbiwgdjAsIHYxLCB2MiwgdjMpOwogfQogCi12b2lkIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjp1bmlmb3JtNGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBzaXpl
LCBjb25zdCBHQ0dMZmxvYXQqIGFycmF5KQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
dW5pZm9ybTRmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGFy
cmF5KQogewotICAgIC8vIEZJWE1FOiBsZW5ndGggbmVlZHMgdG8gYmUgYSBtdWx0aXBsZSBvZiA0
LgorICAgIEFTU0VSVCghKGFycmF5LmJ1ZlNpemUgJSA0KSk7CiAgICAgaWYgKCFtYWtlQ29udGV4
dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZ2w6OlVuaWZvcm00ZnYobG9jYXRp
b24sIHNpemUsIGFycmF5KTsKKyAgICBnbDo6VW5pZm9ybTRmdihsb2NhdGlvbiwgYXJyYXkuYnVm
U2l6ZSAvIDQsIGFycmF5LmRhdGEpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
Ojp1bmlmb3JtMWkoR0NHTGludCBsb2NhdGlvbiwgR0NHTGludCB2MCkKQEAgLTE1NjgsMTIgKzE1
NzMsMTIgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTFpKEdDR0xpbnQg
bG9jYXRpb24sIEdDR0xpbnQgdjApCiAgICAgZ2w6OlVuaWZvcm0xaShsb2NhdGlvbiwgdjApOwog
fQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMWl2KEdDR0xpbnQgbG9j
YXRpb24sIEdDR0xzaXplaSBzaXplLCBjb25zdCBHQ0dMaW50KiBhcnJheSkKK3ZvaWQgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0xaXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48
Y29uc3QgR0NHTGludD4gYXJyYXkpCiB7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgZ2w6OlVuaWZvcm0xaXYobG9jYXRpb24sIHNpemUsIGFy
cmF5KTsKKyAgICBnbDo6VW5pZm9ybTFpdihsb2NhdGlvbiwgYXJyYXkuYnVmU2l6ZSwgYXJyYXku
ZGF0YSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0yaShHQ0dM
aW50IGxvY2F0aW9uLCBHQ0dMaW50IHYwLCBHQ0dMaW50IHYxKQpAQCAtMTU4NCwxMyArMTU4OSwx
MyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMmkoR0NHTGludCBsb2Nh
dGlvbiwgR0NHTGludCB2MCwgR0NHTGludCB2MQogICAgIGdsOjpVbmlmb3JtMmkobG9jYXRpb24s
IHYwLCB2MSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0yaXYo
R0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIHNpemUsIGNvbnN0IEdDR0xpbnQqIGFycmF5KQor
dm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTJpdihHQ0dMaW50IGxvY2F0aW9u
LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50PiBhcnJheSkKIHsKLSAgICAvLyBGSVhNRTogbGVuZ3Ro
IG5lZWRzIHRvIGJlIGEgbXVsdGlwbGUgb2YgMi4KKyAgICBBU1NFUlQoIShhcnJheS5idWZTaXpl
ICUgMikpOwogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIGdsOjpVbmlmb3JtMml2KGxvY2F0aW9uLCBzaXplLCBhcnJheSk7CisgICAgZ2w6OlVu
aWZvcm0yaXYobG9jYXRpb24sIGFycmF5LmJ1ZlNpemUgLyAyLCBhcnJheS5kYXRhKTsKIH0KIAog
dm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTNpKEdDR0xpbnQgbG9jYXRpb24s
IEdDR0xpbnQgdjAsIEdDR0xpbnQgdjEsIEdDR0xpbnQgdjIpCkBAIC0xNjAxLDEzICsxNjA2LDEz
IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0zaShHQ0dMaW50IGxvY2F0
aW9uLCBHQ0dMaW50IHYwLCBHQ0dMaW50IHYxCiAgICAgZ2w6OlVuaWZvcm0zaShsb2NhdGlvbiwg
djAsIHYxLCB2Mik7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0z
aXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIHNpemUsIGNvbnN0IEdDR0xpbnQqIGFycmF5
KQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTNpdihHQ0dMaW50IGxvY2F0
aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50PiBhcnJheSkKIHsKLSAgICAvLyBGSVhNRTogbGVu
Z3RoIG5lZWRzIHRvIGJlIGEgbXVsdGlwbGUgb2YgMy4KKyAgICBBU1NFUlQoIShhcnJheS5idWZT
aXplICUgMykpOwogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIGdsOjpVbmlmb3JtM2l2KGxvY2F0aW9uLCBzaXplLCBhcnJheSk7CisgICAgZ2w6
OlVuaWZvcm0zaXYobG9jYXRpb24sIGFycmF5LmJ1ZlNpemUgLyAzLCBhcnJheS5kYXRhKTsKIH0K
IAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTRpKEdDR0xpbnQgbG9jYXRp
b24sIEdDR0xpbnQgdjAsIEdDR0xpbnQgdjEsIEdDR0xpbnQgdjIsIEdDR0xpbnQgdjMpCkBAIC0x
NjE4LDQwICsxNjIzLDM5IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm00
aShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMaW50IHYwLCBHQ0dMaW50IHYxCiAgICAgZ2w6OlVuaWZv
cm00aShsb2NhdGlvbiwgdjAsIHYxLCB2MiwgdjMpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjp1bmlmb3JtNGl2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBzaXplLCBj
b25zdCBHQ0dMaW50KiBhcnJheSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZv
cm00aXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gYXJyYXkpCiB7
Ci0gICAgLy8gRklYTUU6IGxlbmd0aCBuZWVkcyB0byBiZSBhIG11bHRpcGxlIG9mIDQuCisgICAg
QVNTRVJUKCEoYXJyYXkuYnVmU2l6ZSAlIDQpKTsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVu
dCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBnbDo6VW5pZm9ybTRpdihsb2NhdGlvbiwgc2l6
ZSwgYXJyYXkpOworICAgIGdsOjpVbmlmb3JtNGl2KGxvY2F0aW9uLCBhcnJheS5idWZTaXplIC8g
NCwgYXJyYXkuZGF0YSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZv
cm1NYXRyaXgyZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIHNpemUsIEdDR0xib29sZWFu
IHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiBhcnJheSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXgyZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4g
dHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGFycmF5KQogewotICAgIC8vIEZJ
WE1FOiBsZW5ndGggbmVlZHMgdG8gYmUgYSBtdWx0aXBsZSBvZiA0LgogICAgIGlmICghbWFrZUNv
bnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGdsOjpVbmlmb3JtTWF0cml4
MmZ2KGxvY2F0aW9uLCBzaXplLCB0cmFuc3Bvc2UsIGFycmF5KTsKKyAgICBnbDo6VW5pZm9ybU1h
dHJpeDJmdihsb2NhdGlvbiwgYXJyYXkuYnVmU2l6ZSAvIDQsIHRyYW5zcG9zZSwgYXJyYXkuZGF0
YSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXgzZnYo
R0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIHNpemUsIEdDR0xib29sZWFuIHRyYW5zcG9zZSwg
Y29uc3QgR0NHTGZsb2F0KiBhcnJheSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVu
aWZvcm1NYXRyaXgzZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBH
Q0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGFycmF5KQogewotICAgIC8vIEZJWE1FOiBsZW5ndGgg
bmVlZHMgdG8gYmUgYSBtdWx0aXBsZSBvZiA5LgorICAgIEFTU0VSVCghKGFycmF5LmJ1ZlNpemUg
JSA5KSk7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgZ2w6OlVuaWZvcm1NYXRyaXgzZnYobG9jYXRpb24sIHNpemUsIHRyYW5zcG9zZSwgYXJy
YXkpOworICAgIGdsOjpVbmlmb3JtTWF0cml4M2Z2KGxvY2F0aW9uLCBhcnJheS5idWZTaXplIC8g
OSwgdHJhbnNwb3NlLCBhcnJheS5kYXRhKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6dW5pZm9ybU1hdHJpeDRmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgc2l6ZSwg
R0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHQ0dMZmxvYXQqIGFycmF5KQordm9pZCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybU1hdHJpeDRmdihHQ0dMaW50IGxvY2F0aW9uLCBH
Q0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gYXJyYXkpCiB7
Ci0gICAgLy8gRklYTUU6IGxlbmd0aCBuZWVkcyB0byBiZSBhIG11bHRpcGxlIG9mIDE2LgorICAg
IEFTU0VSVCghKGFycmF5LmJ1ZlNpemUgJSAxNikpOwogICAgIGlmICghbWFrZUNvbnRleHRDdXJy
ZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGdsOjpVbmlmb3JtTWF0cml4NGZ2KGxvY2F0
aW9uLCBzaXplLCB0cmFuc3Bvc2UsIGFycmF5KTsKKyAgICBnbDo6VW5pZm9ybU1hdHJpeDRmdihs
b2NhdGlvbiwgYXJyYXkuYnVmU2l6ZSAvIDE2LCB0cmFuc3Bvc2UsIGFycmF5LmRhdGEpOwogfQog
CiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1c2VQcm9ncmFtKFBsYXRmb3JtR0xPYmpl
Y3QgcHJvZ3JhbSkKQEAgLTE2ODAsMTIgKzE2ODQsMTIgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6dmVydGV4QXR0cmliMWYoR0NHTHVpbnQgaW5kZXgsIEdDR0xmbG9hdCB2MCkKICAg
ICBnbDo6VmVydGV4QXR0cmliMWYoaW5kZXgsIHYwKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6dmVydGV4QXR0cmliMWZ2KEdDR0x1aW50IGluZGV4LCBjb25zdCBHQ0dMZmxv
YXQqIGFycmF5KQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliMWZ2
KEdDR0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQsIDE+IGFycmF5KQogewog
ICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGds
OjpWZXJ0ZXhBdHRyaWIxZnYoaW5kZXgsIGFycmF5KTsKKyAgICBnbDo6VmVydGV4QXR0cmliMWZ2
KGluZGV4LCBhcnJheS5kYXRhKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
dmVydGV4QXR0cmliMmYoR0NHTHVpbnQgaW5kZXgsIEdDR0xmbG9hdCB2MCwgR0NHTGZsb2F0IHYx
KQpAQCAtMTY5NiwxMiArMTcwMCwxMiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2
ZXJ0ZXhBdHRyaWIyZihHQ0dMdWludCBpbmRleCwgR0NHTGZsb2F0IHYwLCBHQ0dMZgogICAgIGds
OjpWZXJ0ZXhBdHRyaWIyZihpbmRleCwgdjAsIHYxKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6dmVydGV4QXR0cmliMmZ2KEdDR0x1aW50IGluZGV4LCBjb25zdCBHQ0dMZmxv
YXQqIGFycmF5KQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliMmZ2
KEdDR0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQsIDI+IGFycmF5KQogewog
ICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGds
OjpWZXJ0ZXhBdHRyaWIyZnYoaW5kZXgsIGFycmF5KTsKKyAgICBnbDo6VmVydGV4QXR0cmliMmZ2
KGluZGV4LCBhcnJheS5kYXRhKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
dmVydGV4QXR0cmliM2YoR0NHTHVpbnQgaW5kZXgsIEdDR0xmbG9hdCB2MCwgR0NHTGZsb2F0IHYx
LCBHQ0dMZmxvYXQgdjIpCkBAIC0xNzEyLDEyICsxNzE2LDEyIEBAIHZvaWQgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYjNmKEdDR0x1aW50IGluZGV4LCBHQ0dMZmxvYXQgdjAs
IEdDR0xmCiAgICAgZ2w6OlZlcnRleEF0dHJpYjNmKGluZGV4LCB2MCwgdjEsIHYyKTsKIH0KIAot
dm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliM2Z2KEdDR0x1aW50IGlu
ZGV4LCBjb25zdCBHQ0dMZmxvYXQqIGFycmF5KQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6dmVydGV4QXR0cmliM2Z2KEdDR0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxv
YXQsIDM+IGFycmF5KQogewogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIGdsOjpWZXJ0ZXhBdHRyaWIzZnYoaW5kZXgsIGFycmF5KTsKKyAgICBn
bDo6VmVydGV4QXR0cmliM2Z2KGluZGV4LCBhcnJheS5kYXRhKTsKIH0KIAogdm9pZCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliNGYoR0NHTHVpbnQgaW5kZXgsIEdDR0xmbG9h
dCB2MCwgR0NHTGZsb2F0IHYxLCBHQ0dMZmxvYXQgdjIsIEdDR0xmbG9hdCB2MykKQEAgLTE3Mjgs
MTIgKzE3MzIsMTIgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmli
NGYoR0NHTHVpbnQgaW5kZXgsIEdDR0xmbG9hdCB2MCwgR0NHTGYKICAgICBnbDo6VmVydGV4QXR0
cmliNGYoaW5kZXgsIHYwLCB2MSwgdjIsIHYzKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6dmVydGV4QXR0cmliNGZ2KEdDR0x1aW50IGluZGV4LCBjb25zdCBHQ0dMZmxvYXQq
IGFycmF5KQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliNGZ2KEdD
R0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQsIDQ+IGFycmF5KQogewogICAg
IGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGdsOjpW
ZXJ0ZXhBdHRyaWI0ZnYoaW5kZXgsIGFycmF5KTsKKyAgICBnbDo6VmVydGV4QXR0cmliNGZ2KGlu
ZGV4LCBhcnJheS5kYXRhKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVy
dGV4QXR0cmliUG9pbnRlcihHQ0dMdWludCBpbmRleCwgR0NHTGludCBzaXplLCBHQ0dMZW51bSB0
eXBlLCBHQ0dMYm9vbGVhbiBub3JtYWxpemVkLCBHQ0dMc2l6ZWkgc3RyaWRlLCBHQ0dMaW50cHRy
IG9mZnNldCkKQEAgLTIwMjksMTMgKzIwMzMsMTMgQEAgR0NHTHNpemVpcHRyIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpnZXRWZXJ0ZXhBdHRyaWJPZmZzZXQoR0NHTHVpbnQgaW5kZXgsIEdDR0wK
ICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTHNpemVpcHRyPihyZWludGVycHJldF9jYXN0PGlu
dHB0cl90Pihwb2ludGVyKSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnRl
eFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmYs
IEdDR0xpbnQgeW9mZiwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51
bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIGNvbnN0IHZvaWQqIHBpeGVscykKK3ZvaWQgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OnRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50
IGxldmVsLCBHQ0dMaW50IHhvZmYsIEdDR0xpbnQgeW9mZiwgR0NHTHNpemVpIHdpZHRoLCBHQ0dM
c2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPGNv
bnN0IEdDR0x2b2lkPiBwaXhlbHMpCiB7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gRklYTUU6IHdlIHdpbGwgbmVlZCB0byBkZWFsIHdp
dGggUGl4ZWxTdG9yZSBwYXJhbXMgd2hlbiBkZWFsaW5nIHdpdGggaW1hZ2UgYnVmZmVycyB0aGF0
IGRpZmZlciBmcm9tIHRoZSBzdWJpbWFnZSBzaXplLgotICAgIGdsOjpUZXhTdWJJbWFnZTJEKHRh
cmdldCwgbGV2ZWwsIHhvZmYsIHlvZmYsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgcGl4
ZWxzKTsKKyAgICBnbDo6VGV4U3ViSW1hZ2UyRFJvYnVzdEFOR0xFKHRhcmdldCwgbGV2ZWwsIHhv
ZmYsIHlvZmYsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgcGl4ZWxzLmJ1ZlNpemUsIHBp
eGVscy5kYXRhKTsKICAgICBtX3N0YXRlLnRleHR1cmVTZWVkQ291bnQuYWRkKG1fc3RhdGUuY3Vy
cmVudEJvdW5kVGV4dHVyZSgpKTsKIH0KIApAQCAtMjIwMywxNyArMjIwNyw2IEBAIHZvaWQgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OmRpc3BhdGNoQ29udGV4dENoYW5nZWROb3RpZmljYXRpb24o
KQogICAgICAgICBjbGllbnQtPmRpc3BhdGNoQ29udGV4dENoYW5nZWROb3RpZmljYXRpb24oKTsK
IH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dGV4SW1hZ2UyRERpcmVjdChHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dM
c2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBm
b3JtYXQsIEdDR0xlbnVtIHR5cGUsIGNvbnN0IHZvaWQqIHBpeGVscykKLXsKLSAgICBpZiAoIW1h
a2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoIW1faXNGb3JX
ZWJHTDIgJiYgbV9leHRlbnNpb25zKQotICAgICAgICBpbnRlcm5hbGZvcm1hdCA9IG1fZXh0ZW5z
aW9ucy0+YWRqdXN0V2ViR0wxVGV4dHVyZUludGVybmFsRm9ybWF0KGludGVybmFsZm9ybWF0LCBm
b3JtYXQsIHR5cGUpOwotICAgIGdsOjpUZXhJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIGludGVybmFs
Zm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIsIGZvcm1hdCwgdHlwZSwgcGl4ZWxzKTsKLSAg
ICBtX3N0YXRlLnRleHR1cmVTZWVkQ291bnQuYWRkKG1fc3RhdGUuY3VycmVudEJvdW5kVGV4dHVy
ZSgpKTsKLX0KLQogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6ZHJhd0FycmF5c0luc3Rh
bmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xz
aXplaSBwcmltY291bnQpCiB7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKQEAgLTI0
MzYsMjAgKzI0MjksMjAgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6ZnJhbWVidWZm
ZXJUZXh0dXJlTGF5ZXIoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bQogICAgIGdsOjpGcmFtZWJ1
ZmZlclRleHR1cmVMYXllcih0YXJnZXQsIGF0dGFjaG1lbnQsIHRleHR1cmUsIGxldmVsLCBsYXll
cik7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmludmFsaWRhdGVGcmFtZWJ1
ZmZlcihHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaSBudW1BdHRhY2htZW50cywgY29uc3QgR0NH
TGVudW0qIGF0dGFjaG1lbnRzKQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6aW52YWxp
ZGF0ZUZyYW1lYnVmZmVyKEdDR0xlbnVtIHRhcmdldCwgR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+
IGF0dGFjaG1lbnRzKQogewogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIGdsOjpJbnZhbGlkYXRlRnJhbWVidWZmZXIodGFyZ2V0LCBudW1BdHRh
Y2htZW50cywgYXR0YWNobWVudHMpOworICAgIGdsOjpJbnZhbGlkYXRlRnJhbWVidWZmZXIodGFy
Z2V0LCBhdHRhY2htZW50cy5idWZTaXplLCBhdHRhY2htZW50cy5kYXRhKTsKIH0KIAotdm9pZCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6aW52YWxpZGF0ZVN1YkZyYW1lYnVmZmVyKEdDR0xlbnVt
IHRhcmdldCwgR0NHTHNpemVpIG51bUF0dGFjaG1lbnRzLCBjb25zdCBHQ0dMZW51bSogYXR0YWNo
bWVudHMsIEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBo
ZWlnaHQpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjppbnZhbGlkYXRlU3ViRnJhbWVi
dWZmZXIoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4gYXR0YWNobWVu
dHMsIEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWln
aHQpCiB7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgZ2w6OkludmFsaWRhdGVTdWJGcmFtZWJ1ZmZlcih0YXJnZXQsIG51bUF0dGFjaG1lbnRz
LCBhdHRhY2htZW50cywgeCwgeSwgd2lkdGgsIGhlaWdodCk7CisgICAgZ2w6OkludmFsaWRhdGVT
dWJGcmFtZWJ1ZmZlcih0YXJnZXQsIGF0dGFjaG1lbnRzLmJ1ZlNpemUsIGF0dGFjaG1lbnRzLmRh
dGEsIHgsIHksIHdpZHRoLCBoZWlnaHQpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpyZWFkQnVmZmVyKEdDR0xlbnVtIHNyYykKQEAgLTI1MTcsODQgKzI1MTAsOTMgQEAgdm9p
ZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTR1aShHQ0dMaW50IGxvY2F0aW9uLCBH
Q0dMdWludCB2MCwgR0NHTHVpbnQKICAgICBnbDo6VW5pZm9ybTR1aShsb2NhdGlvbiwgdjAsIHYx
LCB2MiwgdjMpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMXVp
dihHQ0dMaW50IGxvY2F0aW9uLCBjb25zdCBHQ0dMdWludCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zm
c2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1
bmlmb3JtMXVpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdWludD4gZGF0
YSkKIHsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBnbDo6VW5pZm9ybTF1aXYobG9jYXRpb24sIHNyY0xlbmd0aCwgZGF0YSArIHNyY09mZnNl
dCk7CisgICAgZ2w6OlVuaWZvcm0xdWl2KGxvY2F0aW9uLCBkYXRhLmJ1ZlNpemUsIGRhdGEuZGF0
YSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0ydWl2KEdDR0xp
bnQgbG9jYXRpb24sIGNvbnN0IEdDR0x1aW50KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdD
R0x1aW50IHNyY0xlbmd0aCkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0y
dWl2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0x1aW50PiBkYXRhKQogewor
ICAgIEFTU0VSVCghKGRhdGEuYnVmU2l6ZSAlIDIpKTsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3Vy
cmVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBnbDo6VW5pZm9ybTJ1aXYobG9jYXRpb24s
IHNyY0xlbmd0aCwgZGF0YSArIHNyY09mZnNldCk7CisgICAgZ2w6OlVuaWZvcm0ydWl2KGxvY2F0
aW9uLCBkYXRhLmJ1ZlNpemUgLyAyLCBkYXRhLmRhdGEpOwogfQogCi12b2lkIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjp1bmlmb3JtM3VpdihHQ0dMaW50IGxvY2F0aW9uLCBjb25zdCBHQ0dMdWlu
dCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCit2b2lkIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtM3VpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dM
U3Bhbjxjb25zdCBHQ0dMdWludD4gZGF0YSkKIHsKKyAgICBBU1NFUlQoIShkYXRhLmJ1ZlNpemUg
JSAzKSk7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgZ2w6OlVuaWZvcm0zdWl2KGxvY2F0aW9uLCBzcmNMZW5ndGgsIGRhdGEgKyBzcmNPZmZz
ZXQpOworICAgIGdsOjpVbmlmb3JtM3Vpdihsb2NhdGlvbiwgZGF0YS5idWZTaXplIC8gMywgZGF0
YS5kYXRhKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTR1aXYo
R0NHTGludCBsb2NhdGlvbiwgY29uc3QgR0NHTHVpbnQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNl
dCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5p
Zm9ybTR1aXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTHVpbnQ+IGRhdGEp
CiB7CisgICAgQVNTRVJUKCEoZGF0YS5idWZTaXplICUgNCkpOwogICAgIGlmICghbWFrZUNvbnRl
eHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGdsOjpVbmlmb3JtNHVpdihsb2Nh
dGlvbiwgc3JjTGVuZ3RoLCBkYXRhICsgc3JjT2Zmc2V0KTsKKyAgICBnbDo6VW5pZm9ybTR1aXYo
bG9jYXRpb24sIGRhdGEuYnVmU2l6ZSAvIDQsIGRhdGEuZGF0YSk7CiB9CiAKLXZvaWQgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXgyeDNmdihHQ0dMaW50IGxvY2F0aW9uLCBH
Q0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3Jj
T2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
Ojp1bmlmb3JtTWF0cml4MngzZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNw
b3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEpCiB7CisgICAgQVNTRVJUKCEoZGF0
YS5idWZTaXplICUgNikpOwogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIGdsOjpVbmlmb3JtTWF0cml4MngzZnYobG9jYXRpb24sIHNyY0xlbmd0
aCwgdHJhbnNwb3NlLCBkYXRhICsgc3JjT2Zmc2V0KTsKKyAgICBnbDo6VW5pZm9ybU1hdHJpeDJ4
M2Z2KGxvY2F0aW9uLCBkYXRhLmJ1ZlNpemUgLyA2LCB0cmFuc3Bvc2UsIGRhdGEuZGF0YSk7CiB9
CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXgzeDJmdihHQ0dM
aW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogZGF0
YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCit2b2lkIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4M3gyZnYoR0NHTGludCBsb2NhdGlvbiwgR0NH
TGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEpCiB7Cisg
ICAgQVNTRVJUKCEoZGF0YS5idWZTaXplICUgNikpOwogICAgIGlmICghbWFrZUNvbnRleHRDdXJy
ZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGdsOjpVbmlmb3JtTWF0cml4M3gyZnYobG9j
YXRpb24sIHNyY0xlbmd0aCwgdHJhbnNwb3NlLCBkYXRhICsgc3JjT2Zmc2V0KTsKKyAgICBnbDo6
VW5pZm9ybU1hdHJpeDN4MmZ2KGxvY2F0aW9uLCBkYXRhLmJ1ZlNpemUgLyA2LCB0cmFuc3Bvc2Us
IGRhdGEuZGF0YSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1N
YXRyaXgyeDRmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0
IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgp
Cit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4Mng0ZnYoR0NHTGlu
dCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxv
YXQ+IGRhdGEpCiB7CisgICAgQVNTRVJUKCEoZGF0YS5idWZTaXplICUgOCkpOwogICAgIGlmICgh
bWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGdsOjpVbmlmb3Jt
TWF0cml4Mng0ZnYobG9jYXRpb24sIHNyY0xlbmd0aCwgdHJhbnNwb3NlLCBkYXRhICsgc3JjT2Zm
c2V0KTsKKyAgICBnbDo6VW5pZm9ybU1hdHJpeDJ4NGZ2KGxvY2F0aW9uLCBkYXRhLmJ1ZlNpemUg
LyA4LCB0cmFuc3Bvc2UsIGRhdGEuZGF0YSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OnVuaWZvcm1NYXRyaXg0eDJmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0
cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dM
dWludCBzcmNMZW5ndGgpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0
cml4NHgyZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bh
bjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEpCiB7CisgICAgQVNTRVJUKCEoZGF0YS5idWZTaXplICUg
OCkpOwogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIGdsOjpVbmlmb3JtTWF0cml4NHgyZnYobG9jYXRpb24sIHNyY0xlbmd0aCwgdHJhbnNwb3Nl
LCBkYXRhICsgc3JjT2Zmc2V0KTsKKyAgICBnbDo6VW5pZm9ybU1hdHJpeDR4MmZ2KGxvY2F0aW9u
LCBkYXRhLmJ1ZlNpemUgLyA4LCB0cmFuc3Bvc2UsIGRhdGEuZGF0YSk7CiB9CiAKLXZvaWQgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXgzeDRmdihHQ0dMaW50IGxvY2F0aW9u
LCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQg
c3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjp1bmlmb3JtTWF0cml4M3g0ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJh
bnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEpCiB7CisgICAgQVNTRVJUKCEo
ZGF0YS5idWZTaXplICUgMTIpKTsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBnbDo6VW5pZm9ybU1hdHJpeDN4NGZ2KGxvY2F0aW9uLCBzcmNM
ZW5ndGgsIHRyYW5zcG9zZSwgZGF0YSArIHNyY09mZnNldCk7CisgICAgZ2w6OlVuaWZvcm1NYXRy
aXgzeDRmdihsb2NhdGlvbiwgZGF0YS5idWZTaXplIC8gMTIsIHRyYW5zcG9zZSwgZGF0YS5kYXRh
KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybU1hdHJpeDR4M2Z2
KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0
KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKK3ZvaWQgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXg0eDNmdihHQ0dMaW50IGxvY2F0aW9u
LCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gZGF0YSkK
IHsKKyAgICBBU1NFUlQoIShkYXRhLmJ1ZlNpemUgJSAxMikpOwogICAgIGlmICghbWFrZUNvbnRl
eHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGdsOjpVbmlmb3JtTWF0cml4NHgz
ZnYobG9jYXRpb24sIHNyY0xlbmd0aCwgdHJhbnNwb3NlLCBkYXRhICsgc3JjT2Zmc2V0KTsKKyAg
ICBnbDo6VW5pZm9ybU1hdHJpeDR4M2Z2KGxvY2F0aW9uLCBkYXRhLmJ1ZlNpemUgLyAxMiwgdHJh
bnNwb3NlLCBkYXRhLmRhdGEpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2
ZXJ0ZXhBdHRyaWJJNGkoR0NHTHVpbnQgaW5kZXgsIEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dM
aW50IHosIEdDR0xpbnQgdykKQEAgLTI2MDUsMTIgKzI2MDcsMTIgQEAgdm9pZCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliSTRpKEdDR0x1aW50IGluZGV4LCBHQ0dMaW50IHgs
IEdDR0xpbnQKICAgICBnbDo6VmVydGV4QXR0cmliSTRpKGluZGV4LCB4LCB5LCB6LCB3KTsKIH0K
IAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliSTRpdihHQ0dMdWlu
dCBpbmRleCwgY29uc3QgR0NHTGludCogdmFsdWVzKQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6dmVydGV4QXR0cmliSTRpdihHQ0dMdWludCBpbmRleCwgR0NHTFNwYW48Y29uc3QgR0NH
TGludCwgND4gdmFsdWVzKQogewogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIGdsOjpWZXJ0ZXhBdHRyaWJJNGl2KGluZGV4LCB2YWx1ZXMpOwor
ICAgIGdsOjpWZXJ0ZXhBdHRyaWJJNGl2KGluZGV4LCB2YWx1ZXMuZGF0YSk7CiB9CiAKIHZvaWQg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYkk0dWkoR0NHTHVpbnQgaW5kZXgs
IEdDR0x1aW50IHgsIEdDR0x1aW50IHksIEdDR0x1aW50IHosIEdDR0x1aW50IHcpCkBAIC0yNjIx
LDEyICsyNjIzLDEyIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJp
Ykk0dWkoR0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50IHgsIEdDR0x1CiAgICAgZ2w6OlZlcnRleEF0
dHJpYkk0dWkoaW5kZXgsIHgsIHksIHosIHcpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjp2ZXJ0ZXhBdHRyaWJJNHVpdihHQ0dMdWludCBpbmRleCwgY29uc3QgR0NHTHVpbnQq
IHZhbHVlcykKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYkk0dWl2
KEdDR0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdWludCwgND4gdmFsdWVzKQogewog
ICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGds
OjpWZXJ0ZXhBdHRyaWJJNHVpdihpbmRleCwgdmFsdWVzKTsKKyAgICBnbDo6VmVydGV4QXR0cmli
STR1aXYoaW5kZXgsIHZhbHVlcy5kYXRhKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6ZHJhd1JhbmdlRWxlbWVudHMoR0NHTGVudW0gbW9kZSwgR0NHTHVpbnQgc3RhcnQsIEdD
R0x1aW50IGVuZCwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9m
ZnNldCkKQEAgLTI2MzcsMzYgKzI2MzksMzYgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6ZHJhd1JhbmdlRWxlbWVudHMoR0NHTGVudW0gbW9kZSwgR0NHTHVpbnQgc3RhcnQsIEcKICAg
ICBnbDo6RHJhd1JhbmdlRWxlbWVudHMobW9kZSwgc3RhcnQsIGVuZCwgY291bnQsIHR5cGUsIHJl
aW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KG9mZnNldCkpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpkcmF3QnVmZmVycyhHQ0dMc2l6ZWkgbiwgY29uc3QgR0NHTGVudW0qIGJ1ZnMp
Cit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpkcmF3QnVmZmVycyhHQ0dMU3Bhbjxjb25z
dCBHQ0dMZW51bT4gYnVmcykKIHsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBnbDo6RHJhd0J1ZmZlcnMobiwgYnVmcyk7CisgICAgZ2w6OkRy
YXdCdWZmZXJzKGJ1ZnMuYnVmU2l6ZSwgYnVmcy5kYXRhKTsKIH0KIAotdm9pZCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6Y2xlYXJCdWZmZXJpdihHQ0dMZW51bSBidWZmZXIsIEdDR0xpbnQgZHJh
d2J1ZmZlciwgY29uc3QgR0NHTGludCogdmFsdWVzLCBHQ0dMdWludCBzcmNPZmZzZXQpCit2b2lk
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjbGVhckJ1ZmZlcml2KEdDR0xlbnVtIGJ1ZmZlciwg
R0NHTGludCBkcmF3YnVmZmVyLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50PiB2YWx1ZXMpCiB7CiAg
ICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZ2w6
OkNsZWFyQnVmZmVyaXYoYnVmZmVyLCBkcmF3YnVmZmVyLCB2YWx1ZXMgKyBzcmNPZmZzZXQpOwor
ICAgIGdsOjpDbGVhckJ1ZmZlcml2KGJ1ZmZlciwgZHJhd2J1ZmZlciwgdmFsdWVzLmRhdGEpOwog
fQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjbGVhckJ1ZmZlcnVpdihHQ0dMZW51
bSBidWZmZXIsIEdDR0xpbnQgZHJhd2J1ZmZlciwgY29uc3QgR0NHTHVpbnQqIHZhbHVlcywgR0NH
THVpbnQgc3JjT2Zmc2V0KQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y2xlYXJCdWZm
ZXJ1aXYoR0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50IGRyYXdidWZmZXIsIEdDR0xTcGFuPGNvbnN0
IEdDR0x1aW50PiB2YWx1ZXMpCiB7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgZ2w6OkNsZWFyQnVmZmVydWl2KGJ1ZmZlciwgZHJhd2J1ZmZl
ciwgdmFsdWVzICsgc3JjT2Zmc2V0KTsKKyAgICBnbDo6Q2xlYXJCdWZmZXJ1aXYoYnVmZmVyLCBk
cmF3YnVmZmVyLCB2YWx1ZXMuZGF0YSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OmNsZWFyQnVmZmVyZnYoR0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50IGRyYXdidWZmZXIsIGNv
bnN0IEdDR0xmbG9hdCogdmFsdWVzLCBHQ0dMdWludCBzcmNPZmZzZXQpCit2b2lkIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpjbGVhckJ1ZmZlcmZ2KEdDR0xlbnVtIGJ1ZmZlciwgR0NHTGludCBk
cmF3YnVmZmVyLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IHZhbHVlcykKIHsKICAgICBpZiAo
IW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBnbDo6Q2xlYXJC
dWZmZXJmdihidWZmZXIsIGRyYXdidWZmZXIsIHZhbHVlcyArIHNyY09mZnNldCk7CisgICAgZ2w6
OkNsZWFyQnVmZmVyZnYoYnVmZmVyLCBkcmF3YnVmZmVyLCB2YWx1ZXMuZGF0YSk7CiB9CiAKIHZv
aWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNsZWFyQnVmZmVyZmkoR0NHTGVudW0gYnVmZmVy
LCBHQ0dMaW50IGRyYXdidWZmZXIsIEdDR0xmbG9hdCBkZXB0aCwgR0NHTGludCBzdGVuY2lsKQpA
QCAtMjg1NCw5NCArMjg1Niw2IEBAIFZlY3RvcjxHQ0dMdWludD4gR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OmdldFVuaWZvcm1JbmRpY2VzKFBsYXRmb3JtR0xPYmplY3QgcHJvCiAgICAgcmV0dXJu
IHJlc3VsdDsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTFmdihH
Q0dMaW50IGxvY2F0aW9uLCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNl
dCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQotewotICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpVbmlmb3JtMWZ2KGxvY2F0aW9uLCBzcmNMZW5n
dGgsIGRhdGEgKyBzcmNPZmZzZXQpOwotfQotCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
Ojp1bmlmb3JtMmZ2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NH
THVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCi17Ci0gICAgaWYgKCFtYWtlQ29u
dGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OlVuaWZvcm0yZnYobG9j
YXRpb24sIHNyY0xlbmd0aCwgZGF0YSArIHNyY09mZnNldCk7Ci19Ci0KLXZvaWQgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OnVuaWZvcm0zZnYoR0NHTGludCBsb2NhdGlvbiwgY29uc3QgR0NHTGZs
b2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKLXsKLSAg
ICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6
VW5pZm9ybTNmdihsb2NhdGlvbiwgc3JjTGVuZ3RoLCBkYXRhICsgc3JjT2Zmc2V0KTsKLX0KLQot
dm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTRmdihHQ0dMaW50IGxvY2F0aW9u
LCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3Jj
TGVuZ3RoKQotewotICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIGdsOjpVbmlmb3JtNGZ2KGxvY2F0aW9uLCBzcmNMZW5ndGgsIGRhdGEgKyBzcmNP
ZmZzZXQpOwotfQotCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMWl2KEdD
R0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0xpbnQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwg
R0NHTHVpbnQgc3JjTGVuZ3RoKQotewotICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIGdsOjpVbmlmb3JtMWl2KGxvY2F0aW9uLCBzcmNMZW5ndGgs
IGRhdGEgKyBzcmNPZmZzZXQpOwotfQotCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1
bmlmb3JtMml2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0xpbnQqIGRhdGEsIEdDR0x1aW50
IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQotewotICAgIGlmICghbWFrZUNvbnRleHRD
dXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpVbmlmb3JtMml2KGxvY2F0aW9u
LCBzcmNMZW5ndGgsIGRhdGEgKyBzcmNPZmZzZXQpOwotfQotCi12b2lkIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjp1bmlmb3JtM2l2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0xpbnQqIGRh
dGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQotewotICAgIGlmICgh
bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpVbmlmb3Jt
M2l2KGxvY2F0aW9uLCBzcmNMZW5ndGgsIGRhdGEgKyBzcmNPZmZzZXQpOwotfQotCi12b2lkIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtNGl2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0
IEdDR0xpbnQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQot
ewotICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAg
IGdsOjpVbmlmb3JtNGl2KGxvY2F0aW9uLCBzcmNMZW5ndGgsIGRhdGEgKyBzcmNPZmZzZXQpOwot
fQotCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4MmZ2KEdDR0xp
bnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiBkYXRh
LCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKLXsKLSAgICBpZiAoIW1h
a2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6VW5pZm9ybU1h
dHJpeDJmdihsb2NhdGlvbiwgc3JjTGVuZ3RoLCB0cmFuc3Bvc2UsIGRhdGEgKyBzcmNPZmZzZXQp
OwotfQotCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4M2Z2KEdD
R0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiBk
YXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKLXsKLSAgICBpZiAo
IW1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6VW5pZm9y
bU1hdHJpeDNmdihsb2NhdGlvbiwgc3JjTGVuZ3RoLCB0cmFuc3Bvc2UsIGRhdGEgKyBzcmNPZmZz
ZXQpOwotfQotCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4NGZ2
KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0
KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKLXsKLSAgICBp
ZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6VW5p
Zm9ybU1hdHJpeDRmdihsb2NhdGlvbiwgc3JjTGVuZ3RoLCB0cmFuc3Bvc2UsIGRhdGEgKyBzcmNP
ZmZzZXQpOwotfQotCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRBY3RpdmVVbmlm
b3JtQmxvY2tpdihHQ0dMdWludCBwcm9ncmFtLCBHQ0dMdWludCB1bmlmb3JtQmxvY2tJbmRleCwg
R0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xpbnQ+IHBhcmFtcykKIHsKICAgICBpZiAoIW1h
a2VDb250ZXh0Q3VycmVudCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY3YvR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2N2L0dyYXBoaWNzQ29udGV4dEdMQ1ZBTkdMRS5jcHAKaW5kZXgg
ZjliZmNhM2M0OGNlMjhlYWIxOTQ0YTRmNWU4NTMwYTQyNWY4NjJmZS4uMWE0MzM3MmMyMWUyMjAy
MTc5NDZkNjdhZTAxNmMwODEyMTM0YjIwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY3YvR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9HcmFwaGljc0NvbnRleHRHTENWQU5HTEUu
Y3BwCkBAIC0yMzUsMTggKzIzNSwxMyBAQCBzdHJ1Y3QgR0xmbG9hdENvbG9ycyB7CiB9OwogCiBz
dHJ1Y3QgWUNiQ3JNYXRyaXggewotICAgIHVuaW9uIHsKLSAgICAgICAgR0xmbG9hdCByb3dzWzRd
WzRdOwotICAgICAgICBHTGZsb2F0IGRhdGFbMTZdOwotICAgIH07CisgICAgR0xmbG9hdCByb3dz
WzRdWzRdOwogCiAgICAgY29uc3RleHByIFlDYkNyTWF0cml4KFBpeGVsUmFuZ2UsIEdMZmxvYXQg
Y2JDb2VmZmljaWVudCwgR0xmbG9hdCBjckNvZWZmaWNpZW50KTsKIAotICAgIG9wZXJhdG9yIFZl
Y3RvcjxHTGZsb2F0PigpIGNvbnN0CisgICAgb3BlcmF0b3IgR0NHTFNwYW48Y29uc3QgR0xmbG9h
dCwgMTY+KCkgY29uc3QKICAgICB7Ci0gICAgICAgIFZlY3RvcjxHTGZsb2F0PiB2ZWN0b3I7Ci0g
ICAgICAgIHZlY3Rvci5hcHBlbmQoZGF0YSwgMTYpOwotICAgICAgICByZXR1cm4gdmVjdG9yOwor
ICAgICAgICByZXR1cm4gbWFrZUdDR0xTcGFuPDE2Pigmcm93c1swXVswXSk7CiAgICAgfQogCiAg
ICAgY29uc3RleHByIEdMZmxvYXRDb2xvciBvcGVyYXRvciooY29uc3QgR0xmbG9hdENvbG9yJikg
Y29uc3Q7CkBAIC0zMTgsMTAgKzMxMywxMCBAQCBjb25zdGV4cHIgR0xmbG9hdENvbG9yIFlDYkNy
TWF0cml4OjpvcGVyYXRvciooY29uc3QgR0xmbG9hdENvbG9yJiBjb2xvcikgY29uc3QKICAgICAp
OwogfQogCi1zdGF0aWMgY29uc3QgVmVjdG9yPEdMZmxvYXQ+IFlDYkNyVG9SR0JNYXRyaXhGb3JS
YW5nZUFuZFRyYW5zZmVyRnVuY3Rpb24oUGl4ZWxSYW5nZSByYW5nZSwgVHJhbnNmZXJGdW5jdGlv
bkNWIHRyYW5zZmVyRnVuY3Rpb24pCitzdGF0aWMgR0NHTFNwYW48Y29uc3QgR0xmbG9hdCwgMTY+
IFlDYkNyVG9SR0JNYXRyaXhGb3JSYW5nZUFuZFRyYW5zZmVyRnVuY3Rpb24oUGl4ZWxSYW5nZSBy
YW5nZSwgVHJhbnNmZXJGdW5jdGlvbkNWIHRyYW5zZmVyRnVuY3Rpb24pCiB7CiAgICAgdXNpbmcg
TWFwS2V5ID0gc3RkOjpwYWlyPFBpeGVsUmFuZ2UsIFRyYW5zZmVyRnVuY3Rpb25DVj47Ci0gICAg
dXNpbmcgTWF0cml4TWFwID0gU3RkTWFwPE1hcEtleSwgVmVjdG9yPEdMZmxvYXQ+PjsKKyAgICB1
c2luZyBNYXRyaXhNYXAgPSBTdGRNYXA8TWFwS2V5LCBjb25zdCBZQ2JDck1hdHJpeCY+OwogCiAg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPE1hdHJpeE1hcD4gbWF0cmljZXM7CiAgICAgc3RhdGlj
IGRpc3BhdGNoX29uY2VfdCBvbmNlVG9rZW47CkBAIC01MjYsNyArNTIxLDcgQEAgYm9vbCBHcmFw
aGljc0NvbnRleHRHTENWQU5HTEU6OmluaXRpYWxpemVVVkNvbnRleHRPYmplY3RzKCkKICAgICBm
bG9hdCB2ZXJ0aWNlc1sxMl0gPSB7IC0xLCAtMSwgMSwgLTEsIDEsIDEsIDEsIDEsIC0xLCAxLCAt
MSwgLTEgfTsKIAogICAgIG1fY29udGV4dC0+YmluZEJ1ZmZlcihHcmFwaGljc0NvbnRleHRHTDo6
QVJSQVlfQlVGRkVSLCBtX3l1dlZlcnRleEJ1ZmZlcik7Ci0gICAgbV9jb250ZXh0LT5idWZmZXJE
YXRhKEdyYXBoaWNzQ29udGV4dEdMOjpBUlJBWV9CVUZGRVIsIHNpemVvZih2ZXJ0aWNlcyksIHZl
cnRpY2VzLCBHcmFwaGljc0NvbnRleHRHTDo6U1RBVElDX0RSQVcpOworICAgIG1fY29udGV4dC0+
YnVmZmVyRGF0YShHcmFwaGljc0NvbnRleHRHTDo6QVJSQVlfQlVGRkVSLCBHQ0dMU3Bhbjxjb25z
dCBHQ0dMdm9pZD4odmVydGljZXMsIHNpemVvZih2ZXJ0aWNlcykpLCBHcmFwaGljc0NvbnRleHRH
TDo6U1RBVElDX0RSQVcpOwogICAgIG1fY29udGV4dC0+ZW5hYmxlVmVydGV4QXR0cmliQXJyYXko
bV95dXZQb3NpdGlvbkF0dHJpYnV0ZUxvY2F0aW9uKTsKICAgICBtX2NvbnRleHQtPnZlcnRleEF0
dHJpYlBvaW50ZXIobV95dXZQb3NpdGlvbkF0dHJpYnV0ZUxvY2F0aW9uLCAyLCBHcmFwaGljc0Nv
bnRleHRHTDo6RkxPQVQsIGZhbHNlLCAwLCAwKTsKIApAQCAtNjI1LDcgKzYyMCw3IEBAIGJvb2wg
R3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFOjpjb3B5UGl4ZWxCdWZmZXJUb1RleHR1cmUoQ1ZQaXhl
bEJ1ZmZlclJlZiBpbWFnZSwKICAgICBtX2NvbnRleHQtPnRleFBhcmFtZXRlcmkoR3JhcGhpY3ND
b250ZXh0R0w6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4dEdMOjpURVhUVVJFX01JTl9GSUxU
RVIsIEdyYXBoaWNzQ29udGV4dEdMOjpMSU5FQVIpOwogICAgIG1fY29udGV4dC0+dGV4UGFyYW1l
dGVyaShHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0R0w6OlRF
WFRVUkVfV1JBUF9TLCBHcmFwaGljc0NvbnRleHRHTDo6Q0xBTVBfVE9fRURHRSk7CiAgICAgbV9j
b250ZXh0LT50ZXhQYXJhbWV0ZXJpKEdyYXBoaWNzQ29udGV4dEdMOjpURVhUVVJFXzJELCBHcmFw
aGljc0NvbnRleHRHTDo6VEVYVFVSRV9XUkFQX1QsIEdyYXBoaWNzQ29udGV4dEdMOjpDTEFNUF9U
T19FREdFKTsKLSAgICBtX2NvbnRleHQtPnRleEltYWdlMkREaXJlY3QoR3JhcGhpY3NDb250ZXh0
R0w6OlRFWFRVUkVfMkQsIGxldmVsLCBpbnRlcm5hbEZvcm1hdCwgd2lkdGgsIGhlaWdodCwgMCwg
Zm9ybWF0LCB0eXBlLCBudWxscHRyKTsKKyAgICBnbDo6VGV4SW1hZ2UyRChHTF9URVhUVVJFXzJE
LCBsZXZlbCwgaW50ZXJuYWxGb3JtYXQsIHdpZHRoLCBoZWlnaHQsIDAsIGZvcm1hdCwgdHlwZSwg
bnVsbHB0cik7CiAKICAgICBtX2NvbnRleHQtPmZyYW1lYnVmZmVyVGV4dHVyZTJEKEdyYXBoaWNz
Q29udGV4dEdMOjpGUkFNRUJVRkZFUiwgR3JhcGhpY3NDb250ZXh0R0w6OkNPTE9SX0FUVEFDSE1F
TlQwLCBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV8yRCwgb3V0cHV0VGV4dHVyZSwgbGV2ZWwp
OwogICAgIEdDR0xlbnVtIHN0YXR1cyA9IG1fY29udGV4dC0+Y2hlY2tGcmFtZWJ1ZmZlclN0YXR1
cyhHcmFwaGljc0NvbnRleHRHTDo6RlJBTUVCVUZGRVIpOwpAQCAtNjgyLDggKzY3Nyw4IEBAIGJv
b2wgR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFOjpjb3B5UGl4ZWxCdWZmZXJUb1RleHR1cmUoQ1ZQ
aXhlbEJ1ZmZlclJlZiBpbWFnZSwKIAogICAgIGF1dG8gcmFuZ2UgPSBwaXhlbFJhbmdlRnJvbVBp
eGVsRm9ybWF0KHBpeGVsRm9ybWF0KTsKICAgICBhdXRvIHRyYW5zZmVyRnVuY3Rpb24gPSB0cmFu
c2ZlckZ1bmN0aW9uRnJvbVN0cmluZygoQ0ZTdHJpbmdSZWYpQ1ZCdWZmZXJHZXRBdHRhY2htZW50
KGltYWdlLCBrQ1ZJbWFnZUJ1ZmZlcllDYkNyTWF0cml4S2V5LCBuaWwpKTsKLSAgICBhdXRvJiBj
b2xvck1hdHJpeCA9IFlDYkNyVG9SR0JNYXRyaXhGb3JSYW5nZUFuZFRyYW5zZmVyRnVuY3Rpb24o
cmFuZ2UsIHRyYW5zZmVyRnVuY3Rpb24pOwotICAgIG1fY29udGV4dC0+dW5pZm9ybU1hdHJpeDRm
dihtX2NvbG9yTWF0cml4VW5pZm9ybUxvY2F0aW9uLCAxLCBHTF9GQUxTRSwgY29sb3JNYXRyaXgu
ZGF0YSgpKTsKKyAgICBhdXRvIGNvbG9yTWF0cml4ID0gWUNiQ3JUb1JHQk1hdHJpeEZvclJhbmdl
QW5kVHJhbnNmZXJGdW5jdGlvbihyYW5nZSwgdHJhbnNmZXJGdW5jdGlvbik7CisgICAgbV9jb250
ZXh0LT51bmlmb3JtTWF0cml4NGZ2KG1fY29sb3JNYXRyaXhVbmlmb3JtTG9jYXRpb24sIEdMX0ZB
TFNFLCBjb2xvck1hdHJpeCk7CiAKICAgICAvLyBEbyB0aGUgYWN0dWFsIGRyYXdpbmcuCiAgICAg
bV9jb250ZXh0LT5kcmF3QXJyYXlzKEdyYXBoaWNzQ29udGV4dEdMOjpUUklBTkdMRVMsIDAsIDYp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4
dGVuc2lvbnNHTE9wZW5HTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmNwcAppbmRleCAxNzc4NmE2NGJhNGUxZGEwMDk2NGVh
ZTk5N2QyOTI3NjRkYWQxODk2Li4xOTZiYjU1OTRjZTFmMWRjMmZkNDg0NWY5NzkwYmRjNThmYmFh
MGY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wv
RXh0ZW5zaW9uc0dMT3BlbkdMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmNwcApAQCAtMjA4LDE0ICsyMDgsMTQgQEAg
Ym9vbCBFeHRlbnNpb25zR0xPcGVuR0w6OnN1cHBvcnRzRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYg
bmFtZSkKICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKG5hbWUpOwog
fQogCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTDo6ZHJhd0J1ZmZlcnNFWFQoR0NHTHNpemVpIG4s
IGNvbnN0IEdDR0xlbnVtKiBidWZzKQordm9pZCBFeHRlbnNpb25zR0xPcGVuR0w6OmRyYXdCdWZm
ZXJzRVhUKEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVtPiBidWZzKQogewogICAgIGlmICghbV9jb250
ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gIEZJ
WE1FOiBpbXBsZW1lbnQgc3VwcG9ydCBmb3Igb3RoZXIgcGxhdGZvcm1zLgogI2lmIFBMQVRGT1JN
KEdUSykKLSAgICA6OmdsRHJhd0J1ZmZlcnMobiwgYnVmcyk7CisgICAgOjpnbERyYXdCdWZmZXJz
KGJ1ZnMuYnVmU2l6ZSwgYnVmcy5kYXQpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0obik7CiAg
ICAgVU5VU0VEX1BBUkFNKGJ1ZnMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5oCmluZGV4IGQzYmU4
Y2MyOGMxN2MyZGY1ZDNiNDg2NmJiM2M1Zjk0NGM0NTVmMjEuLjQ5NjI4OWNlYTBlNmEwOWQ2ZGI3
MzFmODY4YjU0OTkzYTQ0NDQ5YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmgKQEAgLTUwLDcg
KzUwLDcgQEAgcHVibGljOgogICAgIHZvaWQgaW5zZXJ0RXZlbnRNYXJrZXJFWFQoY29uc3QgU3Ry
aW5nJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBwdXNoR3JvdXBNYXJrZXJFWFQoY29uc3QgU3RyaW5n
Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBwb3BHcm91cE1hcmtlckVYVCh2b2lkKSBvdmVycmlkZTsK
LSAgICB2b2lkIGRyYXdCdWZmZXJzRVhUKEdDR0xzaXplaSwgY29uc3QgR0NHTGVudW0qKSBvdmVy
cmlkZTsKKyAgICB2b2lkIGRyYXdCdWZmZXJzRVhUKEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVtPikg
b3ZlcnJpZGU7CiAKICAgICB2b2lkIGRyYXdBcnJheXNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwg
R0NHTGludCBmaXJzdCwgR0NHTHNpemVpIGNvdW50LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSBvdmVy
cmlkZTsKICAgICB2b2lkIGRyYXdFbGVtZW50c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dM
c2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIGxvbmcgbG9uZyBvZmZzZXQsIEdDR0xzaXplaSBw
cmltY291bnQpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmNw
cAppbmRleCA2ODZmMmQ1MTE0OGVmOWIxMmZlZjEwYjNjMmFjNzBiMmEzNWQyMTU3Li5lOTBjMDY2
MGQyM2MwYmIyY2EyYmRkZjM2ZDY4NGYzOGE5MmQ4ZWRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9u
c0dMT3BlbkdMQ29tbW9uLmNwcApAQCAtMjU5LDcgKzI1OSw3IEBAIHZvaWQgRXh0ZW5zaW9uc0dM
T3BlbkdMQ29tbW9uOjpyZWFkUGl4ZWxzUm9idXN0QU5HTEUoaW50LCBpbnQsIEdDR0xzaXplaSwg
R0NHTHNpCiAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJB
VElPTik7CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjp0ZXhJbWFnZTJEUm9i
dXN0QU5HTEUoR0NHTGVudW0sIGludCwgaW50LCBHQ0dMc2l6ZWksIEdDR0xzaXplaSwgaW50LCBH
Q0dMZW51bSwgR0NHTGVudW0sIEdDR0xzaXplaSwgY29uc3Qgdm9pZCAqKQordm9pZCBFeHRlbnNp
b25zR0xPcGVuR0xDb21tb246OnRleEltYWdlMkRSb2J1c3RBTkdMRShHQ0dMZW51bSwgaW50LCBp
bnQsIEdDR0xzaXplaSwgR0NHTHNpemVpLCBpbnQsIEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTFNw
YW48Y29uc3QgR0NHTHZvaWQ+KQogewogICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3Io
R0xfSU5WQUxJRF9PUEVSQVRJT04pOwogfQpAQCAtMjc0LDM4ICsyNzQsMzggQEAgdm9pZCBFeHRl
bnNpb25zR0xPcGVuR0xDb21tb246OnRleFBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0s
IEdDR0xlbnVtLCBHQ0cKICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFM
SURfT1BFUkFUSU9OKTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OnRleFN1
YkltYWdlMkRSb2J1c3RBTkdMRShHQ0dMZW51bSwgaW50LCBpbnQsIGludCwgR0NHTHNpemVpLCBH
Q0dMc2l6ZWksIEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTHNpemVpLCBjb25zdCB2b2lkICopCit2
b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6dGV4U3ViSW1hZ2UyRFJvYnVzdEFOR0xFKEdD
R0xlbnVtLCBpbnQsIGludCwgaW50LCBHQ0dMc2l6ZWksIEdDR0xzaXplaSwgR0NHTGVudW0sIEdD
R0xlbnVtLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4pCiB7CiAgICAgbV9jb250ZXh0LT5zeW50
aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CiB9CiAKLXZvaWQgRXh0ZW5zaW9u
c0dMT3BlbkdMQ29tbW9uOjpjb21wcmVzc2VkVGV4SW1hZ2UyRFJvYnVzdEFOR0xFKEdDR0xlbnVt
LCBpbnQsIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSwgaW50LCBHQ0dMc2l6ZWksIEdD
R0xzaXplaSwgY29uc3Qgdm9pZCopCit2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Y29t
cHJlc3NlZFRleEltYWdlMkRSb2J1c3RBTkdMRShHQ0dMZW51bSwgaW50LCBHQ0dMZW51bSwgR0NH
THNpemVpLCBHQ0dMc2l6ZWksIGludCwgR0NHTHNpemVpLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9p
ZD4pCiB7CiAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJB
VElPTik7CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpjb21wcmVzc2VkVGV4
U3ViSW1hZ2UyRFJvYnVzdEFOR0xFKEdDR0xlbnVtLCBpbnQsIGludCwgaW50LCBHQ0dMc2l6ZWks
IEdDR0xzaXplaSwgR0NHTGVudW0sIEdDR0xzaXplaSwgR0NHTHNpemVpLCBjb25zdCB2b2lkKikK
K3ZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRFJv
YnVzdEFOR0xFKEdDR0xlbnVtLCBpbnQsIGludCwgaW50LCBHQ0dMc2l6ZWksIEdDR0xzaXplaSwg
R0NHTGVudW0sIEdDR0xzaXplaSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+KQogewogICAgIG1f
Y29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwogfQogCi12
b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Y29tcHJlc3NlZFRleEltYWdlM0RSb2J1c3RB
TkdMRShHQ0dMZW51bSwgaW50LCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWksIEdDR0xz
aXplaSwgaW50LCBHQ0dMc2l6ZWksIEdDR0xzaXplaSwgY29uc3Qgdm9pZCopCit2b2lkIEV4dGVu
c2lvbnNHTE9wZW5HTENvbW1vbjo6Y29tcHJlc3NlZFRleEltYWdlM0RSb2J1c3RBTkdMRShHQ0dM
ZW51bSwgaW50LCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSwgaW50
LCBHQ0dMc2l6ZWksIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPikKIHsKICAgICBtX2NvbnRleHQt
PnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKIH0KIAotdm9pZCBFeHRl
bnNpb25zR0xPcGVuR0xDb21tb246OmNvbXByZXNzZWRUZXhTdWJJbWFnZTNEUm9idXN0QU5HTEUo
R0NHTGVudW0sIGludCwgaW50LCBpbnQsIGludCwgR0NHTHNpemVpLCBHQ0dMc2l6ZWksIEdDR0xz
aXplaSwgR0NHTGVudW0sIEdDR0xzaXplaSwgR0NHTHNpemVpLCBjb25zdCB2b2lkKikKK3ZvaWQg
RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpjb21wcmVzc2VkVGV4U3ViSW1hZ2UzRFJvYnVzdEFO
R0xFKEdDR0xlbnVtLCBpbnQsIGludCwgaW50LCBpbnQsIEdDR0xzaXplaSwgR0NHTHNpemVpLCBH
Q0dMc2l6ZWksIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPikK
IHsKICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9O
KTsKIH0KIAogCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6dGV4SW1hZ2UzRFJvYnVz
dEFOR0xFKEdDR0xlbnVtLCBpbnQsIGludCwgR0NHTHNpemVpLCBHQ0dMc2l6ZWksIEdDR0xzaXpl
aSwgaW50LCBHQ0dMZW51bSwgR0NHTGVudW0sIEdDR0xzaXplaSwgY29uc3Qgdm9pZCAqKQordm9p
ZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OnRleEltYWdlM0RSb2J1c3RBTkdMRShHQ0dMZW51
bSwgaW50LCBpbnQsIEdDR0xzaXplaSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWksIGludCwgR0NHTGVu
dW0sIEdDR0xlbnVtLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4pCiB7CiAgICAgbV9jb250ZXh0
LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CiB9CiAKLXZvaWQgRXh0
ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjp0ZXhTdWJJbWFnZTNEUm9idXN0QU5HTEUoR0NHTGVudW0s
IGludCwgaW50LCBpbnQsIGludCwgR0NHTHNpemVpLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSwgR0NH
TGVudW0sIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIGNvbnN0IHZvaWQgKikKK3ZvaWQgRXh0ZW5zaW9u
c0dMT3BlbkdMQ29tbW9uOjp0ZXhTdWJJbWFnZTNEUm9idXN0QU5HTEUoR0NHTGVudW0sIGludCwg
aW50LCBpbnQsIGludCwgR0NHTHNpemVpLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSwgR0NHTGVudW0s
IEdDR0xlbnVtLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4pCiB7CiAgICAgbV9jb250ZXh0LT5z
eW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdM
Q29tbW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5z
aW9uc0dMT3BlbkdMQ29tbW9uLmgKaW5kZXggOTdlZWRmYjc0ODVjODMyZjc5M2M4Y2ZmMGZhMTdm
YmZmYmU2NTg4ZC4uMTc2Mzc5YWY0MTc0MDc1ZGRhMTQzOWJkNTNjOTY2MzZiYWY3OWRhYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lv
bnNHTE9wZW5HTENvbW1vbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uaApAQCAtNTAsNyArNTAsNyBAQCBwdWJs
aWM6CiAgICAgR0NHTGJvb2xlYW4gaXNWZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybUdMT2JqZWN0KSBv
dmVycmlkZSA9IDA7CiAgICAgdm9pZCBiaW5kVmVydGV4QXJyYXlPRVMoUGxhdGZvcm1HTE9iamVj
dCkgb3ZlcnJpZGUgPSAwOwogCi0gICAgdm9pZCBkcmF3QnVmZmVyc0VYVChHQ0dMc2l6ZWksIGNv
bnN0IEdDR0xlbnVtKikgb3ZlcnJpZGUgPSAwOworICAgIHZvaWQgZHJhd0J1ZmZlcnNFWFQoR0NH
TFNwYW48Y29uc3QgR0NHTGVudW0+KSBvdmVycmlkZSA9IDA7CiAKICAgICBTdHJpbmcgZ2V0VHJh
bnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKFBsYXRmb3JtR0xPYmplY3QpIG92ZXJyaWRlOwogCkBA
IC03MCwxNyArNzAsMTcgQEAgcHVibGljOgogCiAgICAgLy8gR0xfQU5HTEVfcm9idXN0X2NsaWVu
dF9tZW1vcnkKICAgICB2b2lkIHJlYWRQaXhlbHNSb2J1c3RBTkdMRShpbnQgeCwgaW50IHksIEdD
R0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51
bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xzaXplaSAq
Y29sdW1ucywgR0NHTHNpemVpICpyb3dzLCB2b2lkICpwaXhlbHMpIG92ZXJyaWRlOwotICAgIHZv
aWQgdGV4SW1hZ2UyRFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgaW50IGxldmVsLCBpbnQg
aW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgaW50IGJv
cmRlciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
Y29uc3Qgdm9pZCAqcGl4ZWxzKSBvdmVycmlkZTsKKyAgICB2b2lkIHRleEltYWdlMkRSb2J1c3RB
TkdMRShHQ0dMZW51bSB0YXJnZXQsIGludCBsZXZlbCwgaW50IGludGVybmFsZm9ybWF0LCBHQ0dM
c2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1h
dCwgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IHBpeGVscykgb3ZlcnJp
ZGU7CiAgICAgdm9pZCB0ZXhQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMZmxvYXQgKnBhcmFt
cykgb3ZlcnJpZGU7CiAgICAgdm9pZCB0ZXhQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50
ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgdGV4U3ViSW1hZ2UyRFJvYnVzdEFOR0xFKEdD
R0xlbnVtIHRhcmdldCwgaW50IGxldmVsLCBpbnQgeG9mZnNldCwgaW50IHlvZmZzZXQsIEdDR0xz
aXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0
eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3Qgdm9pZCAqcGl4ZWxzKSBvdmVycmlkZTsKLSAg
ICB2b2lkIGNvbXByZXNzZWRUZXhJbWFnZTJEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBp
bnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xz
aXplaSBoZWlnaHQsIGludCBib3JkZXIsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xzaXplaSBi
dWZTaXplLCBjb25zdCB2b2lkKiBkYXRhKSBvdmVycmlkZTsKLSAgICB2b2lkIGNvbXByZXNzZWRU
ZXhTdWJJbWFnZTJEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWwsIGludCB4
b2Zmc2V0LCBpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBH
Q0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xzaXplaSBidWZTaXplLCBj
b25zdCB2b2lkKiBkYXRhKSBvdmVycmlkZTsKLSAgICB2b2lkIGNvbXByZXNzZWRUZXhJbWFnZTNE
Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFs
Zm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0
aCwgaW50IGJvcmRlciwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNv
bnN0IHZvaWQqIGRhdGEpIG92ZXJyaWRlOwotICAgIHZvaWQgY29tcHJlc3NlZFRleFN1YkltYWdl
M0RSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIGludCBsZXZlbCwgaW50IHhvZmZzZXQsIGlu
dCB5b2Zmc2V0LCBpbnQgem9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0
LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTHNpemVpIGltYWdlU2l6ZSwg
R0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IHZvaWQqIGRhdGEpIG92ZXJyaWRlOwotCi0gICAgdm9p
ZCB0ZXhJbWFnZTNEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWwsIGludCBp
bnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6
ZWkgZGVwdGgsIGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NH
THNpemVpIGJ1ZlNpemUsIGNvbnN0IHZvaWQgKnBpeGVscykgb3ZlcnJpZGU7Ci0gICAgdm9pZCB0
ZXhTdWJJbWFnZTNEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWwsIGludCB4
b2Zmc2V0LCBpbnQgeW9mZnNldCwgaW50IHpvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNp
emVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5
cGUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCB2b2lkICpwaXhlbHMpIG92ZXJyaWRlOworICAg
IHZvaWQgdGV4U3ViSW1hZ2UyRFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgaW50IGxldmVs
LCBpbnQgeG9mZnNldCwgaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhl
aWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dM
dm9pZD4gcGl4ZWxzKSBvdmVycmlkZTsKKyAgICB2b2lkIGNvbXByZXNzZWRUZXhJbWFnZTJEUm9i
dXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9y
bWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIGludCBib3JkZXIsIEdDR0xz
aXplaSBpbWFnZVNpemUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRhKSBvdmVycmlkZTsK
KyAgICB2b2lkIGNvbXByZXNzZWRUZXhTdWJJbWFnZTJEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFy
Z2V0LCBpbnQgbGV2ZWwsIGludCB4b2Zmc2V0LCBpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRo
LCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFnZVNpemUs
IEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRhKSBvdmVycmlkZTsKKyAgICB2b2lkIGNvbXBy
ZXNzZWRUZXhJbWFnZTNEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWwsIEdD
R0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQs
IEdDR0xzaXplaSBkZXB0aCwgaW50IGJvcmRlciwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTFNw
YW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEpIG92ZXJyaWRlOworICAgIHZvaWQgY29tcHJlc3NlZFRl
eFN1YkltYWdlM0RSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIGludCBsZXZlbCwgaW50IHhv
ZmZzZXQsIGludCB5b2Zmc2V0LCBpbnQgem9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6
ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTHNpemVpIGlt
YWdlU2l6ZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEpIG92ZXJyaWRlOworCisgICAg
dm9pZCB0ZXhJbWFnZTNEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWwsIGlu
dCBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dM
c2l6ZWkgZGVwdGgsIGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwg
R0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IHBpeGVscykgb3ZlcnJpZGU7CisgICAgdm9pZCB0ZXhT
dWJJbWFnZTNEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWwsIGludCB4b2Zm
c2V0LCBpbnQgeW9mZnNldCwgaW50IHpvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVp
IGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUs
IEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBwaXhlbHMpIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0
UXVlcnlpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlk
ZTsKICAgICB2b2lkIGdldFF1ZXJ5T2JqZWN0dWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1
aW50ICpwYXJhbXMpIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0QnVmZmVyUG9pbnRlcnZSb2J1c3RB
TkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
R0NHTHNpemVpICpsZW5ndGgsIHZvaWQgKipwYXJhbXMpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5H
TEVTLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNp
b25zR0xPcGVuR0xFUy5jcHAKaW5kZXggZDI4ZjRhMDMxZWJkYzQ4Mzg3NWQzOTg0ODdkNTc4NzQ4
ZmRlNDdlNy4uMzZjM2VmMzhmOThiOTlhZjAxMTUwNjk5MTQyN2JhY2VmY2JiOGFjMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNH
TE9wZW5HTEVTLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuY3BwCkBAIC0xODAsNyArMTgwLDcgQEAgdm9pZCBFeHRl
bnNpb25zR0xPcGVuR0xFUzo6YmluZFZlcnRleEFycmF5T0VTKFBsYXRmb3JtR0xPYmplY3QgYXJy
YXkpCiAgICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVS
QVRJT04pOwogfQogCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTEVTOjpkcmF3QnVmZmVyc0VYVChH
Q0dMc2l6ZWkgLyogbiAqLywgY29uc3QgR0NHTGVudW0qIC8qIGJ1ZnMgKi8pCit2b2lkIEV4dGVu
c2lvbnNHTE9wZW5HTEVTOjpkcmF3QnVmZmVyc0VYVChHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4g
LyogYnVmcyAqLykKIHsKICAgICAvLyBGSVhNRTogaW1wbGVtZW50IHRoZSBzdXBwb3J0LgogICAg
IG5vdEltcGxlbWVudGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5oCmluZGV4IGM3NDgy
NWM4MWVhZDBhNzQ2MGFlYTFkYWYxYzlhZTE4MzcwMjkzOTYuLjAxN2E0NWI3Mzk4ZDA5OTJlZDE0
NzY3ZjA3NjdlMDRiNDY0MTYyODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5oCkBAIC04
NSw3ICs4NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRlbGV0ZVZlcnRleEFycmF5T0VTKFBsYXRm
b3JtR0xPYmplY3QpIG92ZXJyaWRlOwogICAgIEdDR0xib29sZWFuIGlzVmVydGV4QXJyYXlPRVMo
UGxhdGZvcm1HTE9iamVjdCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBiaW5kVmVydGV4QXJyYXlPRVMo
UGxhdGZvcm1HTE9iamVjdCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkcmF3QnVmZmVyc0VYVChHQ0dM
c2l6ZWksIGNvbnN0IEdDR0xlbnVtKikgb3ZlcnJpZGU7CisgICAgdm9pZCBkcmF3QnVmZmVyc0VY
VChHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4pIG92ZXJyaWRlOwogCiAgICAgdm9pZCBkcmF3QXJy
YXlzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xzaXplaSBjb3Vu
dCwgR0NHTHNpemVpIHByaW1jb3VudCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkcmF3RWxlbWVudHNJ
bnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBs
b25nIGxvbmcgb2Zmc2V0LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSBvdmVycmlkZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRl
eHRHTE9wZW5HTC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dy
YXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKaW5kZXggMDk5MjY3OGI4ZGMxZTE4M2Q5ODI1OWI3NzMx
NWMzNjEyMTcwMTMwZi4uNTQxMzQ2ZmQxZjg1M2Q0NWJlMzIzYTcyZjJlZjIzNzgwMzkyMDE3OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBo
aWNzQ29udGV4dEdMT3BlbkdMLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKQEAgLTExOSw5ICsxMTksNiBAQCBw
dWJsaWM6CiAgICAgLy8gV2l0aCBtdWx0aXNhbXBsaW5nIG9uLCBibGl0IGZyb20gbXVsdGlzYW1w
bGVGQk8gdG8gcmVndWxhciBGQk8uCiAgICAgdm9pZCBwcmVwYXJlVGV4dHVyZSgpOwogCi0gICAg
Ly8gRXF1aXZhbGVudCB0byA6OmdsVGV4SW1hZ2UyRCgpLiBBbGxvd3MgcGl4ZWxzPT0wIHdpdGgg
bm8gYWxsb2NhdGlvbi4KLSAgICB2b2lkIHRleEltYWdlMkREaXJlY3QoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRo
LCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dM
ZW51bSB0eXBlLCBjb25zdCB2b2lkKiBwaXhlbHMpOwotCiAgICAgLy8gR2V0IGFuIGF0dHJpYnV0
ZSBsb2NhdGlvbiB3aXRob3V0IGNoZWNraW5nIHRoZSBuYW1lIC0+IG1hbmdsZWRuYW1lIG1hcHBp
bmcuCiAgICAgaW50IGdldEF0dHJpYkxvY2F0aW9uRGlyZWN0KFBsYXRmb3JtR0xPYmplY3QgcHJv
Z3JhbSwgY29uc3QgU3RyaW5nJiBuYW1lKTsKIApAQCAtMTI5LDYgKzEyNiw5IEBAIHB1YmxpYzoK
ICAgICB2b2lkIGNvbXBpbGVTaGFkZXJEaXJlY3QoUGxhdGZvcm1HTE9iamVjdCk7CiAKICNpZiAh
VVNFKEFOR0xFKQorICAgIC8vIEVxdWl2YWxlbnQgdG8gOjpnbFRleEltYWdlMkQoKS4gQWxsb3dz
IHBpeGVscz09MCB3aXRoIG5vIGFsbG9jYXRpb24uCisgICAgdm9pZCB0ZXhJbWFnZTJERGlyZWN0
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQs
IEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xl
bnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgY29uc3Qgdm9pZCogcGl4ZWxzKTsKKwogICAgIC8v
IEhlbHBlciB0byB0ZXhJbWFnZTJEIHdpdGggcGl4ZWw9PTAgY2FzZTogcGl4ZWxzIGFyZSBpbml0
aWFsaXplZCB0byAwLgogICAgIC8vIFJldHVybiB0cnVlIGlmIG5vIEdMIGVycm9yIGlzIHN5bnRo
ZXNpemVkLgogICAgIC8vIEJ5IGRlZmF1bHQsIGFsaWdubWVudCBpcyA0LCB0aGUgT3BlbkdMIGRl
ZmF1bHQgc2V0dGluZy4KQEAgLTE1NSw4ICsxNTUsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBibGVu
ZEZ1bmNTZXBhcmF0ZShHQ0dMZW51bSBzcmNSR0IsIEdDR0xlbnVtIGRzdFJHQiwgR0NHTGVudW0g
c3JjQWxwaGEsIEdDR0xlbnVtIGRzdEFscGhhKSBmaW5hbDsKIAogICAgIHZvaWQgYnVmZmVyRGF0
YShHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaXB0ciBzaXplLCBHQ0dMZW51bSB1c2FnZSkgZmlu
YWw7Ci0gICAgdm9pZCBidWZmZXJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpcHRyIHNp
emUsIGNvbnN0IHZvaWQqIGRhdGEsIEdDR0xlbnVtIHVzYWdlKSBmaW5hbDsKLSAgICB2b2lkIGJ1
ZmZlclN1YkRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50cHRyIG9mZnNldCwgR0NHTHNpemVp
cHRyIHNpemUsIGNvbnN0IHZvaWQqIGRhdGEpIGZpbmFsOworICAgIHZvaWQgYnVmZmVyRGF0YShH
Q0dMZW51bSB0YXJnZXQsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRhLCBHQ0dMZW51bSB1
c2FnZSkgZmluYWw7CisgICAgdm9pZCBidWZmZXJTdWJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NH
TGludHB0ciBvZmZzZXQsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRhKSBmaW5hbDsKIAog
ICAgIEdDR0xlbnVtIGNoZWNrRnJhbWVidWZmZXJTdGF0dXMoR0NHTGVudW0gdGFyZ2V0KSBmaW5h
bDsKICAgICB2b2lkIGNsZWFyKEdDR0xiaXRmaWVsZCBtYXNrKSBmaW5hbDsKQEAgLTI1MywzMCAr
MjUzLDMwIEBAIHB1YmxpYzoKICAgICB2b2lkIHN0ZW5jaWxPcChHQ0dMZW51bSBmYWlsLCBHQ0dM
ZW51bSB6ZmFpbCwgR0NHTGVudW0genBhc3MpIGZpbmFsOwogICAgIHZvaWQgc3RlbmNpbE9wU2Vw
YXJhdGUoR0NHTGVudW0gZmFjZSwgR0NHTGVudW0gZmFpbCwgR0NHTGVudW0gemZhaWwsIEdDR0xl
bnVtIHpwYXNzKSBmaW5hbDsKIAotICAgIGJvb2wgdGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQs
IEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgs
IEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xl
bnVtIHR5cGUsIGNvbnN0IHZvaWQqIHBpeGVscykgZmluYWw7CisgICAgYm9vbCB0ZXhJbWFnZTJE
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQs
IEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xl
bnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IHBpeGVs
cykgZmluYWw7CiAgICAgdm9pZCB0ZXhQYXJhbWV0ZXJmKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVu
dW0gcG5hbWUsIEdDR0xmbG9hdCBwYXJhbSkgZmluYWw7CiAgICAgdm9pZCB0ZXhQYXJhbWV0ZXJp
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQgcGFyYW0pIGZpbmFsOwot
ICAgIHZvaWQgdGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdD
R0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXpl
aSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgY29uc3Qgdm9pZCogcGl4
ZWxzKSBmaW5hbDsKKyAgICB2b2lkIHRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
aW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdp
ZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdD
R0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBwaXhlbHMpIGZpbmFsOwogCiAgICAgdm9pZCB1bmlmb3Jt
MWYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGZsb2F0IHgpIGZpbmFsOwotICAgIHZvaWQgdW5pZm9y
bTFmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWksIGNvbnN0IEdDR0xmbG9hdCogdikgZmlu
YWw7CisgICAgdm9pZCB1bmlmb3JtMWZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0
IEdDR0xmbG9hdD4gdikgZmluYWw7CiAgICAgdm9pZCB1bmlmb3JtMWkoR0NHTGludCBsb2NhdGlv
biwgR0NHTGludCB4KSBmaW5hbDsKLSAgICB2b2lkIHVuaWZvcm0xaXYoR0NHTGludCBsb2NhdGlv
biwgR0NHTHNpemVpLCBjb25zdCBHQ0dMaW50KiB2KSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm0x
aXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gdikgZmluYWw7CiAg
ICAgdm9pZCB1bmlmb3JtMmYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGZsb2F0IHgsIEdDR0xmbG9h
dCB5KSBmaW5hbDsKLSAgICB2b2lkIHVuaWZvcm0yZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTHNp
emVpLCBjb25zdCBHQ0dMZmxvYXQqIHYpIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybTJmdihHQ0dM
aW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IHYpIGZpbmFsOwogICAgIHZv
aWQgdW5pZm9ybTJpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xpbnQgeCwgR0NHTGludCB5KSBmaW5h
bDsKLSAgICB2b2lkIHVuaWZvcm0yaXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpLCBjb25z
dCBHQ0dMaW50KiB2KSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm0yaXYoR0NHTGludCBsb2NhdGlv
biwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gdikgZmluYWw7CiAgICAgdm9pZCB1bmlmb3JtM2Yo
R0NHTGludCBsb2NhdGlvbiwgR0NHTGZsb2F0IHgsIEdDR0xmbG9hdCB5LCBHQ0dMZmxvYXQgeikg
ZmluYWw7Ci0gICAgdm9pZCB1bmlmb3JtM2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSwg
Y29uc3QgR0NHTGZsb2F0KiB2KSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm0zZnYoR0NHTGludCBs
b2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiB2KSBmaW5hbDsKICAgICB2b2lkIHVu
aWZvcm0zaShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTGludCB6
KSBmaW5hbDsKLSAgICB2b2lkIHVuaWZvcm0zaXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVp
LCBjb25zdCBHQ0dMaW50KiB2KSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm0zaXYoR0NHTGludCBs
b2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gdikgZmluYWw7CiAgICAgdm9pZCB1bmlm
b3JtNGYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGZsb2F0IHgsIEdDR0xmbG9hdCB5LCBHQ0dMZmxv
YXQgeiwgR0NHTGZsb2F0IHcpIGZpbmFsOwotICAgIHZvaWQgdW5pZm9ybTRmdihHQ0dMaW50IGxv
Y2F0aW9uLCBHQ0dMc2l6ZWksIGNvbnN0IEdDR0xmbG9hdCogdikgZmluYWw7CisgICAgdm9pZCB1
bmlmb3JtNGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gdikg
ZmluYWw7CiAgICAgdm9pZCB1bmlmb3JtNGkoR0NHTGludCBsb2NhdGlvbiwgR0NHTGludCB4LCBH
Q0dMaW50IHksIEdDR0xpbnQgeiwgR0NHTGludCB3KSBmaW5hbDsKLSAgICB2b2lkIHVuaWZvcm00
aXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpLCBjb25zdCBHQ0dMaW50KiB2KSBmaW5hbDsK
LSAgICB2b2lkIHVuaWZvcm1NYXRyaXgyZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpLCBH
Q0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogdmFsdWUpIGZpbmFsOwotICAg
IHZvaWQgdW5pZm9ybU1hdHJpeDNmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWksIEdDR0xi
b29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiB2YWx1ZSkgZmluYWw7Ci0gICAgdm9p
ZCB1bmlmb3JtTWF0cml4NGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSwgR0NHTGJvb2xl
YW4gdHJhbnNwb3NlLCBjb25zdCBHQ0dMZmxvYXQqIHZhbHVlKSBmaW5hbDsKKyAgICB2b2lkIHVu
aWZvcm00aXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gdikgZmlu
YWw7CisgICAgdm9pZCB1bmlmb3JtTWF0cml4MmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29s
ZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiB2YWx1ZSkgZmluYWw7Cisg
ICAgdm9pZCB1bmlmb3JtTWF0cml4M2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRy
YW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiB2YWx1ZSkgZmluYWw7CisgICAgdm9p
ZCB1bmlmb3JtTWF0cml4NGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9z
ZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiB2YWx1ZSkgZmluYWw7CiAKICAgICB2b2lkIHVz
ZVByb2dyYW0oUGxhdGZvcm1HTE9iamVjdCkgZmluYWw7CiAgICAgdm9pZCB2YWxpZGF0ZVByb2dy
YW0oUGxhdGZvcm1HTE9iamVjdCkgZmluYWw7CkBAIC0yODYsMTMgKzI4NiwxMyBAQCBwdWJsaWM6
CiAjZW5kaWYKIAogICAgIHZvaWQgdmVydGV4QXR0cmliMWYoR0NHTHVpbnQgaW5kZXgsIEdDR0xm
bG9hdCB4KSBmaW5hbDsKLSAgICB2b2lkIHZlcnRleEF0dHJpYjFmdihHQ0dMdWludCBpbmRleCwg
Y29uc3QgR0NHTGZsb2F0KiB2YWx1ZXMpIGZpbmFsOworICAgIHZvaWQgdmVydGV4QXR0cmliMWZ2
KEdDR0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQsIDE+IHZhbHVlcykgZmlu
YWw7CiAgICAgdm9pZCB2ZXJ0ZXhBdHRyaWIyZihHQ0dMdWludCBpbmRleCwgR0NHTGZsb2F0IHgs
IEdDR0xmbG9hdCB5KSBmaW5hbDsKLSAgICB2b2lkIHZlcnRleEF0dHJpYjJmdihHQ0dMdWludCBp
bmRleCwgY29uc3QgR0NHTGZsb2F0KiB2YWx1ZXMpIGZpbmFsOworICAgIHZvaWQgdmVydGV4QXR0
cmliMmZ2KEdDR0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQsIDI+IHZhbHVl
cykgZmluYWw7CiAgICAgdm9pZCB2ZXJ0ZXhBdHRyaWIzZihHQ0dMdWludCBpbmRleCwgR0NHTGZs
b2F0IHgsIEdDR0xmbG9hdCB5LCBHQ0dMZmxvYXQgeikgZmluYWw7Ci0gICAgdm9pZCB2ZXJ0ZXhB
dHRyaWIzZnYoR0NHTHVpbnQgaW5kZXgsIGNvbnN0IEdDR0xmbG9hdCogdmFsdWVzKSBmaW5hbDsK
KyAgICB2b2lkIHZlcnRleEF0dHJpYjNmdihHQ0dMdWludCBpbmRleCwgR0NHTFNwYW48Y29uc3Qg
R0NHTGZsb2F0LCAzPiB2YWx1ZXMpIGZpbmFsOwogICAgIHZvaWQgdmVydGV4QXR0cmliNGYoR0NH
THVpbnQgaW5kZXgsIEdDR0xmbG9hdCB4LCBHQ0dMZmxvYXQgeSwgR0NHTGZsb2F0IHosIEdDR0xm
bG9hdCB3KSBmaW5hbDsKLSAgICB2b2lkIHZlcnRleEF0dHJpYjRmdihHQ0dMdWludCBpbmRleCwg
Y29uc3QgR0NHTGZsb2F0KiB2YWx1ZXMpIGZpbmFsOworICAgIHZvaWQgdmVydGV4QXR0cmliNGZ2
KEdDR0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQsIDQ+IHZhbHVlcykgZmlu
YWw7CiAgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJQb2ludGVyKEdDR0x1aW50IGluZGV4LCBHQ0dMaW50
IHNpemUsIEdDR0xlbnVtIHR5cGUsIEdDR0xib29sZWFuIG5vcm1hbGl6ZWQsIEdDR0xzaXplaSBz
dHJpZGUsIEdDR0xpbnRwdHIgb2Zmc2V0KSBmaW5hbDsKIAogICAgIHZvaWQgdmlld3BvcnQoR0NH
TGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkgZmlu
YWw7CkBAIC0zMjMsOCArMzIzLDggQEAgcHVibGljOgogCiAgICAgdm9pZCBibGl0RnJhbWVidWZm
ZXIoR0NHTGludCBzcmNYMCwgR0NHTGludCBzcmNZMCwgR0NHTGludCBzcmNYMSwgR0NHTGludCBz
cmNZMSwgR0NHTGludCBkc3RYMCwgR0NHTGludCBkc3RZMCwgR0NHTGludCBkc3RYMSwgR0NHTGlu
dCBkc3RZMSwgR0NHTGJpdGZpZWxkIG1hc2ssIEdDR0xlbnVtIGZpbHRlcikgZmluYWw7CiAgICAg
dm9pZCBmcmFtZWJ1ZmZlclRleHR1cmVMYXllcihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGF0
dGFjaG1lbnQsIFBsYXRmb3JtR0xPYmplY3QgdGV4dHVyZSwgR0NHTGludCBsZXZlbCwgR0NHTGlu
dCBsYXllcikgZmluYWw7Ci0gICAgdm9pZCBpbnZhbGlkYXRlRnJhbWVidWZmZXIoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMc2l6ZWkgbnVtQXR0YWNobWVudHMsIGNvbnN0IEdDR0xlbnVtKiBhdHRhY2ht
ZW50cykgZmluYWw7Ci0gICAgdm9pZCBpbnZhbGlkYXRlU3ViRnJhbWVidWZmZXIoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMc2l6ZWkgbnVtQXR0YWNobWVudHMsIGNvbnN0IEdDR0xlbnVtKiBhdHRhY2ht
ZW50cywgR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhl
aWdodCkgZmluYWw7CisgICAgdm9pZCBpbnZhbGlkYXRlRnJhbWVidWZmZXIoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4gYXR0YWNobWVudHMpIGZpbmFsOworICAgIHZv
aWQgaW52YWxpZGF0ZVN1YkZyYW1lYnVmZmVyKEdDR0xlbnVtIHRhcmdldCwgR0NHTFNwYW48Y29u
c3QgR0NHTGVudW0+IGF0dGFjaG1lbnRzLCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVp
IHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KSBmaW5hbDsKICAgICB2b2lkIHJlYWRCdWZmZXIoR0NH
TGVudW0gc3JjKSBmaW5hbDsKIAogICAgIC8vIGdldEludGVybmFsRm9ybWF0UGFyYW1ldGVyCkBA
IC0zNDIsMjggKzM0MiwyOCBAQCBwdWJsaWM6CiAgICAgdm9pZCB1bmlmb3JtMnVpKEdDR0xpbnQg
bG9jYXRpb24sIEdDR0x1aW50IHYwLCBHQ0dMdWludCB2MSkgZmluYWw7CiAgICAgdm9pZCB1bmlm
b3JtM3VpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0x1aW50IHYwLCBHQ0dMdWludCB2MSwgR0NHTHVp
bnQgdjIpIGZpbmFsOwogICAgIHZvaWQgdW5pZm9ybTR1aShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dM
dWludCB2MCwgR0NHTHVpbnQgdjEsIEdDR0x1aW50IHYyLCBHQ0dMdWludCB2MykgZmluYWw7Ci0g
ICAgdm9pZCB1bmlmb3JtMXVpdihHQ0dMaW50IGxvY2F0aW9uLCBjb25zdCBHQ0dMdWludCogZGF0
YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpIGZpbmFsOwotICAgIHZv
aWQgdW5pZm9ybTJ1aXYoR0NHTGludCBsb2NhdGlvbiwgY29uc3QgR0NHTHVpbnQqIGRhdGEsIEdD
R0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKSBmaW5hbDsKLSAgICB2b2lkIHVu
aWZvcm0zdWl2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0x1aW50KiBkYXRhLCBHQ0dMdWlu
dCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkgZmluYWw7Ci0gICAgdm9pZCB1bmlmb3Jt
NHVpdihHQ0dMaW50IGxvY2F0aW9uLCBjb25zdCBHQ0dMdWludCogZGF0YSwgR0NHTHVpbnQgc3Jj
T2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpIGZpbmFsOwotICAgIHZvaWQgdW5pZm9ybU1hdHJp
eDJ4M2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NH
TGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkgZmlu
YWw7Ci0gICAgdm9pZCB1bmlmb3JtTWF0cml4M3gyZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJv
b2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNl
dCwgR0NHTHVpbnQgc3JjTGVuZ3RoKSBmaW5hbDsKLSAgICB2b2lkIHVuaWZvcm1NYXRyaXgyeDRm
dihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9h
dCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpIGZpbmFsOwot
ICAgIHZvaWQgdW5pZm9ybU1hdHJpeDR4MmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFu
IHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdD
R0x1aW50IHNyY0xlbmd0aCkgZmluYWw7Ci0gICAgdm9pZCB1bmlmb3JtTWF0cml4M3g0ZnYoR0NH
TGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHQ0dMZmxvYXQqIGRh
dGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKSBmaW5hbDsKLSAgICB2
b2lkIHVuaWZvcm1NYXRyaXg0eDNmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFu
c3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWlu
dCBzcmNMZW5ndGgpIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybTF1aXYoR0NHTGludCBsb2NhdGlv
biwgR0NHTFNwYW48Y29uc3QgR0NHTHVpbnQ+KSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm0ydWl2
KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0x1aW50PikgZmluYWw7CisgICAg
dm9pZCB1bmlmb3JtM3VpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdWlu
dD4pIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybTR1aXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNw
YW48Y29uc3QgR0NHTHVpbnQ+KSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm1NYXRyaXgyeDNmdihH
Q0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdD
R0xmbG9hdD4gZGF0YSkgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtTWF0cml4M3gyZnYoR0NHTGlu
dCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxv
YXQ+IGRhdGEpIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybU1hdHJpeDJ4NGZ2KEdDR0xpbnQgbG9j
YXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiBk
YXRhKSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm1NYXRyaXg0eDJmdihHQ0dMaW50IGxvY2F0aW9u
LCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gZGF0YSkg
ZmluYWw7CisgICAgdm9pZCB1bmlmb3JtTWF0cml4M3g0ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NH
TGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEpIGZpbmFs
OworICAgIHZvaWQgdW5pZm9ybU1hdHJpeDR4M2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29s
ZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiBkYXRhKSBmaW5hbDsKICAg
ICB2b2lkIHZlcnRleEF0dHJpYkk0aShHQ0dMdWludCBpbmRleCwgR0NHTGludCB4LCBHQ0dMaW50
IHksIEdDR0xpbnQgeiwgR0NHTGludCB3KSBmaW5hbDsKLSAgICB2b2lkIHZlcnRleEF0dHJpYkk0
aXYoR0NHTHVpbnQgaW5kZXgsIGNvbnN0IEdDR0xpbnQqIHZhbHVlcykgZmluYWw7CisgICAgdm9p
ZCB2ZXJ0ZXhBdHRyaWJJNGl2KEdDR0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50
LCA0PiB2YWx1ZXMpIGZpbmFsOwogICAgIHZvaWQgdmVydGV4QXR0cmliSTR1aShHQ0dMdWludCBp
bmRleCwgR0NHTHVpbnQgeCwgR0NHTHVpbnQgeSwgR0NHTHVpbnQgeiwgR0NHTHVpbnQgdykgZmlu
YWw7Ci0gICAgdm9pZCB2ZXJ0ZXhBdHRyaWJJNHVpdihHQ0dMdWludCBpbmRleCwgY29uc3QgR0NH
THVpbnQqIHZhbHVlcykgZmluYWw7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJJNHVpdihHQ0dMdWlu
dCBpbmRleCwgR0NHTFNwYW48Y29uc3QgR0NHTHVpbnQsIDQ+IHZhbHVlcykgZmluYWw7CiAgICAg
dm9pZCB2ZXJ0ZXhBdHRyaWJJUG9pbnRlcihHQ0dMdWludCBpbmRleCwgR0NHTGludCBzaXplLCBH
Q0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgc3RyaWRlLCBHQ0dMaW50cHRyIG9mZnNldCkgZmluYWw7
CiAKICAgICB2b2lkIGRyYXdSYW5nZUVsZW1lbnRzKEdDR0xlbnVtIG1vZGUsIEdDR0x1aW50IHN0
YXJ0LCBHQ0dMdWludCBlbmQsIEdDR0xzaXplaSBjb3VudCwgR0NHTGVudW0gdHlwZSwgR0NHTGlu
dHB0ciBvZmZzZXQpIGZpbmFsOwogCi0gICAgdm9pZCBkcmF3QnVmZmVycyhHQ0dMc2l6ZWkgbiwg
Y29uc3QgR0NHTGVudW0qIGJ1ZnMpIGZpbmFsOwotICAgIHZvaWQgY2xlYXJCdWZmZXJpdihHQ0dM
ZW51bSBidWZmZXIsIEdDR0xpbnQgZHJhd2J1ZmZlciwgY29uc3QgR0NHTGludCogdmFsdWVzLCBH
Q0dMdWludCBzcmNPZmZzZXQpIGZpbmFsOwotICAgIHZvaWQgY2xlYXJCdWZmZXJ1aXYoR0NHTGVu
dW0gYnVmZmVyLCBHQ0dMaW50IGRyYXdidWZmZXIsIGNvbnN0IEdDR0x1aW50KiB2YWx1ZXMsIEdD
R0x1aW50IHNyY09mZnNldCkgZmluYWw7Ci0gICAgdm9pZCBjbGVhckJ1ZmZlcmZ2KEdDR0xlbnVt
IGJ1ZmZlciwgR0NHTGludCBkcmF3YnVmZmVyLCBjb25zdCBHQ0dMZmxvYXQqIHZhbHVlcywgR0NH
THVpbnQgc3JjT2Zmc2V0KSBmaW5hbDsKKyAgICB2b2lkIGRyYXdCdWZmZXJzKEdDR0xTcGFuPGNv
bnN0IEdDR0xlbnVtPiBidWZzKSBmaW5hbDsKKyAgICB2b2lkIGNsZWFyQnVmZmVyaXYoR0NHTGVu
dW0gYnVmZmVyLCBHQ0dMaW50IGRyYXdidWZmZXIsIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+IHZh
bHVlcykgZmluYWw7CisgICAgdm9pZCBjbGVhckJ1ZmZlcnVpdihHQ0dMZW51bSBidWZmZXIsIEdD
R0xpbnQgZHJhd2J1ZmZlciwgR0NHTFNwYW48Y29uc3QgR0NHTHVpbnQ+IHZhbHVlcykgZmluYWw7
CisgICAgdm9pZCBjbGVhckJ1ZmZlcmZ2KEdDR0xlbnVtIGJ1ZmZlciwgR0NHTGludCBkcmF3YnVm
ZmVyLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IHZhbHVlcykgZmluYWw7CiAgICAgdm9pZCBj
bGVhckJ1ZmZlcmZpKEdDR0xlbnVtIGJ1ZmZlciwgR0NHTGludCBkcmF3YnVmZmVyLCBHQ0dMZmxv
YXQgZGVwdGgsIEdDR0xpbnQgc3RlbmNpbCkgZmluYWw7CiAKICAgICBQbGF0Zm9ybUdMT2JqZWN0
IGNyZWF0ZVF1ZXJ5KCkgZmluYWw7CkBAIC00MjQsMTkgKzQyNCw2IEBAIHB1YmxpYzoKICAgICB2
b2lkIGNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZl
bCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NH
THNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBjb25zdCB2b2lkKiBzcmNEYXRhLCBHQ0dM
dWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aE92ZXJyaWRlKTsKICNlbmRpZgogCi0g
ICAgdm9pZCB1bmlmb3JtMWZ2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0xmbG9hdCogZGF0
YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpIGZpbmFsOwotICAgIHZv
aWQgdW5pZm9ybTJmdihHQ0dMaW50IGxvY2F0aW9uLCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdD
R0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKSBmaW5hbDsKLSAgICB2b2lkIHVu
aWZvcm0zZnYoR0NHTGludCBsb2NhdGlvbiwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWlu
dCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkgZmluYWw7Ci0gICAgdm9pZCB1bmlmb3Jt
NGZ2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3Jj
T2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpIGZpbmFsOwotCi0gICAgdm9pZCB1bmlmb3JtMWl2
KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0xpbnQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNl
dCwgR0NHTHVpbnQgc3JjTGVuZ3RoKSBmaW5hbDsKLSAgICB2b2lkIHVuaWZvcm0yaXYoR0NHTGlu
dCBsb2NhdGlvbiwgY29uc3QgR0NHTGludCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dM
dWludCBzcmNMZW5ndGgpIGZpbmFsOwotICAgIHZvaWQgdW5pZm9ybTNpdihHQ0dMaW50IGxvY2F0
aW9uLCBjb25zdCBHQ0dMaW50KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNy
Y0xlbmd0aCkgZmluYWw7Ci0gICAgdm9pZCB1bmlmb3JtNGl2KEdDR0xpbnQgbG9jYXRpb24sIGNv
bnN0IEdDR0xpbnQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3Ro
KSBmaW5hbDsKLQotICAgIHZvaWQgdW5pZm9ybU1hdHJpeDJmdihHQ0dMaW50IGxvY2F0aW9uLCBH
Q0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3Jj
T2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpIGZpbmFsOwotICAgIHZvaWQgdW5pZm9ybU1hdHJp
eDNmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xm
bG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpIGZpbmFs
OwotICAgIHZvaWQgdW5pZm9ybU1hdHJpeDRmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVh
biB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBH
Q0dMdWludCBzcmNMZW5ndGgpIGZpbmFsOwogICAgIHZvaWQgZ2V0QWN0aXZlVW5pZm9ybUJsb2Nr
aXYoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTHVpbnQgdW5pZm9ybUJsb2NrSW5kZXgsIEdDR0xlbnVt
IHBuYW1lLCBHQ0dMU3BhbjxHQ0dMaW50PiBwYXJhbXMpIGZpbmFsOwogCiAjaWYgIVVTRShBTkdM
RSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9H
cmFwaGljc0NvbnRleHRHTE9wZW5HTENvbW1vbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb21tb24uY3BwCmluZGV4
IGFiYjdlMjVhMDZmMDg1Y2NlYWNmZjVhYjZlODIwNDU3Y2U5YTJkOTMuLmNkYzkzOWI2Mjg3MTQz
YjZjMzcwODczZmU2MjZjNzE0N2U0NDM5YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvbW1vbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMQ29tbW9uLmNwcApAQCAtNTUyLDIwICs1NTIsMjAgQEAgdm9pZCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6YnVmZmVyRGF0YShHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaXB0
ciBzaXplLCBHQ0cKICAgICA6OmdsQnVmZmVyRGF0YSh0YXJnZXQsIHNpemUsIDAsIHVzYWdlKTsK
IH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6YnVmZmVyRGF0YShHQ0dMZW51bSB0
YXJnZXQsIEdDR0xzaXplaXB0ciBzaXplLCBjb25zdCB2b2lkKiBkYXRhLCBHQ0dMZW51bSB1c2Fn
ZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmJ1ZmZlckRhdGEoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMU3Bhbjxjb25zdCB2b2lkPiBkYXRhLCBHQ0dMZW51bSB1c2FnZSkKIHsKICAgICBp
ZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICA6OmdsQnVm
ZmVyRGF0YSh0YXJnZXQsIHNpemUsIGRhdGEsIHVzYWdlKTsKKyAgICA6OmdsQnVmZmVyRGF0YSh0
YXJnZXQsIGRhdGEuYnVmU2l6ZSwgZGF0YS5kYXRhLCB1c2FnZSk7CiB9CiAKLXZvaWQgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmJ1ZmZlclN1YkRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50
cHRyIG9mZnNldCwgR0NHTHNpemVpcHRyIHNpemUsIGNvbnN0IHZvaWQqIGRhdGEpCit2b2lkIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpidWZmZXJTdWJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NH
TGludHB0ciBvZmZzZXQsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRhKQogewogICAgIGlm
ICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIDo6Z2xCdWZm
ZXJTdWJEYXRhKHRhcmdldCwgb2Zmc2V0LCBzaXplLCBkYXRhKTsKKyAgICA6OmdsQnVmZmVyU3Vi
RGF0YSh0YXJnZXQsIG9mZnNldCwgZGF0YS5idWZTaXplLCBkYXRhLmRhdGEpOwogfQogCiBHQ0dM
ZW51bSBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhHQ0dM
ZW51bSB0YXJnZXQpCkBAIC0xNDE1LDEyICsxNDE1LDEyIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OnVuaWZvcm0xZihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMZmxvYXQgdjApCiAgICAg
OjpnbFVuaWZvcm0xZihsb2NhdGlvbiwgdjApOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjp1bmlmb3JtMWZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBzaXplLCBjb25z
dCBHQ0dMZmxvYXQqIGFycmF5KQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9y
bTFmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGFycmF5KQog
ewogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAg
IDo6Z2xVbmlmb3JtMWZ2KGxvY2F0aW9uLCBzaXplLCBhcnJheSk7CisgICAgOjpnbFVuaWZvcm0x
ZnYobG9jYXRpb24sIGFycmF5LmJ1ZlNpemUsIGFycmF5KTsKIH0KIAogdm9pZCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6dW5pZm9ybTJmKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xmbG9hdCB2MCwg
R0NHTGZsb2F0IHYxKQpAQCAtMTQzMSwxMyArMTQzMSwxMyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjp1bmlmb3JtMmYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGZsb2F0IHYwLCBHQ0dM
ZmxvYQogICAgIDo6Z2xVbmlmb3JtMmYobG9jYXRpb24sIHYwLCB2MSk7CiB9CiAKLXZvaWQgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0yZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTHNp
emVpIHNpemUsIGNvbnN0IEdDR0xmbG9hdCogYXJyYXkpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjp1bmlmb3JtMmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xm
bG9hdD4gYXJyYXkpCiB7Ci0gICAgLy8gRklYTUU6IGxlbmd0aCBuZWVkcyB0byBiZSBhIG11bHRp
cGxlIG9mIDIuCisgICAgQVNTRVJUKCEoYXJyYXkuYnVmU2l6ZSAlIDIpKTsKICAgICBpZiAoIW1h
a2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICA6OmdsVW5pZm9ybTJm
dihsb2NhdGlvbiwgc2l6ZSwgYXJyYXkpOworICAgIDo6Z2xVbmlmb3JtMmZ2KGxvY2F0aW9uLCBh
cnJheS5idWZTaXplIC8gMiwgYXJyYXkpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjp1bmlmb3JtM2YoR0NHTGludCBsb2NhdGlvbiwgR0NHTGZsb2F0IHYwLCBHQ0dMZmxvYXQg
djEsIEdDR0xmbG9hdCB2MikKQEAgLTE0NDgsMTMgKzE0NDgsMTMgQEAgdm9pZCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6dW5pZm9ybTNmKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xmbG9hdCB2MCwg
R0NHTGZsb2EKICAgICA6OmdsVW5pZm9ybTNmKGxvY2F0aW9uLCB2MCwgdjEsIHYyKTsKIH0KIAot
dm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTNmdihHQ0dMaW50IGxvY2F0aW9u
LCBHQ0dMc2l6ZWkgc2l6ZSwgY29uc3QgR0NHTGZsb2F0KiBhcnJheSkKK3ZvaWQgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OnVuaWZvcm0zZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29u
c3QgR0NHTGZsb2F0PiBhcnJheSkKIHsKLSAgICAvLyBGSVhNRTogbGVuZ3RoIG5lZWRzIHRvIGJl
IGEgbXVsdGlwbGUgb2YgMy4KKyAgICBBU1NFUlQoIShhcnJheS5idWZTaXplICUgMykpOwogICAg
IGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIDo6Z2xV
bmlmb3JtM2Z2KGxvY2F0aW9uLCBzaXplLCBhcnJheSk7CisgICAgOjpnbFVuaWZvcm0zZnYobG9j
YXRpb24sIGFycmF5LmJ1ZlNpemUgLyAzLCBhcnJheSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OnVuaWZvcm00ZihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMZmxvYXQgdjAsIEdD
R0xmbG9hdCB2MSwgR0NHTGZsb2F0IHYyLCBHQ0dMZmxvYXQgdjMpCkBAIC0xNDY1LDEzICsxNDY1
LDEzIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm00ZihHQ0dMaW50IGxv
Y2F0aW9uLCBHQ0dMZmxvYXQgdjAsIEdDR0xmbG9hCiAgICAgOjpnbFVuaWZvcm00Zihsb2NhdGlv
biwgdjAsIHYxLCB2MiwgdjMpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1
bmlmb3JtNGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBzaXplLCBjb25zdCBHQ0dMZmxv
YXQqIGFycmF5KQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTRmdihHQ0dM
aW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGFycmF5KQogewotICAgIC8v
IEZJWE1FOiBsZW5ndGggbmVlZHMgdG8gYmUgYSBtdWx0aXBsZSBvZiA0LgorICAgIEFTU0VSVCgh
KGFycmF5LmJ1ZlNpemUgJSA0KSk7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgOjpnbFVuaWZvcm00ZnYobG9jYXRpb24sIHNpemUsIGFycmF5
KTsKKyAgICA6OmdsVW5pZm9ybTRmdihsb2NhdGlvbiwgYXJyYXkuYnVmU2l6ZSAvIDQsIGFycmF5
KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTFpKEdDR0xpbnQg
bG9jYXRpb24sIEdDR0xpbnQgdjApCkBAIC0xNDgyLDEyICsxNDgyLDEyIEBAIHZvaWQgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0xaShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMaW50IHYw
KQogICAgIDo6Z2xVbmlmb3JtMWkobG9jYXRpb24sIHYwKTsKIH0KIAotdm9pZCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6dW5pZm9ybTFpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgc2l6
ZSwgY29uc3QgR0NHTGludCogYXJyYXkpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1
bmlmb3JtMWl2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+IGFycmF5
KQogewogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIDo6Z2xVbmlmb3JtMWl2KGxvY2F0aW9uLCBzaXplLCBhcnJheSk7CisgICAgOjpnbFVuaWZv
cm0xaXYobG9jYXRpb24sIGFycmF5LmJ1ZlNpemUsIGFycmF5KTsKIH0KIAogdm9pZCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTJpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xpbnQgdjAs
IEdDR0xpbnQgdjEpCkBAIC0xNDk4LDEzICsxNDk4LDEzIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OnVuaWZvcm0yaShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMaW50IHYwLCBHQ0dMaW50
IHYxCiAgICAgOjpnbFVuaWZvcm0yaShsb2NhdGlvbiwgdjAsIHYxKTsKIH0KIAotdm9pZCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTJpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6
ZWkgc2l6ZSwgY29uc3QgR0NHTGludCogYXJyYXkpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjp1bmlmb3JtMml2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+
IGFycmF5KQogewotICAgIC8vIEZJWE1FOiBsZW5ndGggbmVlZHMgdG8gYmUgYSBtdWx0aXBsZSBv
ZiAyLgorICAgIEFTU0VSVCghKGFycmF5LmJ1ZlNpemUgJSAyKSk7CiAgICAgaWYgKCFtYWtlQ29u
dGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgOjpnbFVuaWZvcm0yaXYobG9j
YXRpb24sIHNpemUsIGFycmF5KTsKKyAgICA6OmdsVW5pZm9ybTJpdihsb2NhdGlvbiwgYXJyYXku
YnVmU2l6ZSAvIDIsIGFycmF5KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
dW5pZm9ybTNpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xpbnQgdjAsIEdDR0xpbnQgdjEsIEdDR0xp
bnQgdjIpCkBAIC0xNTE1LDEzICsxNTE1LDEzIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OnVuaWZvcm0zaShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMaW50IHYwLCBHQ0dMaW50IHYxCiAg
ICAgOjpnbFVuaWZvcm0zaShsb2NhdGlvbiwgdjAsIHYxLCB2Mik7CiB9CiAKLXZvaWQgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0zaXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVp
IHNpemUsIGNvbnN0IEdDR0xpbnQqIGFycmF5KQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6dW5pZm9ybTNpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50PiBh
cnJheSkKIHsKLSAgICAvLyBGSVhNRTogbGVuZ3RoIG5lZWRzIHRvIGJlIGEgbXVsdGlwbGUgb2Yg
My4KKyAgICBBU1NFUlQoIShhcnJheS5idWZTaXplICUgMykpOwogICAgIGlmICghbWFrZUNvbnRl
eHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIDo6Z2xVbmlmb3JtM2l2KGxvY2F0
aW9uLCBzaXplLCBhcnJheSk7CisgICAgOjpnbFVuaWZvcm0zaXYobG9jYXRpb24sIGFycmF5LmJ1
ZlNpemUgLyAzLCBhcnJheSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVu
aWZvcm00aShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMaW50IHYwLCBHQ0dMaW50IHYxLCBHQ0dMaW50
IHYyLCBHQ0dMaW50IHYzKQpAQCAtMTUzMiw0MCArMTUzMiw0MCBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjp1bmlmb3JtNGkoR0NHTGludCBsb2NhdGlvbiwgR0NHTGludCB2MCwgR0NH
TGludCB2MQogICAgIDo6Z2xVbmlmb3JtNGkobG9jYXRpb24sIHYwLCB2MSwgdjIsIHYzKTsKIH0K
IAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTRpdihHQ0dMaW50IGxvY2F0
aW9uLCBHQ0dMc2l6ZWkgc2l6ZSwgY29uc3QgR0NHTGludCogYXJyYXkpCit2b2lkIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjp1bmlmb3JtNGl2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNv
bnN0IEdDR0xpbnQ+IGFycmF5KQogewotICAgIC8vIEZJWE1FOiBsZW5ndGggbmVlZHMgdG8gYmUg
YSBtdWx0aXBsZSBvZiA0LgorICAgIEFTU0VSVCghKGFycmF5LmJ1ZlNpemUgJSA0KSk7CiAgICAg
aWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgOjpnbFVu
aWZvcm00aXYobG9jYXRpb24sIHNpemUsIGFycmF5KTsKKyAgICA6OmdsVW5pZm9ybTRpdihsb2Nh
dGlvbiwgYXJyYXkuYnVmU2l6ZSAvIDQsIGFycmF5KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6dW5pZm9ybU1hdHJpeDJmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkg
c2l6ZSwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHQ0dMZmxvYXQqIGFycmF5KQordm9p
ZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybU1hdHJpeDJmdihHQ0dMaW50IGxvY2F0
aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gYXJy
YXkpCiB7Ci0gICAgLy8gRklYTUU6IGxlbmd0aCBuZWVkcyB0byBiZSBhIG11bHRpcGxlIG9mIDQu
CisgICAgQVNTRVJUKCEoYXJyYXkuYnVmU2l6ZSAlIDQpKTsKICAgICBpZiAoIW1ha2VDb250ZXh0
Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICA6OmdsVW5pZm9ybU1hdHJpeDJmdihs
b2NhdGlvbiwgc2l6ZSwgdHJhbnNwb3NlLCBhcnJheSk7CisgICAgOjpnbFVuaWZvcm1NYXRyaXgy
ZnYobG9jYXRpb24sIGFycmF5LmJ1ZlNpemUgLyA0LCB0cmFuc3Bvc2UsIGFycmF5KTsKIH0KIAot
dm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybU1hdHJpeDNmdihHQ0dMaW50IGxv
Y2F0aW9uLCBHQ0dMc2l6ZWkgc2l6ZSwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHQ0dM
ZmxvYXQqIGFycmF5KQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybU1hdHJp
eDNmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNv
bnN0IEdDR0xmbG9hdD4gYXJyYXkpCiB7Ci0gICAgLy8gRklYTUU6IGxlbmd0aCBuZWVkcyB0byBi
ZSBhIG11bHRpcGxlIG9mIDkuCisgICAgQVNTRVJUKCEoYXJyYXkuYnVmU2l6ZSAlIDkpKTsKICAg
ICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICA6Omds
VW5pZm9ybU1hdHJpeDNmdihsb2NhdGlvbiwgc2l6ZSwgdHJhbnNwb3NlLCBhcnJheSk7CisgICAg
OjpnbFVuaWZvcm1NYXRyaXgzZnYobG9jYXRpb24sIGFycmF5LmJ1ZlNpemUgLyA5LCB0cmFuc3Bv
c2UsIGFycmF5KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybU1h
dHJpeDRmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgc2l6ZSwgR0NHTGJvb2xlYW4gdHJh
bnNwb3NlLCBjb25zdCBHQ0dMZmxvYXQqIGFycmF5KQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6dW5pZm9ybU1hdHJpeDRmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFu
c3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gYXJyYXkpCiB7Ci0gICAgLy8gRklYTUU6
IGxlbmd0aCBuZWVkcyB0byBiZSBhIG11bHRpcGxlIG9mIDE2LgorICAgIEFTU0VSVCghKGFycmF5
LmJ1ZlNpemUgJSAxNikpOwogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIDo6Z2xVbmlmb3JtTWF0cml4NGZ2KGxvY2F0aW9uLCBzaXplLCB0cmFu
c3Bvc2UsIGFycmF5KTsKKyAgICA6OmdsVW5pZm9ybU1hdHJpeDRmdihsb2NhdGlvbiwgYXJyYXku
YnVmU2l6ZSAvIDE2LCB0cmFuc3Bvc2UsIGFycmF5KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6dXNlUHJvZ3JhbShQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0pCkBAIC0xNTk0
LDcgKzE1OTQsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2ZXJ0ZXhBdHRyaWIx
ZihHQ0dMdWludCBpbmRleCwgR0NHTGZsb2F0IHYwKQogICAgIDo6Z2xWZXJ0ZXhBdHRyaWIxZihp
bmRleCwgdjApOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2ZXJ0ZXhBdHRy
aWIxZnYoR0NHTHVpbnQgaW5kZXgsIGNvbnN0IEdDR0xmbG9hdCogYXJyYXkpCit2b2lkIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjp2ZXJ0ZXhBdHRyaWIxZnYoR0NHTHVpbnQgaW5kZXgsIEdDR0xT
cGFuPGNvbnN0IEdDR0xmbG9hdCwgMT4gYXJyYXkpCiB7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1
cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTYxMCw3ICsxNjEwLDcgQEAgdm9pZCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliMmYoR0NHTHVpbnQgaW5kZXgsIEdDR0xm
bG9hdCB2MCwgR0NHTGYKICAgICA6OmdsVmVydGV4QXR0cmliMmYoaW5kZXgsIHYwLCB2MSk7CiB9
CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYjJmdihHQ0dMdWlu
dCBpbmRleCwgY29uc3QgR0NHTGZsb2F0KiBhcnJheSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OnZlcnRleEF0dHJpYjJmdihHQ0dMdWludCBpbmRleCwgR0NHTFNwYW48Y29uc3QgR0NH
TGZsb2F0LCAyPiBhcnJheSkKIHsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAg
ICAgICByZXR1cm47CkBAIC0xNjI2LDcgKzE2MjYsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjp2ZXJ0ZXhBdHRyaWIzZihHQ0dMdWludCBpbmRleCwgR0NHTGZsb2F0IHYwLCBHQ0dM
ZgogICAgIDo6Z2xWZXJ0ZXhBdHRyaWIzZihpbmRleCwgdjAsIHYxLCB2Mik7CiB9CiAKLXZvaWQg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYjNmdihHQ0dMdWludCBpbmRleCwg
Y29uc3QgR0NHTGZsb2F0KiBhcnJheSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZl
cnRleEF0dHJpYjNmdihHQ0dMdWludCBpbmRleCwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0LCAz
PiBhcnJheSkKIHsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1
cm47CkBAIC0xNjQyLDcgKzE2NDIsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2
ZXJ0ZXhBdHRyaWI0ZihHQ0dMdWludCBpbmRleCwgR0NHTGZsb2F0IHYwLCBHQ0dMZgogICAgIDo6
Z2xWZXJ0ZXhBdHRyaWI0ZihpbmRleCwgdjAsIHYxLCB2MiwgdjMpOwogfQogCi12b2lkIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjp2ZXJ0ZXhBdHRyaWI0ZnYoR0NHTHVpbnQgaW5kZXgsIGNvbnN0
IEdDR0xmbG9hdCogYXJyYXkpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2ZXJ0ZXhB
dHRyaWI0ZnYoR0NHTHVpbnQgaW5kZXgsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdCwgND4gYXJy
YXkpCiB7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwpA
QCAtMjA1NSw3ICsyMDU1LDcgQEAgR0NHTHNpemVpcHRyIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpnZXRWZXJ0ZXhBdHRyaWJPZmZzZXQoR0NHTHVpbnQgaW5kZXgsIEdDR0wKICAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8R0NHTHNpemVpcHRyPihyZWludGVycHJldF9jYXN0PGludHB0cl90Pihwb2lu
dGVyKSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnRleFN1YkltYWdlMkQo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmYsIEdDR0xpbnQgeW9m
ZiwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdD
R0xlbnVtIHR5cGUsIGNvbnN0IHZvaWQqIHBpeGVscykKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OnRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dM
aW50IHhvZmYsIEdDR0xpbnQgeW9mZiwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0
LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lk
PiBwaXhlbHMpCiB7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0
dXJuOwpAQCAtMjA4Myw3ICsyMDgzLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
dGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0wKICAgICB9
CiAKICAgICAvLyBGSVhNRTogd2Ugd2lsbCBuZWVkIHRvIGRlYWwgd2l0aCBQaXhlbFN0b3JlIHBh
cmFtcyB3aGVuIGRlYWxpbmcgd2l0aCBpbWFnZSBidWZmZXJzIHRoYXQgZGlmZmVyIGZyb20gdGhl
IHN1YmltYWdlIHNpemUuCi0gICAgOjpnbFRleFN1YkltYWdlMkQodGFyZ2V0LCBsZXZlbCwgeG9m
ZiwgeW9mZiwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBwaXhlbHMpOworICAgIDo6Z2xU
ZXhTdWJJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIHhvZmYsIHlvZmYsIHdpZHRoLCBoZWlnaHQsIGZv
cm1hdCwgdHlwZSwgcGl4ZWxzLmRhdGEpOwogICAgIG1fc3RhdGUudGV4dHVyZVNlZWRDb3VudC5h
ZGQobV9zdGF0ZS5jdXJyZW50Qm91bmRUZXh0dXJlKCkpOwogfQogCkBAIC0yMzk1LDE3ICsyMzk1
LDE1IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmZyYW1lYnVmZmVyVGV4dHVyZUxh
eWVyKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0KICAgICBVTlVTRURfUEFSQU0obGF5ZXIpOwog
fQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjppbnZhbGlkYXRlRnJhbWVidWZmZXIo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgbnVtQXR0YWNobWVudHMsIGNvbnN0IEdDR0xlbnVt
KiBhdHRhY2htZW50cykKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmludmFsaWRhdGVG
cmFtZWJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQsIEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVtPiBhdHRh
Y2htZW50cykKIHsKICAgICBVTlVTRURfUEFSQU0odGFyZ2V0KTsKLSAgICBVTlVTRURfUEFSQU0o
bnVtQXR0YWNobWVudHMpOwogICAgIFVOVVNFRF9QQVJBTShhdHRhY2htZW50cyk7CiB9CiAKLXZv
aWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmludmFsaWRhdGVTdWJGcmFtZWJ1ZmZlcihHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xzaXplaSBudW1BdHRhY2htZW50cywgY29uc3QgR0NHTGVudW0qIGF0
dGFjaG1lbnRzLCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6
ZWkgaGVpZ2h0KQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6aW52YWxpZGF0ZVN1YkZy
YW1lYnVmZmVyKEdDR0xlbnVtIHRhcmdldCwgR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+IGF0dGFj
aG1lbnRzLCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkg
aGVpZ2h0KQogewogICAgIFVOVVNFRF9QQVJBTSh0YXJnZXQpOwotICAgIFVOVVNFRF9QQVJBTShu
dW1BdHRhY2htZW50cyk7CiAgICAgVU5VU0VEX1BBUkFNKGF0dGFjaG1lbnRzKTsKICAgICBVTlVT
RURfUEFSQU0oeCk7CiAgICAgVU5VU0VEX1BBUkFNKHkpOwpAQCAtMjUyOSw5MCArMjUyNyw3MCBA
QCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtNHVpKEdDR0xpbnQgbG9jYXRp
b24sIEdDR0x1aW50IHYwLCBHQ0dMdWludAogICAgIFVOVVNFRF9QQVJBTSh2Myk7CiB9CiAKLXZv
aWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0xdWl2KEdDR0xpbnQgbG9jYXRpb24s
IGNvbnN0IEdDR0x1aW50KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xl
bmd0aCkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0xdWl2KEdDR0xpbnQg
bG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0x1aW50PiBkYXRhKQogewogICAgIFVOVVNFRF9Q
QVJBTShsb2NhdGlvbik7CiAgICAgVU5VU0VEX1BBUkFNKGRhdGEpOwotICAgIFVOVVNFRF9QQVJB
TShzcmNPZmZzZXQpOwotICAgIFVOVVNFRF9QQVJBTShzcmNMZW5ndGgpOwogfQogCi12b2lkIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMnVpdihHQ0dMaW50IGxvY2F0aW9uLCBjb25z
dCBHQ0dMdWludCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgp
Cit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMnVpdihHQ0dMaW50IGxvY2F0
aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdWludD4gZGF0YSkKIHsKICAgICBVTlVTRURfUEFSQU0o
bG9jYXRpb24pOwogICAgIFVOVVNFRF9QQVJBTShkYXRhKTsKLSAgICBVTlVTRURfUEFSQU0oc3Jj
T2Zmc2V0KTsKLSAgICBVTlVTRURfUEFSQU0oc3JjTGVuZ3RoKTsKIH0KIAotdm9pZCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTN1aXYoR0NHTGludCBsb2NhdGlvbiwgY29uc3QgR0NH
THVpbnQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQordm9p
ZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTN1aXYoR0NHTGludCBsb2NhdGlvbiwg
R0NHTFNwYW48Y29uc3QgR0NHTHVpbnQ+IGRhdGEpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGxvY2F0
aW9uKTsKICAgICBVTlVTRURfUEFSQU0oZGF0YSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY09mZnNl
dCk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY0xlbmd0aCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OnVuaWZvcm00dWl2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0x1aW50
KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKK3ZvaWQgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm00dWl2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xT
cGFuPGNvbnN0IEdDR0x1aW50PiBkYXRhKQogewogICAgIFVOVVNFRF9QQVJBTShsb2NhdGlvbik7
CiAgICAgVU5VU0VEX1BBUkFNKGRhdGEpOwotICAgIFVOVVNFRF9QQVJBTShzcmNPZmZzZXQpOwot
ICAgIFVOVVNFRF9QQVJBTShzcmNMZW5ndGgpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjp1bmlmb3JtTWF0cml4MngzZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4g
dHJhbnNwb3NlLCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NH
THVpbnQgc3JjTGVuZ3RoKQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybU1h
dHJpeDJ4M2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNw
YW48Y29uc3QgR0NHTGZsb2F0PiBkYXRhKQogewogICAgIFVOVVNFRF9QQVJBTShsb2NhdGlvbik7
CiAgICAgVU5VU0VEX1BBUkFNKHRyYW5zcG9zZSk7CiAgICAgVU5VU0VEX1BBUkFNKGRhdGEpOwot
ICAgIFVOVVNFRF9QQVJBTShzcmNPZmZzZXQpOwotICAgIFVOVVNFRF9QQVJBTShzcmNMZW5ndGgp
OwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4M3gyZnYo
R0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHQ0dMZmxvYXQq
IGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQordm9pZCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybU1hdHJpeDN4MmZ2KEdDR0xpbnQgbG9jYXRpb24s
IEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiBkYXRhKQog
ewogICAgIFVOVVNFRF9QQVJBTShsb2NhdGlvbik7CiAgICAgVU5VU0VEX1BBUkFNKHRyYW5zcG9z
ZSk7CiAgICAgVU5VU0VEX1BBUkFNKGRhdGEpOwotICAgIFVOVVNFRF9QQVJBTShzcmNPZmZzZXQp
OwotICAgIFVOVVNFRF9QQVJBTShzcmNMZW5ndGgpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4Mng0ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xl
YW4gdHJhbnNwb3NlLCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwg
R0NHTHVpbnQgc3JjTGVuZ3RoKQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9y
bU1hdHJpeDJ4NGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NH
TFNwYW48Y29uc3QgR0NHTGZsb2F0PiBkYXRhKQogewogICAgIFVOVVNFRF9QQVJBTShsb2NhdGlv
bik7CiAgICAgVU5VU0VEX1BBUkFNKHRyYW5zcG9zZSk7CiAgICAgVU5VU0VEX1BBUkFNKGRhdGEp
OwotICAgIFVOVVNFRF9QQVJBTShzcmNPZmZzZXQpOwotICAgIFVOVVNFRF9QQVJBTShzcmNMZW5n
dGgpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4NHgy
ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHQ0dMZmxv
YXQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQordm9pZCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybU1hdHJpeDR4MmZ2KEdDR0xpbnQgbG9jYXRp
b24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiBkYXRh
KQogewogICAgIFVOVVNFRF9QQVJBTShsb2NhdGlvbik7CiAgICAgVU5VU0VEX1BBUkFNKHRyYW5z
cG9zZSk7CiAgICAgVU5VU0VEX1BBUkFNKGRhdGEpOwotICAgIFVOVVNFRF9QQVJBTShzcmNPZmZz
ZXQpOwotICAgIFVOVVNFRF9QQVJBTShzcmNMZW5ndGgpOwogfQogCi12b2lkIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4M3g0ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJv
b2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNl
dCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5p
Zm9ybU1hdHJpeDN4NGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwg
R0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiBkYXRhKQogewogICAgIFVOVVNFRF9QQVJBTShsb2Nh
dGlvbik7CiAgICAgVU5VU0VEX1BBUkFNKHRyYW5zcG9zZSk7CiAgICAgVU5VU0VEX1BBUkFNKGRh
dGEpOwotICAgIFVOVVNFRF9QQVJBTShzcmNPZmZzZXQpOwotICAgIFVOVVNFRF9QQVJBTShzcmNM
ZW5ndGgpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4
NHgzZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHQ0dM
ZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQordm9p
ZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybU1hdHJpeDR4M2Z2KEdDR0xpbnQgbG9j
YXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiBk
YXRhKQogewogICAgIFVOVVNFRF9QQVJBTShsb2NhdGlvbik7CiAgICAgVU5VU0VEX1BBUkFNKHRy
YW5zcG9zZSk7CiAgICAgVU5VU0VEX1BBUkFNKGRhdGEpOwotICAgIFVOVVNFRF9QQVJBTShzcmNP
ZmZzZXQpOwotICAgIFVOVVNFRF9QQVJBTShzcmNMZW5ndGgpOwogfQogCiB2b2lkIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjp2ZXJ0ZXhBdHRyaWJJNGkoR0NHTHVpbnQgaW5kZXgsIEdDR0xpbnQg
eCwgR0NHTGludCB5LCBHQ0dMaW50IHosIEdDR0xpbnQgdykKQEAgLTI2MjQsNyArMjYwMiw3IEBA
IHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYkk0aShHQ0dMdWludCBp
bmRleCwgR0NHTGludCB4LCBHQ0dMaW50CiAgICAgVU5VU0VEX1BBUkFNKHcpOwogfQogCi12b2lk
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2ZXJ0ZXhBdHRyaWJJNGl2KEdDR0x1aW50IGluZGV4
LCBjb25zdCBHQ0dMaW50KiB2YWx1ZXMpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2
ZXJ0ZXhBdHRyaWJJNGl2KEdDR0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50PiB2
YWx1ZXMpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGluZGV4KTsKICAgICBVTlVTRURfUEFSQU0odmFs
dWVzKTsKQEAgLTI2MzksNyArMjYxNyw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OnZlcnRleEF0dHJpYkk0dWkoR0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50IHgsIEdDR0x1CiAgICAg
VU5VU0VEX1BBUkFNKHcpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2ZXJ0
ZXhBdHRyaWJJNHVpdihHQ0dMdWludCBpbmRleCwgY29uc3QgR0NHTHVpbnQqIHZhbHVlcykKK3Zv
aWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYkk0dWl2KEdDR0x1aW50IGlu
ZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdWludD4gdmFsdWVzKQogewogICAgIFVOVVNFRF9QQVJB
TShpbmRleCk7CiAgICAgVU5VU0VEX1BBUkFNKHZhbHVlcyk7CkBAIC0yNjY0LDM0ICsyNjQyLDMw
IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmRyYXdSYW5nZUVsZW1lbnRzKEdDR0xl
bnVtIG1vZGUsIEdDR0x1aW50IHN0YXJ0LCBHCiAgICAgVU5VU0VEX1BBUkFNKG9mZnNldCk7CiB9
CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmRyYXdCdWZmZXJzKEdDR0xzaXplaSBu
LCBjb25zdCBHQ0dMZW51bSogYnVmcykKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmRy
YXdCdWZmZXJzKEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVtPiBidWZzKQogewotICAgIFVOVVNFRF9Q
QVJBTShuKTsKICAgICBVTlVTRURfUEFSQU0oYnVmcyk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OmNsZWFyQnVmZmVyaXYoR0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50IGRyYXdi
dWZmZXIsIGNvbnN0IEdDR0xpbnQqIHZhbHVlcywgR0NHTHVpbnQgc3JjT2Zmc2V0KQordm9pZCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y2xlYXJCdWZmZXJpdihHQ0dMZW51bSBidWZmZXIsIEdD
R0xpbnQgZHJhd2J1ZmZlciwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gdmFsdWVzKQogewogICAg
IFVOVVNFRF9QQVJBTShidWZmZXIpOwogICAgIFVOVVNFRF9QQVJBTShkcmF3YnVmZmVyKTsKICAg
ICBVTlVTRURfUEFSQU0odmFsdWVzKTsKLSAgICBVTlVTRURfUEFSQU0oc3JjT2Zmc2V0KTsKIH0K
IAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y2xlYXJCdWZmZXJ1aXYoR0NHTGVudW0g
YnVmZmVyLCBHQ0dMaW50IGRyYXdidWZmZXIsIGNvbnN0IEdDR0x1aW50KiB2YWx1ZXMsIEdDR0x1
aW50IHNyY09mZnNldCkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNsZWFyQnVmZmVy
dWl2KEdDR0xlbnVtIGJ1ZmZlciwgR0NHTGludCBkcmF3YnVmZmVyLCBHQ0dMU3Bhbjxjb25zdCBH
Q0dMdWludD4gdmFsdWVzKQogewogICAgIFVOVVNFRF9QQVJBTShidWZmZXIpOwogICAgIFVOVVNF
RF9QQVJBTShkcmF3YnVmZmVyKTsKICAgICBVTlVTRURfUEFSQU0odmFsdWVzKTsKLSAgICBVTlVT
RURfUEFSQU0oc3JjT2Zmc2V0KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
Y2xlYXJCdWZmZXJmdihHQ0dMZW51bSBidWZmZXIsIEdDR0xpbnQgZHJhd2J1ZmZlciwgY29uc3Qg
R0NHTGZsb2F0KiB2YWx1ZXMsIEdDR0x1aW50IHNyY09mZnNldCkKK3ZvaWQgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OmNsZWFyQnVmZmVyZnYoR0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50IGRyYXdi
dWZmZXIsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gdmFsdWVzKQogewogICAgIFVOVVNFRF9Q
QVJBTShidWZmZXIpOwogICAgIFVOVVNFRF9QQVJBTShkcmF3YnVmZmVyKTsKICAgICBVTlVTRURf
UEFSQU0odmFsdWVzKTsKLSAgICBVTlVTRURfUEFSQU0oc3JjT2Zmc2V0KTsKIH0KIAogdm9pZCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y2xlYXJCdWZmZXJmaShHQ0dMZW51bSBidWZmZXIsIEdD
R0xpbnQgZHJhd2J1ZmZlciwgR0NHTGZsb2F0IGRlcHRoLCBHQ0dMaW50IHN0ZW5jaWwpCkBAIC0z
MDIxLDk2ICsyOTk1LDYgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y29tcHJlc3Nl
ZFRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGwKICAgICBVTlVTRURfUEFS
QU0oc3JjTGVuZ3RoT3ZlcnJpZGUpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
Ojp1bmlmb3JtMWZ2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NH
THVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCi17Ci0gICAgVU5VU0VEX1BBUkFN
KGxvY2F0aW9uKTsKLSAgICBVTlVTRURfUEFSQU0oZGF0YSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNy
Y09mZnNldCk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY0xlbmd0aCk7Ci19Ci0KLXZvaWQgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0yZnYoR0NHTGludCBsb2NhdGlvbiwgY29uc3QgR0NH
TGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKLXsK
LSAgICBVTlVTRURfUEFSQU0obG9jYXRpb24pOwotICAgIFVOVVNFRF9QQVJBTShkYXRhKTsKLSAg
ICBVTlVTRURfUEFSQU0oc3JjT2Zmc2V0KTsKLSAgICBVTlVTRURfUEFSQU0oc3JjTGVuZ3RoKTsK
LX0KLQotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTNmdihHQ0dMaW50IGxv
Y2F0aW9uLCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVp
bnQgc3JjTGVuZ3RoKQotewotICAgIFVOVVNFRF9QQVJBTShsb2NhdGlvbik7Ci0gICAgVU5VU0VE
X1BBUkFNKGRhdGEpOwotICAgIFVOVVNFRF9QQVJBTShzcmNPZmZzZXQpOwotICAgIFVOVVNFRF9Q
QVJBTShzcmNMZW5ndGgpOwotfQotCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlm
b3JtNGZ2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQg
c3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCi17Ci0gICAgVU5VU0VEX1BBUkFNKGxvY2F0
aW9uKTsKLSAgICBVTlVTRURfUEFSQU0oZGF0YSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY09mZnNl
dCk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY0xlbmd0aCk7Ci19Ci0KLXZvaWQgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OnVuaWZvcm0xaXYoR0NHTGludCBsb2NhdGlvbiwgY29uc3QgR0NHTGludCog
ZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCi17Ci0gICAgVU5V
U0VEX1BBUkFNKGxvY2F0aW9uKTsKLSAgICBVTlVTRURfUEFSQU0oZGF0YSk7Ci0gICAgVU5VU0VE
X1BBUkFNKHNyY09mZnNldCk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY0xlbmd0aCk7Ci19Ci0KLXZv
aWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0yaXYoR0NHTGludCBsb2NhdGlvbiwg
Y29uc3QgR0NHTGludCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5n
dGgpCi17Ci0gICAgVU5VU0VEX1BBUkFNKGxvY2F0aW9uKTsKLSAgICBVTlVTRURfUEFSQU0oZGF0
YSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY09mZnNldCk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY0xl
bmd0aCk7Ci19Ci0KLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0zaXYoR0NH
TGludCBsb2NhdGlvbiwgY29uc3QgR0NHTGludCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBH
Q0dMdWludCBzcmNMZW5ndGgpCi17Ci0gICAgVU5VU0VEX1BBUkFNKGxvY2F0aW9uKTsKLSAgICBV
TlVTRURfUEFSQU0oZGF0YSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY09mZnNldCk7Ci0gICAgVU5V
U0VEX1BBUkFNKHNyY0xlbmd0aCk7Ci19Ci0KLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OnVuaWZvcm00aXYoR0NHTGludCBsb2NhdGlvbiwgY29uc3QgR0NHTGludCogZGF0YSwgR0NHTHVp
bnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCi17Ci0gICAgVU5VU0VEX1BBUkFNKGxv
Y2F0aW9uKTsKLSAgICBVTlVTRURfUEFSQU0oZGF0YSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY09m
ZnNldCk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY0xlbmd0aCk7Ci19Ci0KLXZvaWQgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXgyZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJv
b2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNl
dCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQotewotICAgIFVOVVNFRF9QQVJBTShsb2NhdGlvbik7Ci0g
ICAgVU5VU0VEX1BBUkFNKHRyYW5zcG9zZSk7Ci0gICAgVU5VU0VEX1BBUkFNKGRhdGEpOwotICAg
IFVOVVNFRF9QQVJBTShzcmNPZmZzZXQpOwotICAgIFVOVVNFRF9QQVJBTShzcmNMZW5ndGgpOwot
fQotCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4M2Z2KEdDR0xp
bnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiBkYXRh
LCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKLXsKLSAgICBVTlVTRURf
UEFSQU0obG9jYXRpb24pOwotICAgIFVOVVNFRF9QQVJBTSh0cmFuc3Bvc2UpOwotICAgIFVOVVNF
RF9QQVJBTShkYXRhKTsKLSAgICBVTlVTRURfUEFSQU0oc3JjT2Zmc2V0KTsKLSAgICBVTlVTRURf
UEFSQU0oc3JjTGVuZ3RoKTsKLX0KLQotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5p
Zm9ybU1hdHJpeDRmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNv
bnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5n
dGgpCi17Ci0gICAgVU5VU0VEX1BBUkFNKGxvY2F0aW9uKTsKLSAgICBVTlVTRURfUEFSQU0odHJh
bnNwb3NlKTsKLSAgICBVTlVTRURfUEFSQU0oZGF0YSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY09m
ZnNldCk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY0xlbmd0aCk7Ci19CiAKIHZvaWQgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OnJlYWRQaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXpl
aSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBl
LCBHQ0dMaW50cHRyIG9mZnNldCkKIHsK
</data>
<flag name="commit-queue"
          id="431833"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>414837</attachid>
            <date>2020-11-24 06:50:24 -0800</date>
            <delta_ts>2020-11-24 07:36:40 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219256-20201124165022.patch</filename>
            <type>text/plain</type>
            <size>180464</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwMTY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzIzYWI2YjRlNmM0NDFj
MDYzZWM1Mzg0YzZmOTA5NDdiZDFhNDY5ZC4uYWFhZmZkMjEwZWViMzliNDA4ZGEzNTYyNWY4MDFm
OTM1ZTg3ZDk2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyNiBAQAorMjAyMC0xMS0yMyAgS2lt
bW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIEdyYXBoaWNzQ29u
dGV4dEdMIHNob3VsZCBoYXZlIHJvYnVzdCBtdWx0aXZhbHVlIHNldHRlcnMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxOTI1NgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlcGxhY2UgYnVmU2l6ZSwgcG9p
bnRlciBwYWlycyBhbmQgcGxhaW4gcG9pbnRlcnMgaW4gR3JhcGhpY3NDb250ZXh0R0wKKyAgICAg
ICAgd2l0aCBHQ0dMU3Bhbi4gVGhpcyBtYWtlcyBpdCBlYXNpZXIgdG8gdW5kZXJzdGFuZCBob3cg
bWFueSB2YWx1ZXMgdGhlcmUKKyAgICAgICAgYXJlIHBvaW50ZWQgYnkgdGhlIHBvaW50ZXIuIFRo
aXMgaXMgbmVlZGVkIGZvciBzaW1wbGVyIGltcGxlbWVudGF0aW9uIG9mIEdQVQorICAgICAgICBw
cm9jZXNzIElQQywgd2hlcmUgdGhlIElQQyBsYXllciBkb2VzIG5vdCBuZWVkIHRvIGludGVycHJl
dCB0aGUgT3BlbkdMCisgICAgICAgIHByb3BlcnRpZXMuCisKKyAgICAgICAgSW4gV2ViR0wgaW1w
bGVtZW50YXRpb24sIGNoYW5nZXMgdGhlIHZhbGlkYXRpb24gZnVuY3Rpb25zIHRvIHJldHVybgor
ICAgICAgICB0aGUgbWVtb3J5IHJlZmVyZW5jZSB0aGF0IHdpbGwgYmUgdG91Y2hlZCBieSB0aGUg
dmFsaWQgZnVuY3Rpb24gY2FsbC4KKyAgICAgICAgT24gdmFsaWRhdGlvbiBmYWlsdXJlLCBudWxs
b3B0IHdpbGwgYmUgcmV0dXJuZWQuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBhIHJlZmFjdG9y
LgorCisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjppbnZhbGlkYXRlRnJhbWVi
dWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6aW52YWxp
ZGF0ZVN1YkZyYW1lYnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0Nv
bnRleHQ6OnVuaWZvcm0xdWl2KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0Nv
bnRleHQ6OnVuaWZvcm0ydWl2KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0Nv
bnRleHQ6OnVuaWZvcm0zdWl2KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0Nv
bnRleHQ6OnVuaWZvcm00dWl2KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0Nv
bnRleHQ6OnVuaWZvcm1NYXRyaXgyeDNmdik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5k
ZXJpbmdDb250ZXh0Ojp1bmlmb3JtTWF0cml4M3gyZnYpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
R0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybU1hdHJpeDJ4NGZ2KToKKyAgICAgICAgKFdlYkNv
cmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm1NYXRyaXg0eDJmdik6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtTWF0cml4M3g0ZnYpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybU1hdHJpeDR4
M2Z2KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnZlcnRleEF0
dHJpYkk0aXYpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dmVy
dGV4QXR0cmliSTR1aXYpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4
dDo6ZHJhd0J1ZmZlcnMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4
dDo6Y2xlYXJCdWZmZXJpdik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250
ZXh0OjpjbGVhckJ1ZmZlcnVpdik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdD
b250ZXh0OjpjbGVhckJ1ZmZlcmZ2KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmlu
Z0NvbnRleHQ6OnZhbGlkYXRlQ2xlYXJCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wy
UmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTFmdik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJS
ZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtMmZ2KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJl
bmRlcmluZ0NvbnRleHQ6OnVuaWZvcm0zZnYpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVu
ZGVyaW5nQ29udGV4dDo6dW5pZm9ybTRmdik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5k
ZXJpbmdDb250ZXh0Ojp1bmlmb3JtMWl2KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRl
cmluZ0NvbnRleHQ6OnVuaWZvcm0yaXYpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVy
aW5nQ29udGV4dDo6dW5pZm9ybTNpdik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJp
bmdDb250ZXh0Ojp1bmlmb3JtNGl2KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmlu
Z0NvbnRleHQ6OnVuaWZvcm1NYXRyaXgyZnYpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVu
ZGVyaW5nQ29udGV4dDo6dW5pZm9ybU1hdHJpeDNmdik6CisgICAgICAgIChXZWJDb3JlOjpXZWJH
TDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtTWF0cml4NGZ2KToKKyAgICAgICAgKiBodG1sL2Nh
bnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0Lmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2Vi
R0xEcmF3QnVmZmVycy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTERyYXdCdWZmZXJzOjpk
cmF3QnVmZmVyc1dFQkdMKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTEZyYW1lYnVmZmVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMRnJhbWVidWZmZXI6OmRyYXdCdWZmZXJzSWZO
ZWNlc3NhcnkpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6YnVm
ZmVyRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpi
dWZmZXJTdWJEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U6OnVuaWZvcm0xZnYpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZTo6dW5pZm9ybTJmdik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlOjp1bmlmb3JtM2Z2KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OnVuaWZvcm00ZnYpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6dW5pZm9ybTFpdik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlOjp1bmlmb3JtMml2KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2U6OnVuaWZvcm0zaXYpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybTRpdik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtTWF0cml4MmZ2KToKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm1NYXRyaXgzZnYpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybU1hdHJpeDRmdik6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZVVuaWZv
cm1NYXRyaXhQYXJhbWV0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OnZlcnRleEF0dHJpYmZ2SW1wbCk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6dmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycyk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvRXh0ZW5zaW9uc0dMLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0R0wuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc1R5cGVzR0wuaDoKKyAgICAgICAgKEdDR0xTcGFuOjpHQ0dMU3Bhbik6CisgICAgICAgIChz
dGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCk6CisgICAgICAgIChtYWtlR0NHTFNwYW4p
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpkcmF3QnVmZmVyc0VYVCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xF
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpidWZmZXJE
YXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpidWZmZXJT
dWJEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlm
b3JtMWZ2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlm
b3JtMmZ2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlm
b3JtM2Z2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlm
b3JtNGZ2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlm
b3JtMWl2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlm
b3JtMml2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlm
b3JtM2l2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlm
b3JtNGl2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlm
b3JtTWF0cml4MmZ2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
Ojp1bmlmb3JtTWF0cml4M2Z2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjp1bmlmb3JtTWF0cml4NGZ2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjp2ZXJ0ZXhBdHRyaWIxZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYjJmdik6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliM2Z2KToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2ZXJ0ZXhBdHRyaWI0ZnYpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmludmFsaWRhdGVGcmFtZWJ1ZmZlcik6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6aW52YWxpZGF0ZVN1
YkZyYW1lYnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
Ojp1bmlmb3JtMXVpdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6dW5pZm9ybTJ1aXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OnVuaWZvcm0zdWl2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjp1bmlmb3JtNHVpdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6dW5pZm9ybU1hdHJpeDJ4M2Z2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4M3gyZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXgyeDRmdik6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybU1hdHJpeDR4MmZ2KToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4M3g0ZnYp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRy
aXg0eDNmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVy
dGV4QXR0cmliSTRpdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6dmVydGV4QXR0cmliSTR1aXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmRyYXdCdWZmZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpjbGVhckJ1ZmZlcml2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpjbGVhckJ1ZmZlcnVpdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6Y2xlYXJCdWZmZXJmdik6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY3YvR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMQ1ZBTkdMRTo6aW5pdGlhbGl6ZVVWQ29udGV4dE9iamVjdHMpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFOjpjb3B5UGl4ZWxCdWZm
ZXJUb1RleHR1cmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGlj
c0NvbnRleHRHTE9wZW5HTC5oOgorCiAyMDIwLTExLTIyICBBbnR0aSBLb2l2aXN0byAgPGFudHRp
QGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXVtJbnRlZ3JhdGlvbl0gQ29udmVydCBzb21lIHJl
bWFpbmluZyBJbmxpbmVCb3ggYWNjZXNzIHRvIHVzZSBpbmxpbmUgaXRlcmF0b3IKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHAK
aW5kZXggNTViYzFmOGRiMjQ5ZDMzODIyZTc4ODljYTc4M2Y1YmVjMDI1YTI5OS4uZDM2OWI5ZmFh
M2M0ODBlM2M0ODQ0MDllZjA0NWFmZDg2YjVmODVkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTg5NSw3ICs4
OTUsNyBAQCB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmludmFsaWRhdGVGcmFtZWJ1ZmZl
cihHQ0dMZW51bSB0YXJnZXQsIGNvbnN0IFZlY3RvcgogICAgIFZlY3RvcjxHQ0dMZW51bT4gdHJh
bnNsYXRlZEF0dGFjaG1lbnRzID0gYXR0YWNobWVudHM7CiAgICAgaWYgKCFjaGVja0FuZFRyYW5z
bGF0ZUF0dGFjaG1lbnRzKCJpbnZhbGlkYXRlRnJhbWVidWZmZXIiLCB0YXJnZXQsIHRyYW5zbGF0
ZWRBdHRhY2htZW50cykpCiAgICAgICAgIHJldHVybjsKLSAgICBtX2NvbnRleHQtPmludmFsaWRh
dGVGcmFtZWJ1ZmZlcih0YXJnZXQsIHRyYW5zbGF0ZWRBdHRhY2htZW50cy5zaXplKCksIHRyYW5z
bGF0ZWRBdHRhY2htZW50cy5kYXRhKCkpOworICAgIG1fY29udGV4dC0+aW52YWxpZGF0ZUZyYW1l
YnVmZmVyKHRhcmdldCwgdHJhbnNsYXRlZEF0dGFjaG1lbnRzKTsKIH0KIAogdm9pZCBXZWJHTDJS
ZW5kZXJpbmdDb250ZXh0OjppbnZhbGlkYXRlU3ViRnJhbWVidWZmZXIoR0NHTGVudW0gdGFyZ2V0
LCBjb25zdCBWZWN0b3I8R0NHTGVudW0+JiBhdHRhY2htZW50cywgR0NHTGludCB4LCBHQ0dMaW50
IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkKQEAgLTkwNiw3ICs5MDYsNyBA
QCB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmludmFsaWRhdGVTdWJGcmFtZWJ1ZmZlcihH
Q0dMZW51bSB0YXJnZXQsIGNvbnN0IFZlYwogICAgIFZlY3RvcjxHQ0dMZW51bT4gdHJhbnNsYXRl
ZEF0dGFjaG1lbnRzID0gYXR0YWNobWVudHM7CiAgICAgaWYgKCFjaGVja0FuZFRyYW5zbGF0ZUF0
dGFjaG1lbnRzKCJpbnZhbGlkYXRlU3ViRnJhbWVidWZmZXIiLCB0YXJnZXQsIHRyYW5zbGF0ZWRB
dHRhY2htZW50cykpCiAgICAgICAgIHJldHVybjsKLSAgICBtX2NvbnRleHQtPmludmFsaWRhdGVT
dWJGcmFtZWJ1ZmZlcih0YXJnZXQsIHRyYW5zbGF0ZWRBdHRhY2htZW50cy5zaXplKCksIHRyYW5z
bGF0ZWRBdHRhY2htZW50cy5kYXRhKCksIHgsIHksIHdpZHRoLCBoZWlnaHQpOworICAgIG1fY29u
dGV4dC0+aW52YWxpZGF0ZVN1YkZyYW1lYnVmZmVyKHRhcmdldCwgdHJhbnNsYXRlZEF0dGFjaG1l
bnRzLCB4LCB5LCB3aWR0aCwgaGVpZ2h0KTsKIH0KIAogdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250
ZXh0OjpyZWFkQnVmZmVyKEdDR0xlbnVtIHNyYykKQEAgLTExMjksNyArMTEyOSw3IEBAIHZvaWQg
V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xp
bnQgbGV2ZWwsIEdDR0xpbnQKICAgICBpZiAoIXZhbGlkYXRlVGV4RnVuYygidGV4SW1hZ2UyRCIs
IFRleEltYWdlRnVuY3Rpb25UeXBlOjpUZXhJbWFnZSwgU291cmNlVW5wYWNrQnVmZmVyLCB0YXJn
ZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgMSwgYm9yZGVyLCBmb3Jt
YXQsIHR5cGUsIDAsIDAsIDApKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2NvbnRleHQtPmdl
dEV4dGVuc2lvbnMoKS50ZXhJbWFnZTJEUm9idXN0QU5HTEUodGFyZ2V0LCBsZXZlbCwgaW50ZXJu
YWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGJvcmRlciwgZm9ybWF0LCB0eXBlLCAwLCByZWludGVy
cHJldF9jYXN0PHZvaWQqPihvZmZzZXQpKTsKKyAgICBtX2NvbnRleHQtPnRleEltYWdlMkQodGFy
Z2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGJvcmRlciwgZm9ybWF0
LCB0eXBlLCBvZmZzZXQpOwogfQogCiBFeGNlcHRpb25Pcjx2b2lkPiBXZWJHTDJSZW5kZXJpbmdD
b250ZXh0Ojp0ZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGlu
dCBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dM
aW50IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBUZXhJbWFnZVNvdXJj
ZSYmIHNvdXJjZSkKQEAgLTExNzMsNyArMTE3Myw3IEBAIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29u
dGV4dDo6dGV4SW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQK
ICAgICBpZiAoIXZhbGlkYXRlVGV4RnVuYygidGV4SW1hZ2UzRCIsIFRleEltYWdlRnVuY3Rpb25U
eXBlOjpUZXhJbWFnZSwgU291cmNlVW5wYWNrQnVmZmVyLCB0YXJnZXQsIGxldmVsLCBpbnRlcm5h
bGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGJvcmRlciwgZm9ybWF0LCB0eXBlLCAwLCAw
LCAwKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCku
dGV4SW1hZ2UzRFJvYnVzdEFOR0xFKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0
aCwgaGVpZ2h0LCBkZXB0aCwgYm9yZGVyLCBmb3JtYXQsIHR5cGUsIDAsIHJlaW50ZXJwcmV0X2Nh
c3Q8dm9pZCo+KG9mZnNldCkpOworICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnRleElt
YWdlM0RSb2J1c3RBTkdMRSh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhl
aWdodCwgZGVwdGgsIGJvcmRlciwgZm9ybWF0LCB0eXBlLCAgc3RhdGljX2Nhc3Q8aW50cHRyX3Q+
KG9mZnNldCkpOwogfQogCiBFeGNlcHRpb25Pcjx2b2lkPiBXZWJHTDJSZW5kZXJpbmdDb250ZXh0
Ojp0ZXhJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCBpbnRl
cm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkg
ZGVwdGgsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIFRl
eEltYWdlU291cmNlJiYgc291cmNlKQpAQCAtMTI1OSw3ICsxMjU5LDcgQEAgdm9pZCBXZWJHTDJS
ZW5kZXJpbmdDb250ZXh0Ojp0ZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBs
ZXZlbCwgR0NHTGkKICAgICBpZiAoIXZhbGlkYXRlVGV4RnVuYygidGV4U3ViSW1hZ2UyRCIsIFRl
eEltYWdlRnVuY3Rpb25UeXBlOjpUZXhTdWJJbWFnZSwgU291cmNlVW5wYWNrQnVmZmVyLCB0YXJn
ZXQsIGxldmVsLCAwLCB3aWR0aCwgaGVpZ2h0LCAxLCAwLCBmb3JtYXQsIHR5cGUsIHhvZmZzZXQs
IHlvZmZzZXQsIDApKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2NvbnRleHQtPmdldEV4dGVu
c2lvbnMoKS50ZXhTdWJJbWFnZTJEUm9idXN0QU5HTEUodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwg
eW9mZnNldCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCAwLCByZWludGVycHJldF9jYXN0
PHZvaWQqPihvZmZzZXQpKTsKKyAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS50ZXhTdWJJ
bWFnZTJEUm9idXN0QU5HTEUodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgd2lkdGgs
IGhlaWdodCwgZm9ybWF0LCB0eXBlLCBvZmZzZXQpOwogfQogCiBFeGNlcHRpb25Pcjx2b2lkPiBX
ZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp0ZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NH
TGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3
aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBU
ZXhJbWFnZVNvdXJjZSYmIHNvdXJjZSkKQEAgLTEzMDMsNyArMTMwMyw3IEBAIHZvaWQgV2ViR0wy
UmVuZGVyaW5nQ29udGV4dDo6dGV4U3ViSW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQg
bGV2ZWwsIEdDR0xpCiAgICAgaWYgKCF2YWxpZGF0ZVRleEZ1bmMoInRleFN1YkltYWdlM0QiLCBU
ZXhJbWFnZUZ1bmN0aW9uVHlwZTo6VGV4U3ViSW1hZ2UsIFNvdXJjZVVucGFja0J1ZmZlciwgdGFy
Z2V0LCBsZXZlbCwgMCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIDAsIGZvcm1hdCwgdHlwZSwgeG9m
ZnNldCwgeW9mZnNldCwgem9mZnNldCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fY29udGV4
dC0+Z2V0RXh0ZW5zaW9ucygpLnRleFN1YkltYWdlM0RSb2J1c3RBTkdMRSh0YXJnZXQsIGxldmVs
LCB4b2Zmc2V0LCB5b2Zmc2V0LCB6b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgZm9ybWF0
LCB0eXBlLCAwLCByZWludGVycHJldF9jYXN0PHZvaWQqPihvZmZzZXQpKTsKKyAgICBtX2NvbnRl
eHQtPmdldEV4dGVuc2lvbnMoKS50ZXhTdWJJbWFnZTNEUm9idXN0QU5HTEUodGFyZ2V0LCBsZXZl
bCwgeG9mZnNldCwgeW9mZnNldCwgem9mZnNldCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGZvcm1h
dCwgdHlwZSwgc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KG9mZnNldCkpOwogfQogCiB2b2lkIFdlYkdM
MlJlbmRlcmluZ0NvbnRleHQ6OnRleFN1YkltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50
IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTGludCB6b2Zmc2V0
LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NH
TGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBSZWZQdHI8QXJyYXlCdWZmZXJWaWV3PiYmIHNy
Y0RhdGEsIEdDR0x1aW50IHNyY09mZnNldCkKQEAgLTEzNzIsNyArMTM3Miw3IEBAIHZvaWQgV2Vi
R0wyUmVuZGVyaW5nQ29udGV4dDo6Y29tcHJlc3NlZFRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMaW50IGxldmVsCiAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuY29tcHJlc3Nl
ZFRleEltYWdlMkRSb2J1c3RBTkdMRSgKICAgICAgICAgdGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxm
b3JtYXQsIHdpZHRoLAogICAgICAgICBoZWlnaHQsIGJvcmRlciwgaW1hZ2VTaXplLAotICAgICAg
ICAwLCByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihvZmZzZXQpKTsKKyAgICAgICAgc3RhdGlj
X2Nhc3Q8aW50cHRyX3Q+KG9mZnNldCkpOwogfQogCiB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRl
eHQ6OmNvbXByZXNzZWRUZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwg
R0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdo
dCwgR0NHTGludCBib3JkZXIsIEFycmF5QnVmZmVyVmlldyYgc3JjRGF0YSwgR0NHTHVpbnQgc3Jj
T2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGhPdmVycmlkZSkKQEAgLTEzOTMsNyArMTM5Myw3IEBA
IHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Y29tcHJlc3NlZFRleEltYWdlMkQoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsCiAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCku
Y29tcHJlc3NlZFRleEltYWdlMkRSb2J1c3RBTkdMRSgKICAgICAgICAgdGFyZ2V0LCBsZXZlbCwg
aW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsCiAgICAgICAgIGJvcmRlciwgc2xpY2UtPmJ5
dGVMZW5ndGgoKSwKLSAgICAgICAgc2xpY2UtPmJ5dGVMZW5ndGgoKSwgc2xpY2UtPmJhc2VBZGRy
ZXNzKCkpOworICAgICAgICBtYWtlR0NHTFNwYW4oc2xpY2UtPmJhc2VBZGRyZXNzKCksIHNsaWNl
LT5ieXRlTGVuZ3RoKCkpKTsKIH0KIAogdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojpjb21w
cmVzc2VkVGV4SW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVt
IGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xz
aXplaSBkZXB0aCwgR0NHTGludCBib3JkZXIsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xpbnQ2
NCBvZmZzZXQpCkBAIC0xNDExLDcgKzE0MTEsNyBAQCB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRl
eHQ6OmNvbXByZXNzZWRUZXhJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbAog
ICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmNvbXByZXNzZWRUZXhJbWFnZTNEUm9idXN0
QU5HTEUoCiAgICAgICAgIHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwKICAg
ICAgICAgaGVpZ2h0LCBkZXB0aCwgYm9yZGVyLCBpbWFnZVNpemUsCi0gICAgICAgIDAsIHJlaW50
ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KG9mZnNldCkpOworICAgICAgICBzdGF0aWNfY2FzdDxpbnRw
dHJfdD4ob2Zmc2V0KSk7CiB9CiAKIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Y29tcHJl
c3NlZFRleEltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBp
bnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6
ZWkgZGVwdGgsIEdDR0xpbnQgYm9yZGVyLCBBcnJheUJ1ZmZlclZpZXcmIHNyY0RhdGEsIEdDR0x1
aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoT3ZlcnJpZGUpCkBAIC0xNDMyLDcgKzE0
MzIsNyBAQCB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmNvbXByZXNzZWRUZXhJbWFnZTNE
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbAogICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5z
aW9ucygpLmNvbXByZXNzZWRUZXhJbWFnZTNEUm9idXN0QU5HTEUoCiAgICAgICAgIHRhcmdldCwg
bGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LAogICAgICAgICBkZXB0aCwgYm9y
ZGVyLCBzbGljZS0+Ynl0ZUxlbmd0aCgpLAotICAgICAgICBzbGljZS0+Ynl0ZUxlbmd0aCgpLCBz
bGljZS0+YmFzZUFkZHJlc3MoKSk7CisgICAgICAgIG1ha2VHQ0dMU3BhbihzbGljZS0+YmFzZUFk
ZHJlc3MoKSwgc2xpY2UtPmJ5dGVMZW5ndGgoKSkpOwogfQogCiB2b2lkIFdlYkdMMlJlbmRlcmlu
Z0NvbnRleHQ6OmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGlu
dCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0
aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBBcnJheUJ1ZmZlclZpZXcmIHNy
Y0RhdGEpCkBAIC0xNDYzLDcgKzE0NjMsNyBAQCB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6
OmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZQogICAg
IG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEUm9idXN0
QU5HTEUoCiAgICAgICAgIHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsCiAgICAgICAg
IHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgaW1hZ2VTaXplLAotICAgICAgICAwLCByZWludGVycHJl
dF9jYXN0PHVpbnQ4X3QqPihvZmZzZXQpKTsKKyAgICAgICAgb2Zmc2V0KTsKIH0KIAogdm9pZCBX
ZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojpjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0
YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBH
Q0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgQXJyYXlC
dWZmZXJWaWV3JiBzcmNEYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0
aE92ZXJyaWRlKQpAQCAtMTQ4NCw3ICsxNDg0LDcgQEAgdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250
ZXh0Ojpjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGUK
ICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5jb21wcmVzc2VkVGV4U3ViSW1hZ2UyRFJv
YnVzdEFOR0xFKAogICAgICAgICB0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LAogICAg
ICAgICB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHNsaWNlLT5ieXRlTGVuZ3RoKCksCi0gICAgICAg
IHNsaWNlLT5ieXRlTGVuZ3RoKCksIHNsaWNlLT5iYXNlQWRkcmVzcygpKTsKKyAgICAgICAgbWFr
ZUdDR0xTcGFuKHNsaWNlLT5iYXNlQWRkcmVzcygpLCBzbGljZS0+Ynl0ZUxlbmd0aCgpKSk7CiB9
CiAKIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Y29tcHJlc3NlZFRleFN1YkltYWdlM0Qo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQg
eW9mZnNldCwgR0NHTGludCB6b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWln
aHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMc2l6ZWkgaW1hZ2VTaXpl
LCBHQ0dMaW50NjQgb2Zmc2V0KQpAQCAtMTUwMiw3ICsxNTAyLDcgQEAgdm9pZCBXZWJHTDJSZW5k
ZXJpbmdDb250ZXh0Ojpjb21wcmVzc2VkVGV4U3ViSW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdD
R0xpbnQgbGUKICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5jb21wcmVzc2VkVGV4U3Vi
SW1hZ2UzRFJvYnVzdEFOR0xFKAogICAgICAgICB0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zm
c2V0LCB6b2Zmc2V0LAogICAgICAgICB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgZm9ybWF0LCBpbWFn
ZVNpemUsCi0gICAgICAgIDAsIHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KG9mZnNldCkpOwor
ICAgICAgICBzdGF0aWNfY2FzdDxpbnRwdHJfdD4ob2Zmc2V0KSk7CiB9CiAKIHZvaWQgV2ViR0wy
UmVuZGVyaW5nQ29udGV4dDo6Y29tcHJlc3NlZFRleFN1YkltYWdlM0QoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTGlu
dCB6b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBk
ZXB0aCwgR0NHTGVudW0gZm9ybWF0LCBBcnJheUJ1ZmZlclZpZXcmIHNyY0RhdGEsIEdDR0x1aW50
IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoT3ZlcnJpZGUpCkBAIC0xNTIzLDcgKzE1MjMs
NyBAQCB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmNvbXByZXNzZWRUZXhTdWJJbWFnZTNE
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZQogICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9u
cygpLmNvbXByZXNzZWRUZXhTdWJJbWFnZTNEUm9idXN0QU5HTEUoCiAgICAgICAgIHRhcmdldCwg
bGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHpvZmZzZXQsCiAgICAgICAgIHdpZHRoLCBoZWlnaHQs
IGRlcHRoLCBmb3JtYXQsIHNsaWNlLT5ieXRlTGVuZ3RoKCksCi0gICAgICAgIHNsaWNlLT5ieXRl
TGVuZ3RoKCksIHNsaWNlLT5iYXNlQWRkcmVzcygpKTsKKyAgICAgICAgbWFrZUdDR0xTcGFuKHNs
aWNlLT5iYXNlQWRkcmVzcygpLCBzbGljZS0+Ynl0ZUxlbmd0aCgpKSk7CiB9CiAKIEdDR0xpbnQg
V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0RnJhZ0RhdGFMb2NhdGlvbihXZWJHTFByb2dyYW0m
IHByb2dyYW0sIGNvbnN0IFN0cmluZyYgbmFtZSkKQEAgLTE1NjMsNzIgKzE1NjMsMTAyIEBAIHZv
aWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTR1aShXZWJHTFVuaWZvcm1Mb2NhdGlv
biogbG9jYXRpb24sIEdDR0x1aW50CiAKIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5p
Zm9ybTF1aXYoV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBVaW50MzJMaXN0JiYgdmFs
dWUsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQogewotICAgIGlmIChp
c0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMoInVu
aWZvcm0xdWl2IiwgbG9jYXRpb24sIHZhbHVlLCAxLCBzcmNPZmZzZXQsIHNyY0xlbmd0aCkpCisg
ICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSkKKyAgICAgICAgcmV0dXJuOworICAgIGF1
dG8gZGF0YSA9IHZhbGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMoInVuaWZvcm0xdWl2IiwgbG9jYXRp
b24sIHZhbHVlLCAxLCBzcmNPZmZzZXQsIHNyY0xlbmd0aCk7CisgICAgaWYgKCFkYXRhKQogICAg
ICAgICByZXR1cm47Ci0gICAgbV9jb250ZXh0LT51bmlmb3JtMXVpdihsb2NhdGlvbi0+bG9jYXRp
b24oKSwgdmFsdWUuZGF0YSgpLCBzcmNPZmZzZXQsIHNyY0xlbmd0aCA/IHNyY0xlbmd0aCA6ICh2
YWx1ZS5sZW5ndGgoKSAtIHNyY09mZnNldCkpOworICAgIG1fY29udGV4dC0+dW5pZm9ybTF1aXYo
bG9jYXRpb24tPmxvY2F0aW9uKCksIGRhdGEudmFsdWUoKSk7CiB9CiAKIHZvaWQgV2ViR0wyUmVu
ZGVyaW5nQ29udGV4dDo6dW5pZm9ybTJ1aXYoV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9u
LCBVaW50MzJMaXN0JiYgdmFsdWUsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVu
Z3RoKQogewotICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlVW5p
Zm9ybVBhcmFtZXRlcnMoInVuaWZvcm0ydWl2IiwgbG9jYXRpb24sIHZhbHVlLCAyLCBzcmNPZmZz
ZXQsIHNyY0xlbmd0aCkpCisgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSkKKyAgICAg
ICAgcmV0dXJuOworICAgIGF1dG8gZGF0YSA9IHZhbGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMoInVu
aWZvcm0ydWl2IiwgbG9jYXRpb24sIHZhbHVlLCAyLCBzcmNPZmZzZXQsIHNyY0xlbmd0aCk7Cisg
ICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm47Ci0gICAgbV9jb250ZXh0LT51bmlmb3JtMnVp
dihsb2NhdGlvbi0+bG9jYXRpb24oKSwgdmFsdWUuZGF0YSgpLCBzcmNPZmZzZXQsIChzcmNMZW5n
dGggPyBzcmNMZW5ndGggOiB2YWx1ZS5sZW5ndGgoKSAtIHNyY09mZnNldCkgLyAyKTsKKyAgICBt
X2NvbnRleHQtPnVuaWZvcm0ydWl2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCBkYXRhLnZhbHVlKCkp
OwogfQogCiB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm0zdWl2KFdlYkdMVW5p
Zm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgVWludDMyTGlzdCYmIHZhbHVlLCBHQ0dMdWludCBzcmNP
ZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKIHsKLSAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVu
ZGluZygpIHx8ICF2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKCJ1bmlmb3JtM3VpdiIsIGxvY2F0
aW9uLCB2YWx1ZSwgMywgc3JjT2Zmc2V0LCBzcmNMZW5ndGgpKQorICAgIGlmIChpc0NvbnRleHRM
b3N0T3JQZW5kaW5nKCkpCisgICAgICAgIHJldHVybjsKKyAgICBhdXRvIGRhdGEgPSB2YWxpZGF0
ZVVuaWZvcm1QYXJhbWV0ZXJzKCJ1bmlmb3JtM3VpdiIsIGxvY2F0aW9uLCB2YWx1ZSwgMywgc3Jj
T2Zmc2V0LCBzcmNMZW5ndGgpOworICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuOwotICAg
IG1fY29udGV4dC0+dW5pZm9ybTN1aXYobG9jYXRpb24tPmxvY2F0aW9uKCksIHZhbHVlLmRhdGEo
KSwgc3JjT2Zmc2V0LCAoc3JjTGVuZ3RoID8gc3JjTGVuZ3RoIDogdmFsdWUubGVuZ3RoKCkgLSBz
cmNPZmZzZXQpIC8gMyk7CisgICAgbV9jb250ZXh0LT51bmlmb3JtM3Vpdihsb2NhdGlvbi0+bG9j
YXRpb24oKSwgZGF0YS52YWx1ZSgpKTsKIH0KIAogdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0
Ojp1bmlmb3JtNHVpdihXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIFVpbnQzMkxpc3Qm
JiB2YWx1ZSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCiB7Ci0gICAg
aWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVy
cygidW5pZm9ybTR1aXYiLCBsb2NhdGlvbiwgdmFsdWUsIDQsIHNyY09mZnNldCwgc3JjTGVuZ3Ro
KSkKKyAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpKQorICAgICAgICByZXR1cm47Cisg
ICAgYXV0byBkYXRhID0gdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycygidW5pZm9ybTR1aXYiLCBs
b2NhdGlvbiwgdmFsdWUsIDQsIHNyY09mZnNldCwgc3JjTGVuZ3RoKTsKKyAgICBpZiAoIWRhdGEp
CiAgICAgICAgIHJldHVybjsKLSAgICBtX2NvbnRleHQtPnVuaWZvcm00dWl2KGxvY2F0aW9uLT5s
b2NhdGlvbigpLCB2YWx1ZS5kYXRhKCksIHNyY09mZnNldCwgKHNyY0xlbmd0aCA/IHNyY0xlbmd0
aCA6IHZhbHVlLmxlbmd0aCgpIC0gc3JjT2Zmc2V0KSAvIDQpOworICAgIG1fY29udGV4dC0+dW5p
Zm9ybTR1aXYobG9jYXRpb24tPmxvY2F0aW9uKCksIGRhdGEudmFsdWUoKSk7CiB9CiAKIHZvaWQg
V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybU1hdHJpeDJ4M2Z2KFdlYkdMVW5pZm9ybUxv
Y2F0aW9uKiBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBGbG9hdDMyTGlzdCYmIHYs
IEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQogewotICAgIGlmIChpc0Nv
bnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlVW5pZm9ybU1hdHJpeFBhcmFtZXRlcnMo
InVuaWZvcm1NYXRyaXgyeDNmdiIsIGxvY2F0aW9uLCB0cmFuc3Bvc2UsIHYsIDYsIHNyY09mZnNl
dCwgc3JjTGVuZ3RoKSkKKyAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpKQorICAgICAg
ICByZXR1cm47CisgICAgYXV0byBkYXRhID0gdmFsaWRhdGVVbmlmb3JtTWF0cml4UGFyYW1ldGVy
cygidW5pZm9ybU1hdHJpeDJ4M2Z2IiwgbG9jYXRpb24sIHRyYW5zcG9zZSwgdiwgNiwgc3JjT2Zm
c2V0LCBzcmNMZW5ndGgpOworICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuOwotICAgIG1f
Y29udGV4dC0+dW5pZm9ybU1hdHJpeDJ4M2Z2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCB0cmFuc3Bv
c2UsIHYuZGF0YSgpLCBzcmNPZmZzZXQsIChzcmNMZW5ndGggPyBzcmNMZW5ndGggOiB2Lmxlbmd0
aCgpIC0gc3JjT2Zmc2V0KSAvIDYpOworICAgIG1fY29udGV4dC0+dW5pZm9ybU1hdHJpeDJ4M2Z2
KGxvY2F0aW9uLT5sb2NhdGlvbigpLCB0cmFuc3Bvc2UsIGRhdGEudmFsdWUoKSk7CiB9CiAKIHZv
aWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybU1hdHJpeDN4MmZ2KFdlYkdMVW5pZm9y
bUxvY2F0aW9uKiBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBGbG9hdDMyTGlzdCYm
IHYsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQogewotICAgIGlmIChp
c0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlVW5pZm9ybU1hdHJpeFBhcmFtZXRl
cnMoInVuaWZvcm1NYXRyaXgzeDJmdiIsIGxvY2F0aW9uLCB0cmFuc3Bvc2UsIHYsIDYsIHNyY09m
ZnNldCwgc3JjTGVuZ3RoKSkKKyAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpKQorICAg
ICAgICByZXR1cm47CisgICAgYXV0byBkYXRhID0gdmFsaWRhdGVVbmlmb3JtTWF0cml4UGFyYW1l
dGVycygidW5pZm9ybU1hdHJpeDN4MmZ2IiwgbG9jYXRpb24sIHRyYW5zcG9zZSwgdiwgNiwgc3Jj
T2Zmc2V0LCBzcmNMZW5ndGgpOworICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuOwotICAg
IG1fY29udGV4dC0+dW5pZm9ybU1hdHJpeDN4MmZ2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCB0cmFu
c3Bvc2UsIHYuZGF0YSgpLCBzcmNPZmZzZXQsIChzcmNMZW5ndGggPyBzcmNMZW5ndGggOiB2Lmxl
bmd0aCgpIC0gc3JjT2Zmc2V0KSAvIDYpOworICAgIG1fY29udGV4dC0+dW5pZm9ybU1hdHJpeDN4
MmZ2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCB0cmFuc3Bvc2UsIGRhdGEudmFsdWUoKSk7CiB9CiAK
IHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybU1hdHJpeDJ4NGZ2KFdlYkdMVW5p
Zm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBGbG9hdDMyTGlz
dCYmIHYsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQogewotICAgIGlm
IChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlVW5pZm9ybU1hdHJpeFBhcmFt
ZXRlcnMoInVuaWZvcm1NYXRyaXgyeDRmdiIsIGxvY2F0aW9uLCB0cmFuc3Bvc2UsIHYsIDgsIHNy
Y09mZnNldCwgc3JjTGVuZ3RoKSkKKyAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpKQor
ICAgICAgICByZXR1cm47CisgICAgYXV0byBkYXRhID0gdmFsaWRhdGVVbmlmb3JtTWF0cml4UGFy
YW1ldGVycygidW5pZm9ybU1hdHJpeDJ4NGZ2IiwgbG9jYXRpb24sIHRyYW5zcG9zZSwgdiwgOCwg
c3JjT2Zmc2V0LCBzcmNMZW5ndGgpOworICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuOwot
ICAgIG1fY29udGV4dC0+dW5pZm9ybU1hdHJpeDJ4NGZ2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCB0
cmFuc3Bvc2UsIHYuZGF0YSgpLCBzcmNPZmZzZXQsIChzcmNMZW5ndGggPyBzcmNMZW5ndGggOiB2
Lmxlbmd0aCgpIC0gc3JjT2Zmc2V0KSAvIDgpOworICAgIG1fY29udGV4dC0+dW5pZm9ybU1hdHJp
eDJ4NGZ2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCB0cmFuc3Bvc2UsIGRhdGEudmFsdWUoKSk7CiB9
CiAKIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybU1hdHJpeDR4MmZ2KFdlYkdM
VW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBGbG9hdDMy
TGlzdCYmIHYsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQogewotICAg
IGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlVW5pZm9ybU1hdHJpeFBh
cmFtZXRlcnMoInVuaWZvcm1NYXRyaXg0eDJmdiIsIGxvY2F0aW9uLCB0cmFuc3Bvc2UsIHYsIDgs
IHNyY09mZnNldCwgc3JjTGVuZ3RoKSkKKyAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygp
KQogICAgICAgICByZXR1cm47Ci0gICAgbV9jb250ZXh0LT51bmlmb3JtTWF0cml4NHgyZnYobG9j
YXRpb24tPmxvY2F0aW9uKCksIHRyYW5zcG9zZSwgdi5kYXRhKCksIHNyY09mZnNldCwgKHNyY0xl
bmd0aCA/IHNyY0xlbmd0aCA6IHYubGVuZ3RoKCkgLSBzcmNPZmZzZXQpIC8gOCk7CisgICAgYXV0
byBkYXRhID0gdmFsaWRhdGVVbmlmb3JtTWF0cml4UGFyYW1ldGVycygidW5pZm9ybU1hdHJpeDR4
MmZ2IiwgbG9jYXRpb24sIHRyYW5zcG9zZSwgdiwgOCwgc3JjT2Zmc2V0LCBzcmNMZW5ndGgpOwor
ICAgIGlmICghZGF0YSkKKyAgICAgICAgcmV0dXJuOworICAgIG1fY29udGV4dC0+dW5pZm9ybU1h
dHJpeDR4MmZ2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCB0cmFuc3Bvc2UsIGRhdGEudmFsdWUoKSk7
CiB9CiAKIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybU1hdHJpeDN4NGZ2KFdl
YkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBGbG9h
dDMyTGlzdCYmIHYsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQogewot
ICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlVW5pZm9ybU1hdHJp
eFBhcmFtZXRlcnMoInVuaWZvcm1NYXRyaXgzeDRmdiIsIGxvY2F0aW9uLCB0cmFuc3Bvc2UsIHYs
IDEyLCBzcmNPZmZzZXQsIHNyY0xlbmd0aCkpCisgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRp
bmcoKSkKICAgICAgICAgcmV0dXJuOwotICAgIG1fY29udGV4dC0+dW5pZm9ybU1hdHJpeDN4NGZ2
KGxvY2F0aW9uLT5sb2NhdGlvbigpLCB0cmFuc3Bvc2UsIHYuZGF0YSgpLCBzcmNPZmZzZXQsIChz
cmNMZW5ndGggPyBzcmNMZW5ndGggOiB2Lmxlbmd0aCgpIC0gc3JjT2Zmc2V0KSAvIDEyKTsKKyAg
ICBhdXRvIGRhdGEgPSB2YWxpZGF0ZVVuaWZvcm1NYXRyaXhQYXJhbWV0ZXJzKCJ1bmlmb3JtTWF0
cml4M3g0ZnYiLCBsb2NhdGlvbiwgdHJhbnNwb3NlLCB2LCAxMiwgc3JjT2Zmc2V0LCBzcmNMZW5n
dGgpOworICAgIGlmICghZGF0YSkKKyAgICAgICAgcmV0dXJuOworICAgIG1fY29udGV4dC0+dW5p
Zm9ybU1hdHJpeDN4NGZ2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCB0cmFuc3Bvc2UsIGRhdGEudmFs
dWUoKSk7CiB9CiAKIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybU1hdHJpeDR4
M2Z2KFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3Nl
LCBGbG9hdDMyTGlzdCYmIHYsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3Ro
KQogewotICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlVW5pZm9y
bU1hdHJpeFBhcmFtZXRlcnMoInVuaWZvcm1NYXRyaXg0eDNmdiIsIGxvY2F0aW9uLCB0cmFuc3Bv
c2UsIHYsIDEyLCBzcmNPZmZzZXQsIHNyY0xlbmd0aCkpCisgICAgaWYgKGlzQ29udGV4dExvc3RP
clBlbmRpbmcoKSkKICAgICAgICAgcmV0dXJuOwotICAgIG1fY29udGV4dC0+dW5pZm9ybU1hdHJp
eDR4M2Z2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCB0cmFuc3Bvc2UsIHYuZGF0YSgpLCBzcmNPZmZz
ZXQsIChzcmNMZW5ndGggPyBzcmNMZW5ndGggOiB2Lmxlbmd0aCgpIC0gc3JjT2Zmc2V0KSAvIDEy
KTsKKyAgICBhdXRvIGRhdGEgPSB2YWxpZGF0ZVVuaWZvcm1NYXRyaXhQYXJhbWV0ZXJzKCJ1bmlm
b3JtTWF0cml4NHgzZnYiLCBsb2NhdGlvbiwgdHJhbnNwb3NlLCB2LCAxMiwgc3JjT2Zmc2V0LCBz
cmNMZW5ndGgpOworICAgIGlmICghZGF0YSkKKyAgICAgICAgcmV0dXJuOworICAgIG1fY29udGV4
dC0+dW5pZm9ybU1hdHJpeDR4M2Z2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCB0cmFuc3Bvc2UsIGRh
dGEudmFsdWUoKSk7CiB9CiAKIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dmVydGV4QXR0
cmliSTRpKEdDR0x1aW50IGluZGV4LCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTGludCB6LCBH
Q0dMaW50IHcpCkBAIC0xNjY0LDcgKzE2OTQsNyBAQCB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRl
eHQ6OnZlcnRleEF0dHJpYkk0aXYoR0NHTHVpbnQgaW5kZXgsIEludDMyTGlzdCYmIGxpc3QpCiAg
ICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX1ZBTFVF
LCAidmVydGV4QXR0cmliSTRpdiIsICJpbmRleCBvdXQgb2YgcmFuZ2UiKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KLSAgICBtX2NvbnRleHQtPnZlcnRleEF0dHJpYkk0aXYoaW5kZXgsIGRhdGEp
OworICAgIG1fY29udGV4dC0+dmVydGV4QXR0cmliSTRpdihpbmRleCwgbWFrZUdDR0xTcGFuPDQ+
KGRhdGEpKTsKICAgICBtX3ZlcnRleEF0dHJpYlZhbHVlW2luZGV4XS50eXBlID0gR3JhcGhpY3ND
b250ZXh0R0w6OklOVDsKICAgICBtZW1jcHkobV92ZXJ0ZXhBdHRyaWJWYWx1ZVtpbmRleF0uaVZh
bHVlLCBkYXRhLCBzaXplb2YobV92ZXJ0ZXhBdHRyaWJWYWx1ZVtpbmRleF0uaVZhbHVlKSk7CiB9
CkBAIC0xNzAyLDcgKzE3MzIsNyBAQCB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnZlcnRl
eEF0dHJpYkk0dWl2KEdDR0x1aW50IGluZGV4LCBVaW50MzJMaXN0JiYgbGlzdAogICAgICAgICBz
eW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9WQUxVRSwgInZlcnRl
eEF0dHJpYkk0dWl2IiwgImluZGV4IG91dCBvZiByYW5nZSIpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQotICAgIG1fY29udGV4dC0+dmVydGV4QXR0cmliSTR1aXYoaW5kZXgsIGRhdGEpOworICAg
IG1fY29udGV4dC0+dmVydGV4QXR0cmliSTR1aXYoaW5kZXgsIG1ha2VHQ0dMU3Bhbjw0PihkYXRh
KSk7CiAgICAgbV92ZXJ0ZXhBdHRyaWJWYWx1ZVtpbmRleF0udHlwZSA9IEdyYXBoaWNzQ29udGV4
dEdMOjpVTlNJR05FRF9JTlQ7CiAgICAgbWVtY3B5KG1fdmVydGV4QXR0cmliVmFsdWVbaW5kZXhd
LnVpVmFsdWUsIGRhdGEsIHNpemVvZihtX3ZlcnRleEF0dHJpYlZhbHVlW2luZGV4XS51aVZhbHVl
KSk7CiB9CkBAIC0xNzYzLDggKzE3OTMsOCBAQCB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6
OmRyYXdCdWZmZXJzKGNvbnN0IFZlY3RvcjxHQ0dMZW51bT4mIGJ1ZmZlcnMpCiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgLy8gQmVjYXVzZSB0aGUgYmFja2J1ZmZlciBp
cyBzaW11bGF0ZWQgb24gYWxsIGN1cnJlbnQgV2ViS2l0IHBvcnRzLCB3ZSBuZWVkIHRvIGNoYW5n
ZSBCQUNLIHRvIENPTE9SX0FUVEFDSE1FTlQwLgotICAgICAgICBHQ0dMZW51bSB2YWx1ZSA9IChi
dWZzWzBdID09IEdyYXBoaWNzQ29udGV4dEdMOjpCQUNLKSA/IEdyYXBoaWNzQ29udGV4dEdMOjpD
T0xPUl9BVFRBQ0hNRU5UMCA6IEdyYXBoaWNzQ29udGV4dEdMOjpOT05FOwotICAgICAgICBtX2Nv
bnRleHQtPmRyYXdCdWZmZXJzKDEsICZ2YWx1ZSk7CisgICAgICAgIEdDR0xlbnVtIHZhbHVlWzFd
IHsgKGJ1ZnNbMF0gPT0gR3JhcGhpY3NDb250ZXh0R0w6OkJBQ0spID8gR3JhcGhpY3NDb250ZXh0
R0w6OkNPTE9SX0FUVEFDSE1FTlQwIDogR3JhcGhpY3NDb250ZXh0R0w6Ok5PTkUgfTsKKyAgICAg
ICAgbV9jb250ZXh0LT5kcmF3QnVmZmVycyh2YWx1ZSk7CiAgICAgICAgIHNldEJhY2tEcmF3QnVm
ZmVyKGJ1ZnNbMF0pOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGlmIChuID4gZ2V0TWF4RHJhd0J1
ZmZlcnMoKSkgewpAQCAtMTc4MywyOCArMTgxMywzNiBAQCB2b2lkIFdlYkdMMlJlbmRlcmluZ0Nv
bnRleHQ6OmRyYXdCdWZmZXJzKGNvbnN0IFZlY3RvcjxHQ0dMZW51bT4mIGJ1ZmZlcnMpCiAKIHZv
aWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Y2xlYXJCdWZmZXJpdihHQ0dMZW51bSBidWZmZXIs
IEdDR0xpbnQgZHJhd2J1ZmZlciwgSW50MzJMaXN0JiYgdmFsdWVzLCBHQ0dMdWludCBzcmNPZmZz
ZXQpCiB7Ci0gICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVDbGVh
ckJ1ZmZlcigiY2xlYXJCdWZmZXJpdiIsIGJ1ZmZlciwgdmFsdWVzLmxlbmd0aCgpLCBzcmNPZmZz
ZXQpKQorICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCisgICAgICAgIHJldHVybjsK
KyAgICBhdXRvIGRhdGEgPSB2YWxpZGF0ZUNsZWFyQnVmZmVyKCJjbGVhckJ1ZmZlcml2IiwgYnVm
ZmVyLCB2YWx1ZXMsIHNyY09mZnNldCk7CisgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm47
CiAKLSAgICBtX2NvbnRleHQtPmNsZWFyQnVmZmVyaXYoYnVmZmVyLCBkcmF3YnVmZmVyLCB2YWx1
ZXMuZGF0YSgpLCBzcmNPZmZzZXQpOworICAgIG1fY29udGV4dC0+Y2xlYXJCdWZmZXJpdihidWZm
ZXIsIGRyYXdidWZmZXIsIGRhdGEudmFsdWUoKSk7CiAgICAgdXBkYXRlQnVmZmVyc1RvQXV0b0Ns
ZWFyKENsZWFyQnVmZmVyQ2FsbGVyOjpDbGVhckJ1ZmZlcml2LCBidWZmZXIsIGRyYXdidWZmZXIp
OwogfQogCiB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmNsZWFyQnVmZmVydWl2KEdDR0xl
bnVtIGJ1ZmZlciwgR0NHTGludCBkcmF3YnVmZmVyLCBVaW50MzJMaXN0JiYgdmFsdWVzLCBHQ0dM
dWludCBzcmNPZmZzZXQpCiB7Ci0gICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAh
dmFsaWRhdGVDbGVhckJ1ZmZlcigiY2xlYXJCdWZmZXJ1aXYiLCBidWZmZXIsIHZhbHVlcy5sZW5n
dGgoKSwgc3JjT2Zmc2V0KSkKKyAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpKQogICAg
ICAgICByZXR1cm47Ci0KLSAgICBtX2NvbnRleHQtPmNsZWFyQnVmZmVydWl2KGJ1ZmZlciwgZHJh
d2J1ZmZlciwgdmFsdWVzLmRhdGEoKSwgc3JjT2Zmc2V0KTsKKyAgICBhdXRvIGRhdGEgPSB2YWxp
ZGF0ZUNsZWFyQnVmZmVyKCJjbGVhckJ1ZmZlcnVpdiIsIGJ1ZmZlciwgdmFsdWVzLCBzcmNPZmZz
ZXQpOworICAgIGlmICghZGF0YSkKKyAgICAgICAgcmV0dXJuOworICAgIG1fY29udGV4dC0+Y2xl
YXJCdWZmZXJ1aXYoYnVmZmVyLCBkcmF3YnVmZmVyLCBkYXRhLnZhbHVlKCkpOwogICAgIHVwZGF0
ZUJ1ZmZlcnNUb0F1dG9DbGVhcihDbGVhckJ1ZmZlckNhbGxlcjo6Q2xlYXJCdWZmZXJ1aXYsIGJ1
ZmZlciwgZHJhd2J1ZmZlcik7CiB9CiAKIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Y2xl
YXJCdWZmZXJmdihHQ0dMZW51bSBidWZmZXIsIEdDR0xpbnQgZHJhd2J1ZmZlciwgRmxvYXQzMkxp
c3QmJiB2YWx1ZXMsIEdDR0x1aW50IHNyY09mZnNldCkKIHsKLSAgICBpZiAoaXNDb250ZXh0TG9z
dE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZUNsZWFyQnVmZmVyKCJjbGVhckJ1ZmZlcmZ2IiwgYnVm
ZmVyLCB2YWx1ZXMubGVuZ3RoKCksIHNyY09mZnNldCkpCisgICAgaWYgKGlzQ29udGV4dExvc3RP
clBlbmRpbmcoKSkKKyAgICAgICAgcmV0dXJuOworICAgIGF1dG8gZGF0YSA9IHZhbGlkYXRlQ2xl
YXJCdWZmZXIoImNsZWFyQnVmZmVyZnYiLCBidWZmZXIsIHZhbHVlcywgc3JjT2Zmc2V0KTsKKyAg
ICBpZiAoIWRhdGEpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fY29udGV4dC0+Y2xlYXJCdWZm
ZXJmdihidWZmZXIsIGRyYXdidWZmZXIsIHZhbHVlcy5kYXRhKCksIHNyY09mZnNldCk7CisgICAg
bV9jb250ZXh0LT5jbGVhckJ1ZmZlcmZ2KGJ1ZmZlciwgZHJhd2J1ZmZlciwgZGF0YS52YWx1ZSgp
KTsKICAgICAvLyBjbGVhckJ1ZmZlcml2IGFuZCBjbGVhckJ1ZmZlcnVpdiB3aWxsIGN1cnJlbnRs
eSBnZW5lcmF0ZSBhbiBlcnJvcgogICAgIC8vIGlmIHRoZXkncmUgY2FsbGVkIGFnYWluc3QgdGhl
IGRlZmF1bHQgYmFjayBidWZmZXIuIElmIHN1cHBvcnQgZm9yCiAgICAgLy8gZXh0ZW5kZWQgY2Fu
dmFzIGNvbG9yIHNwYWNlcyBpcyBhZGRlZCwgdGhpcyBjYWxsIG1pZ2h0IG5lZWQgdG8gYmUKQEAg
LTMzNzIsMTEwICszNDEwLDE0NCBAQCBib29sIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnZhbGlk
YXRlQ2FwYWJpbGl0eShjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIEdDR0xlbgogICAgIH0KIH0K
IAotYm9vbCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp2YWxpZGF0ZUNsZWFyQnVmZmVyKGNvbnN0
IGNoYXIqIGZ1bmN0aW9uTmFtZSwgR0NHTGVudW0gYnVmZmVyLCBzaXplX3Qgc2l6ZSwgR0NHTHVp
bnQgc3JjT2Zmc2V0KQordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVHlwZWRBcnJheVR5
cGU+CitPcHRpb25hbDxHQ0dMU3Bhbjxjb25zdCBUPj4gV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6
dmFsaWRhdGVDbGVhckJ1ZmZlcihjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIEdDR0xlbnVtIGJ1
ZmZlciwgVHlwZWRMaXN0PFR5cGVkQXJyYXlUeXBlLCBUPiYgdmFsdWVzLCBHQ0dMdWludCBzcmNP
ZmZzZXQpCiB7Ci0gICAgQ2hlY2tlZDxHQ0dMc2l6ZWksIFJlY29yZE92ZXJmbG93PiBjaGVja2Vk
U2l6ZShzaXplKTsKKyAgICBDaGVja2VkPEdDR0xzaXplaSwgUmVjb3JkT3ZlcmZsb3c+IGNoZWNr
ZWRTaXplKHZhbHVlcy5sZW5ndGgoKSk7CiAgICAgY2hlY2tlZFNpemUgLT0gc3JjT2Zmc2V0Owog
ICAgIGlmIChjaGVja2VkU2l6ZS5oYXNPdmVyZmxvd2VkKCkpIHsKICAgICAgICAgc3ludGhlc2l6
ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfVkFMVUUsIGZ1bmN0aW9uTmFtZSwg
ImludmFsaWQgYXJyYXkgc2l6ZSAvIHNyY09mZnNldCIpOwotICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgIHJldHVybiB7IH07CiAgICAgfQogICAgIHN3aXRjaCAoYnVmZmVyKSB7CiAgICAg
Y2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09MT1I6CiAgICAgICAgIGlmIChjaGVja2VkU2l6ZS51
bnNhZmVHZXQoKSA8IDQpIHsKICAgICAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNz
Q29udGV4dEdMOjpJTlZBTElEX1ZBTFVFLCBmdW5jdGlvbk5hbWUsICJpbnZhbGlkIGFycmF5IHNp
emUgLyBzcmNPZmZzZXQiKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAg
IHJldHVybiB7IH07CiAgICAgICAgIH0KLSAgICAgICAgYnJlYWs7CisgICAgICAgIHJldHVybiBt
YWtlR0NHTFNwYW4odmFsdWVzLmRhdGEoKSArIHNyY09mZnNldCwgNCk7CiAgICAgY2FzZSBHcmFw
aGljc0NvbnRleHRHTDo6REVQVEg6CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6U1RFTkNJ
TDoKICAgICAgICAgaWYgKGNoZWNrZWRTaXplLnVuc2FmZUdldCgpIDwgMSkgewogICAgICAgICAg
ICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfVkFMVUUsIGZ1
bmN0aW9uTmFtZSwgImludmFsaWQgYXJyYXkgc2l6ZSAvIHNyY09mZnNldCIpOwotICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgcmV0dXJuIHsgfTsKICAgICAgICAgfQotICAg
ICAgICBicmVhazsKKyAgICAgICAgcmV0dXJuIG1ha2VHQ0dMU3Bhbih2YWx1ZXMuZGF0YSgpICsg
c3JjT2Zmc2V0LCAxKTsKKwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9y
KEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX0VOVU0sIGZ1bmN0aW9uTmFtZSwgImludmFsaWQg
YnVmZmVyIik7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIHsgfTsKICAg
ICB9Ci0gICAgcmV0dXJuIHRydWU7CiB9CiAKIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6
dW5pZm9ybTFmdihXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEZsb2F0MzJMaXN0IGRh
dGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQogewotICAgIGlmIChp
c0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMoInVu
aWZvcm0xZnYiLCBsb2NhdGlvbiwgZGF0YSwgMSwgc3JjT2Zmc2V0LCBzcmNMZW5ndGgpKQorICAg
IGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBtX2Nv
bnRleHQtPnVuaWZvcm0xZnYobG9jYXRpb24tPmxvY2F0aW9uKCksIGRhdGEuZGF0YSgpLCBzcmNP
ZmZzZXQsIHNyY0xlbmd0aCA/IHNyY0xlbmd0aCA6IChkYXRhLmxlbmd0aCgpIC0gc3JjT2Zmc2V0
KSk7CisgICAgYXV0byByZXN1bHQgPSB2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKCJ1bmlmb3Jt
MWZ2IiwgbG9jYXRpb24sIGRhdGEsIDEsIHNyY09mZnNldCwgc3JjTGVuZ3RoKTsKKyAgICBpZiAo
IXJlc3VsdCkKKyAgICAgICAgcmV0dXJuOworICAgIG1fY29udGV4dC0+dW5pZm9ybTFmdihsb2Nh
dGlvbi0+bG9jYXRpb24oKSwgcmVzdWx0LnZhbHVlKCkpOwogfQogCiB2b2lkIFdlYkdMMlJlbmRl
cmluZ0NvbnRleHQ6OnVuaWZvcm0yZnYoV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBG
bG9hdDMyTGlzdCBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkK
IHsKLSAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVVuaWZvcm1Q
YXJhbWV0ZXJzKCJ1bmlmb3JtMmZ2IiwgbG9jYXRpb24sIGRhdGEsIDIsIHNyY09mZnNldCwgc3Jj
TGVuZ3RoKSkKKyAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpKQogICAgICAgICByZXR1
cm47Ci0gICAgbV9jb250ZXh0LT51bmlmb3JtMmZ2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCBkYXRh
LmRhdGEoKSwgc3JjT2Zmc2V0LCAoc3JjTGVuZ3RoID8gc3JjTGVuZ3RoIDogZGF0YS5sZW5ndGgo
KSAtIHNyY09mZnNldCkgLyAyKTsKKyAgICBhdXRvIHJlc3VsdCA9IHZhbGlkYXRlVW5pZm9ybVBh
cmFtZXRlcnMoInVuaWZvcm0yZnYiLCBsb2NhdGlvbiwgZGF0YSwgMiwgc3JjT2Zmc2V0LCBzcmNM
ZW5ndGgpOworICAgIGlmICghcmVzdWx0KQorICAgICAgICByZXR1cm47CisgICAgbV9jb250ZXh0
LT51bmlmb3JtMmZ2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCByZXN1bHQudmFsdWUoKSk7CiB9CiAK
IHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTNmdihXZWJHTFVuaWZvcm1Mb2Nh
dGlvbiogbG9jYXRpb24sIEZsb2F0MzJMaXN0IGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NH
THVpbnQgc3JjTGVuZ3RoKQogewotICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwg
IXZhbGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMoInVuaWZvcm0zZnYiLCBsb2NhdGlvbiwgZGF0YSwg
Mywgc3JjT2Zmc2V0LCBzcmNMZW5ndGgpKQorICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5n
KCkpCiAgICAgICAgIHJldHVybjsKLSAgICBtX2NvbnRleHQtPnVuaWZvcm0zZnYobG9jYXRpb24t
PmxvY2F0aW9uKCksIGRhdGEuZGF0YSgpLCBzcmNPZmZzZXQsIChzcmNMZW5ndGggPyBzcmNMZW5n
dGggOiBkYXRhLmxlbmd0aCgpIC0gc3JjT2Zmc2V0KSAvIDMpOworICAgIGF1dG8gcmVzdWx0ID0g
dmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycygidW5pZm9ybTNmdiIsIGxvY2F0aW9uLCBkYXRhLCAz
LCBzcmNPZmZzZXQsIHNyY0xlbmd0aCk7CisgICAgaWYgKCFyZXN1bHQpCisgICAgICAgIHJldHVy
bjsKKyAgICBtX2NvbnRleHQtPnVuaWZvcm0zZnYobG9jYXRpb24tPmxvY2F0aW9uKCksIHJlc3Vs
dC52YWx1ZSgpKTsKIH0KIAogdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtNGZ2
KFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgRmxvYXQzMkxpc3QgZGF0YSwgR0NHTHVp
bnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCiB7Ci0gICAgaWYgKGlzQ29udGV4dExv
c3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycygidW5pZm9ybTRmdiIs
IGxvY2F0aW9uLCBkYXRhLCA0LCBzcmNPZmZzZXQsIHNyY0xlbmd0aCkpCisgICAgaWYgKGlzQ29u
dGV4dExvc3RPclBlbmRpbmcoKSkKKyAgICAgICAgcmV0dXJuOworICAgIGF1dG8gcmVzdWx0ID0g
dmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycygidW5pZm9ybTRmdiIsIGxvY2F0aW9uLCBkYXRhLCA0
LCBzcmNPZmZzZXQsIHNyY0xlbmd0aCk7CisgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgIHJldHVy
bjsKLSAgICBtX2NvbnRleHQtPnVuaWZvcm00ZnYobG9jYXRpb24tPmxvY2F0aW9uKCksIGRhdGEu
ZGF0YSgpLCBzcmNPZmZzZXQsIChzcmNMZW5ndGggPyBzcmNMZW5ndGggOiBkYXRhLmxlbmd0aCgp
IC0gc3JjT2Zmc2V0KSAvIDQpOworICAgIG1fY29udGV4dC0+dW5pZm9ybTRmdihsb2NhdGlvbi0+
bG9jYXRpb24oKSwgcmVzdWx0LnZhbHVlKCkpOwogfQogCiB2b2lkIFdlYkdMMlJlbmRlcmluZ0Nv
bnRleHQ6OnVuaWZvcm0xaXYoV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBJbnQzMkxp
c3QgZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCiB7Ci0gICAg
aWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVy
cygidW5pZm9ybTFpdiIsIGxvY2F0aW9uLCBkYXRhLCAxLCBzcmNPZmZzZXQsIHNyY0xlbmd0aCkp
CisgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSkKKyAgICAgICAgcmV0dXJuOworICAg
IGF1dG8gcmVzdWx0ID0gdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycygidW5pZm9ybTFpdiIsIGxv
Y2F0aW9uLCBkYXRhLCAxLCBzcmNPZmZzZXQsIHNyY0xlbmd0aCk7CisgICAgaWYgKCFyZXN1bHQp
CiAgICAgICAgIHJldHVybjsKLSAgICBtX2NvbnRleHQtPnVuaWZvcm0xaXYobG9jYXRpb24tPmxv
Y2F0aW9uKCksIGRhdGEuZGF0YSgpLCBzcmNPZmZzZXQsIHNyY0xlbmd0aCA/IHNyY0xlbmd0aCA6
IChkYXRhLmxlbmd0aCgpIC0gc3JjT2Zmc2V0KSk7CisgICAgbV9jb250ZXh0LT51bmlmb3JtMWl2
KGxvY2F0aW9uLT5sb2NhdGlvbigpLCByZXN1bHQudmFsdWUoKSk7CiB9CiAKIHZvaWQgV2ViR0wy
UmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTJpdihXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRp
b24sIEludDMyTGlzdCBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0
aCkKIHsKLSAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVVuaWZv
cm1QYXJhbWV0ZXJzKCJ1bmlmb3JtMml2IiwgbG9jYXRpb24sIGRhdGEsIDIsIHNyY09mZnNldCwg
c3JjTGVuZ3RoKSkKKyAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpKQorICAgICAgICBy
ZXR1cm47CisgICAgYXV0byByZXN1bHQgPSB2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKCJ1bmlm
b3JtMml2IiwgbG9jYXRpb24sIGRhdGEsIDIsIHNyY09mZnNldCwgc3JjTGVuZ3RoKTsKKyAgICBp
ZiAoIXJlc3VsdCkKICAgICAgICAgcmV0dXJuOwotICAgIG1fY29udGV4dC0+dW5pZm9ybTJpdihs
b2NhdGlvbi0+bG9jYXRpb24oKSwgZGF0YS5kYXRhKCksIHNyY09mZnNldCwgKHNyY0xlbmd0aCA/
IHNyY0xlbmd0aCA6IGRhdGEubGVuZ3RoKCkgLSBzcmNPZmZzZXQpIC8gMik7CisgICAgbV9jb250
ZXh0LT51bmlmb3JtMml2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCByZXN1bHQudmFsdWUoKSk7CiB9
CiAKIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTNpdihXZWJHTFVuaWZvcm1M
b2NhdGlvbiogbG9jYXRpb24sIEludDMyTGlzdCBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdD
R0x1aW50IHNyY0xlbmd0aCkKIHsKLSAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8
ICF2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKCJ1bmlmb3JtM2l2IiwgbG9jYXRpb24sIGRhdGEs
IDMsIHNyY09mZnNldCwgc3JjTGVuZ3RoKSkKKyAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGlu
ZygpKQorICAgICAgICByZXR1cm47CisgICAgYXV0byByZXN1bHQgPSB2YWxpZGF0ZVVuaWZvcm1Q
YXJhbWV0ZXJzKCJ1bmlmb3JtM2l2IiwgbG9jYXRpb24sIGRhdGEsIDMsIHNyY09mZnNldCwgc3Jj
TGVuZ3RoKTsKKyAgICBpZiAoIXJlc3VsdCkKICAgICAgICAgcmV0dXJuOwotICAgIG1fY29udGV4
dC0+dW5pZm9ybTNpdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgZGF0YS5kYXRhKCksIHNyY09mZnNl
dCwgKHNyY0xlbmd0aCA/IHNyY0xlbmd0aCA6IGRhdGEubGVuZ3RoKCkgLSBzcmNPZmZzZXQpIC8g
Myk7CisgICAgbV9jb250ZXh0LT51bmlmb3JtM2l2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCByZXN1
bHQudmFsdWUoKSk7CiB9CiAKIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTRp
dihXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEludDMyTGlzdCBkYXRhLCBHQ0dMdWlu
dCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKIHsKLSAgICBpZiAoaXNDb250ZXh0TG9z
dE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKCJ1bmlmb3JtNGl2Iiwg
bG9jYXRpb24sIGRhdGEsIDQsIHNyY09mZnNldCwgc3JjTGVuZ3RoKSkKKyAgICBpZiAoaXNDb250
ZXh0TG9zdE9yUGVuZGluZygpKQogICAgICAgICByZXR1cm47Ci0gICAgbV9jb250ZXh0LT51bmlm
b3JtNGl2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCBkYXRhLmRhdGEoKSwgc3JjT2Zmc2V0LCAoc3Jj
TGVuZ3RoID8gc3JjTGVuZ3RoIDogZGF0YS5sZW5ndGgoKSAtIHNyY09mZnNldCkgLyA0KTsKKyAg
ICBhdXRvIHJlc3VsdCA9IHZhbGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMoInVuaWZvcm00aXYiLCBs
b2NhdGlvbiwgZGF0YSwgNCwgc3JjT2Zmc2V0LCBzcmNMZW5ndGgpOworICAgIGlmICghcmVzdWx0
KQorICAgICAgICByZXR1cm47CisgICAgbV9jb250ZXh0LT51bmlmb3JtNGl2KGxvY2F0aW9uLT5s
b2NhdGlvbigpLCByZXN1bHQudmFsdWUoKSk7CiB9CiAKIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29u
dGV4dDo6dW5pZm9ybU1hdHJpeDJmdihXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEdD
R0xib29sZWFuIHRyYW5zcG9zZSwgRmxvYXQzMkxpc3QgZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0
LCBHQ0dMdWludCBzcmNMZW5ndGgpCiB7Ci0gICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmco
KSB8fCAhdmFsaWRhdGVVbmlmb3JtTWF0cml4UGFyYW1ldGVycygidW5pZm9ybU1hdHJpeDJmdiIs
IGxvY2F0aW9uLCB0cmFuc3Bvc2UsIGRhdGEsIDIqMiwgc3JjT2Zmc2V0LCBzcmNMZW5ndGgpKQor
ICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBt
X2NvbnRleHQtPnVuaWZvcm1NYXRyaXgyZnYobG9jYXRpb24tPmxvY2F0aW9uKCksIHRyYW5zcG9z
ZSwgZGF0YS5kYXRhKCksIHNyY09mZnNldCwgKHNyY0xlbmd0aCA/IHNyY0xlbmd0aCA6IGRhdGEu
bGVuZ3RoKCkgLSBzcmNPZmZzZXQpIC8gKDIqMikpOworICAgIGF1dG8gcmVzdWx0ID0gdmFsaWRh
dGVVbmlmb3JtTWF0cml4UGFyYW1ldGVycygidW5pZm9ybU1hdHJpeDJmdiIsIGxvY2F0aW9uLCB0
cmFuc3Bvc2UsIGRhdGEsIDIqMiwgc3JjT2Zmc2V0LCBzcmNMZW5ndGgpOworICAgIGlmICghcmVz
dWx0KQorICAgICAgICByZXR1cm47CisgICAgbV9jb250ZXh0LT51bmlmb3JtTWF0cml4MmZ2KGxv
Y2F0aW9uLT5sb2NhdGlvbigpLCB0cmFuc3Bvc2UsIHJlc3VsdC52YWx1ZSgpKTsKIH0KIAogdm9p
ZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtTWF0cml4M2Z2KFdlYkdMVW5pZm9ybUxv
Y2F0aW9uKiBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBGbG9hdDMyTGlzdCBkYXRh
LCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKIHsKLSAgICBpZiAoaXND
b250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVVuaWZvcm1NYXRyaXhQYXJhbWV0ZXJz
KCJ1bmlmb3JtTWF0cml4M2Z2IiwgbG9jYXRpb24sIHRyYW5zcG9zZSwgZGF0YSwgMyozLCBzcmNP
ZmZzZXQsIHNyY0xlbmd0aCkpCisgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSkKICAg
ICAgICAgcmV0dXJuOwotICAgIG1fY29udGV4dC0+dW5pZm9ybU1hdHJpeDNmdihsb2NhdGlvbi0+
bG9jYXRpb24oKSwgdHJhbnNwb3NlLCBkYXRhLmRhdGEoKSwgc3JjT2Zmc2V0LCAoc3JjTGVuZ3Ro
ID8gc3JjTGVuZ3RoIDogZGF0YS5sZW5ndGgoKSAtIHNyY09mZnNldCkgLyAoMyozKSk7CisgICAg
YXV0byByZXN1bHQgPSB2YWxpZGF0ZVVuaWZvcm1NYXRyaXhQYXJhbWV0ZXJzKCJ1bmlmb3JtTWF0
cml4M2Z2IiwgbG9jYXRpb24sIHRyYW5zcG9zZSwgZGF0YSwgMyozLCBzcmNPZmZzZXQsIHNyY0xl
bmd0aCk7CisgICAgaWYgKCFyZXN1bHQpCisgICAgICAgIHJldHVybjsKKyAgICBtX2NvbnRleHQt
PnVuaWZvcm1NYXRyaXgzZnYobG9jYXRpb24tPmxvY2F0aW9uKCksIHRyYW5zcG9zZSwgcmVzdWx0
LnZhbHVlKCkpOwogfQogCiB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm1NYXRy
aXg0ZnYoV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bv
c2UsIEZsb2F0MzJMaXN0IGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVu
Z3RoKQogewotICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlVW5p
Zm9ybU1hdHJpeFBhcmFtZXRlcnMoInVuaWZvcm1NYXRyaXg0ZnYiLCBsb2NhdGlvbiwgdHJhbnNw
b3NlLCBkYXRhLCA0KjQsIHNyY09mZnNldCwgc3JjTGVuZ3RoKSkKKyAgICBpZiAoaXNDb250ZXh0
TG9zdE9yUGVuZGluZygpKQorICAgICAgICByZXR1cm47CisgICAgYXV0byByZXN1bHQgPSB2YWxp
ZGF0ZVVuaWZvcm1NYXRyaXhQYXJhbWV0ZXJzKCJ1bmlmb3JtTWF0cml4NGZ2IiwgbG9jYXRpb24s
IHRyYW5zcG9zZSwgZGF0YSwgNCo0LCBzcmNPZmZzZXQsIHNyY0xlbmd0aCk7CisgICAgaWYgKCFy
ZXN1bHQpCiAgICAgICAgIHJldHVybjsKLSAgICBtX2NvbnRleHQtPnVuaWZvcm1NYXRyaXg0ZnYo
bG9jYXRpb24tPmxvY2F0aW9uKCksIHRyYW5zcG9zZSwgZGF0YS5kYXRhKCksIHNyY09mZnNldCwg
KHNyY0xlbmd0aCA/IHNyY0xlbmd0aCA6IGRhdGEubGVuZ3RoKCkgLSBzcmNPZmZzZXQpIC8gKDQq
NCkpOworICAgIG1fY29udGV4dC0+dW5pZm9ybU1hdHJpeDRmdihsb2NhdGlvbi0+bG9jYXRpb24o
KSwgdHJhbnNwb3NlLCByZXN1bHQudmFsdWUoKSk7CiB9CiAKIHZvaWQgV2ViR0wyUmVuZGVyaW5n
Q29udGV4dDo6cmVhZFBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRo
LCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEFycmF5
QnVmZmVyVmlldyYgcGl4ZWxzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0wyUmVuZGVyaW5nQ29udGV4dC5oCmluZGV4IGI4YjAzNmU0NDc2YTRmMTVkNGU1MDY3NThj
NTc1OTM1ZTBhMDYyNGYuLjVmNDdlNjFmMGE0NDQ0YTI4OGMxYjQ2MGZiNGUwZjczNjY3NDY2Nzgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0Nv
bnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdD
b250ZXh0LmgKQEAgLTI5Miw3ICsyOTIsOCBAQCBwcml2YXRlOgogICAgIGJvb2wgdmFsaWRhdGVJ
bmRleEFycmF5Q29uc2VydmF0aXZlKEdDR0xlbnVtIHR5cGUsIHVuc2lnbmVkJiBudW1FbGVtZW50
c1JlcXVpcmVkKSBmaW5hbDsKICAgICBib29sIHZhbGlkYXRlQmxlbmRFcXVhdGlvbihjb25zdCBj
aGFyKiBmdW5jdGlvbk5hbWUsIEdDR0xlbnVtIG1vZGUpIGZpbmFsOwogICAgIGJvb2wgdmFsaWRh
dGVDYXBhYmlsaXR5KGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgR0NHTGVudW0gY2FwKSBmaW5h
bDsKLSAgICBib29sIHZhbGlkYXRlQ2xlYXJCdWZmZXIoY29uc3QgY2hhciogZnVuY3Rpb25OYW1l
LCBHQ0dMZW51bSBidWZmZXIsIHNpemVfdCwgR0NHTHVpbnQgc3JjT2Zmc2V0KTsKKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBUeXBlZEFycmF5VHlwZT4KKyAgICBPcHRpb25hbDxH
Q0dMU3Bhbjxjb25zdCBUPj4gdmFsaWRhdGVDbGVhckJ1ZmZlcihjb25zdCBjaGFyKiBmdW5jdGlv
bk5hbWUsIEdDR0xlbnVtIGJ1ZmZlciwgVHlwZWRMaXN0PFR5cGVkQXJyYXlUeXBlLCBUPiYgdmFs
dWVzLCBHQ0dMdWludCBzcmNPZmZzZXQpOwogICAgIGJvb2wgdmFsaWRhdGVGcmFtZWJ1ZmZlclRh
cmdldChHQ0dMZW51bSB0YXJnZXQpIGZpbmFsOwogICAgIFdlYkdMRnJhbWVidWZmZXIqIGdldEZy
YW1lYnVmZmVyQmluZGluZyhHQ0dMZW51bSB0YXJnZXQpIGZpbmFsOwogICAgIFdlYkdMRnJhbWVi
dWZmZXIqIGdldFJlYWRGcmFtZWJ1ZmZlckJpbmRpbmcoKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRHJhd0J1ZmZlcnMuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xEcmF3QnVmZmVycy5jcHAKaW5kZXggNDk0MTU2ZTFlNjVi
NjAyOTE5MGRiN2MxYzAyNmFkZjgwM2RkYThkMi4uZTVjZWI0YmRkY2M0YzA1MWRiOGI5YWE5Y2Uw
MjA4MWJmMjIzMDUwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xEcmF3QnVmZmVycy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xE
cmF3QnVmZmVycy5jcHAKQEAgLTc0LDggKzc0LDggQEAgdm9pZCBXZWJHTERyYXdCdWZmZXJzOjpk
cmF3QnVmZmVyc1dFQkdMKGNvbnN0IFZlY3RvcjxHQ0dMZW51bT4mIGJ1ZmZlcnMpCiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgLy8gQmVjYXVzZSB0aGUgYmFja2J1ZmZl
ciBpcyBzaW11bGF0ZWQgb24gYWxsIGN1cnJlbnQgV2ViS2l0IHBvcnRzLCB3ZSBuZWVkIHRvIGNo
YW5nZSBCQUNLIHRvIENPTE9SX0FUVEFDSE1FTlQwLgotICAgICAgICBHQ0dMZW51bSB2YWx1ZSA9
IChidWZzWzBdID09IEdyYXBoaWNzQ29udGV4dEdMOjpCQUNLKSA/IEdyYXBoaWNzQ29udGV4dEdM
OjpDT0xPUl9BVFRBQ0hNRU5UMCA6IEdyYXBoaWNzQ29udGV4dEdMOjpOT05FOwotICAgICAgICBt
X2NvbnRleHQtPmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5kcmF3QnVmZmVy
c0VYVCgxLCAmdmFsdWUpOworICAgICAgICBHQ0dMZW51bSB2YWx1ZVsxXSB7IChidWZzWzBdID09
IEdyYXBoaWNzQ29udGV4dEdMOjpCQUNLKSA/IEdyYXBoaWNzQ29udGV4dEdMOjpDT0xPUl9BVFRB
Q0hNRU5UMCA6IEdyYXBoaWNzQ29udGV4dEdMOjpOT05FIH07CisgICAgICAgIG1fY29udGV4dC0+
Z3JhcGhpY3NDb250ZXh0R0woKS0+Z2V0RXh0ZW5zaW9ucygpLmRyYXdCdWZmZXJzRVhUKHZhbHVl
KTsKICAgICAgICAgbV9jb250ZXh0LT5zZXRCYWNrRHJhd0J1ZmZlcihidWZzWzBdKTsKICAgICB9
IGVsc2UgewogICAgICAgICBpZiAobiA+IG1fY29udGV4dC0+Z2V0TWF4RHJhd0J1ZmZlcnMoKSkg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEZyYW1lYnVmZmVyLmNwcApp
bmRleCAzNjU4ZWU4ZWFhZjdmMGRiYjg4NjNjZWQ1MDI0MjVmNGZiNGUyM2E1Li5iMTk4YjM2NmIx
MWYxNWIxYjgwM2JkMDYzYzc2YzRmMmNkOGQxMTc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTEZyYW1lYnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTEZyYW1lYnVmZmVyLmNwcApAQCAtNzAyLDEzICs3MDIsMTAgQEAgdm9p
ZCBXZWJHTEZyYW1lYnVmZmVyOjpkcmF3QnVmZmVyc0lmTmVjZXNzYXJ5KGJvb2wgZm9yY2UpCiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgaWYgKHJlc2V0KSB7Ci0gICAgICAgICAg
ICBpZiAoY29udGV4dCgpLT5pc1dlYkdMMigpKSB7Ci0gICAgICAgICAgICAgICAgY29udGV4dCgp
LT5ncmFwaGljc0NvbnRleHRHTCgpLT5kcmF3QnVmZmVycygKLSAgICAgICAgICAgICAgICAgICAg
bV9maWx0ZXJlZERyYXdCdWZmZXJzLnNpemUoKSwgbV9maWx0ZXJlZERyYXdCdWZmZXJzLmRhdGEo
KSk7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGNvbnRleHQoKS0+Z3Jh
cGhpY3NDb250ZXh0R0woKS0+Z2V0RXh0ZW5zaW9ucygpLmRyYXdCdWZmZXJzRVhUKAotICAgICAg
ICAgICAgICAgICAgICBtX2ZpbHRlcmVkRHJhd0J1ZmZlcnMuc2l6ZSgpLCBtX2ZpbHRlcmVkRHJh
d0J1ZmZlcnMuZGF0YSgpKTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChjb250ZXh0
KCktPmlzV2ViR0wyKCkpCisgICAgICAgICAgICAgICAgY29udGV4dCgpLT5ncmFwaGljc0NvbnRl
eHRHTCgpLT5kcmF3QnVmZmVycyhtX2ZpbHRlcmVkRHJhd0J1ZmZlcnMpOworICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgIGNvbnRleHQoKS0+Z3JhcGhpY3NDb250ZXh0R0woKS0+Z2V0
RXh0ZW5zaW9ucygpLmRyYXdCdWZmZXJzRVhUKG1fZmlsdGVyZWREcmF3QnVmZmVycyk7CiAgICAg
ICAgIH0KICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCmluZGV4IDE4NWU4YzYyZTZmYmUzMWYzMTM4
OGMwYzlmODBkODFjZWUyNGEzYjEuLjI1NGNjOTdiNDE1NTUzNDAzNmY1YmQyZWFmODdmMDY5NjE0
NzQ1ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCkBAIC0xNjAzLDcgKzE2MDMsNyBAQCB2b2lkIFdlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2U6OmJ1ZmZlckRhdGEoR0NHTGVudW0gdGFyZ2V0LCBPcHRpb25h
bDxCdWZmZXJEYXRhUwogICAgICAgICB9CiAKICAgICAgICAgbV9jb250ZXh0LT5tb3ZlRXJyb3Jz
VG9TeW50aGV0aWNFcnJvckxpc3QoKTsKLSAgICAgICAgbV9jb250ZXh0LT5idWZmZXJEYXRhKHRh
cmdldCwgZGF0YS0+Ynl0ZUxlbmd0aCgpLCBkYXRhLT5kYXRhKCksIHVzYWdlKTsKKyAgICAgICAg
bV9jb250ZXh0LT5idWZmZXJEYXRhKHRhcmdldCwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+KGRh
dGEtPmRhdGEoKSwgZGF0YS0+Ynl0ZUxlbmd0aCgpKSwgdXNhZ2UpOwogICAgICAgICBpZiAobV9j
b250ZXh0LT5tb3ZlRXJyb3JzVG9TeW50aGV0aWNFcnJvckxpc3QoKSkgewogICAgICAgICAgICAg
Ly8gVGhlIGJ1ZmZlckRhdGEgZnVuY3Rpb24gZmFpbGVkLiBUZWxsIHRoZSBidWZmZXIgaXQgZG9l
c24ndCBoYXZlIHRoZSBkYXRhIGl0IHRoaW5rcyBpdCBkb2VzLgogICAgICAgICAgICAgYnVmZmVy
LT5kaXNhc3NvY2lhdGVCdWZmZXJEYXRhKCk7CkBAIC0xNjMwLDcgKzE2MzAsNyBAQCB2b2lkIFdl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmJ1ZmZlclN1YkRhdGEoR0NHTGVudW0gdGFyZ2V0LCBs
b25nIGxvbmcgb2Zmc2V0LAogICAgICAgICB9CiAKICAgICAgICAgbV9jb250ZXh0LT5tb3ZlRXJy
b3JzVG9TeW50aGV0aWNFcnJvckxpc3QoKTsKLSAgICAgICAgbV9jb250ZXh0LT5idWZmZXJTdWJE
YXRhKHRhcmdldCwgc3RhdGljX2Nhc3Q8R0NHTGludHB0cj4ob2Zmc2V0KSwgZGF0YS0+Ynl0ZUxl
bmd0aCgpLCBkYXRhLT5kYXRhKCkpOworICAgICAgICBtX2NvbnRleHQtPmJ1ZmZlclN1YkRhdGEo
dGFyZ2V0LCBzdGF0aWNfY2FzdDxHQ0dMaW50cHRyPihvZmZzZXQpLCBHQ0dMU3Bhbjxjb25zdCBH
Q0dMdm9pZD4oZGF0YS0+ZGF0YSgpLCBkYXRhLT5ieXRlTGVuZ3RoKCkpKTsKICAgICAgICAgaWYg
KG1fY29udGV4dC0+bW92ZUVycm9yc1RvU3ludGhldGljRXJyb3JMaXN0KCkpIHsKICAgICAgICAg
ICAgIC8vIFRoZSBidWZmZXJTdWJEYXRhIGZ1bmN0aW9uIGZhaWxlZC4gVGVsbCB0aGUgYnVmZmVy
IGl0IGRvZXNuJ3QgaGF2ZSB0aGUgZGF0YSBpdCB0aGlua3MgaXQgZG9lcy4KICAgICAgICAgICAg
IGJ1ZmZlci0+ZGlzYXNzb2NpYXRlQnVmZmVyRGF0YSgpOwpAQCAtMTc1Nyw3ICsxNzU3LDcgQEAg
dm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpjb21wcmVzc2VkVGV4SW1hZ2UyRChHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xpbnQgbGUKICAgICBpZiAoIXZhbGlkYXRlVGV4dHVyZTJEQmluZGlu
ZygiY29tcHJlc3NlZFRleEltYWdlMkQiLCB0YXJnZXQpKQogICAgICAgICByZXR1cm47CiAgICAg
bV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuY29tcHJlc3NlZFRleEltYWdlMkRSb2J1c3RBTkdM
RSh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwKLSAgICAgICAg
Ym9yZGVyLCBkYXRhLmJ5dGVMZW5ndGgoKSwgZGF0YS5ieXRlTGVuZ3RoKCksIGRhdGEuYmFzZUFk
ZHJlc3MoKSk7CisgICAgICAgIGJvcmRlciwgZGF0YS5ieXRlTGVuZ3RoKCksIG1ha2VHQ0dMU3Bh
bihkYXRhLmJhc2VBZGRyZXNzKCksIGRhdGEuYnl0ZUxlbmd0aCgpKSk7CiAjZWxzZQogICAgIGlm
ICghdmFsaWRhdGVUZXhGdW5jTGV2ZWwoImNvbXByZXNzZWRUZXhJbWFnZTJEIiwgdGFyZ2V0LCBs
ZXZlbCkpCiAgICAgICAgIHJldHVybjsKQEAgLTE4MDEsNyArMTgwMSw3IEBAIHZvaWQgV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZTo6Y29tcHJlc3NlZFRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMaW50CiAjaWYgVVNFKEFOR0xFKQogICAgIGlmICghdmFsaWRhdGVUZXh0dXJlMkRC
aW5kaW5nKCJjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRCIsIHRhcmdldCkpCiAgICAgICAgIHJldHVy
bjsKLSAgICBncmFwaGljc0NvbnRleHRHTCgpLT5nZXRFeHRlbnNpb25zKCkuY29tcHJlc3NlZFRl
eFN1YkltYWdlMkRSb2J1c3RBTkdMRSh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB3
aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIGRhdGEuYnl0ZUxlbmd0aCgpLCBkYXRhLmJ5dGVMZW5ndGgo
KSwgZGF0YS5iYXNlQWRkcmVzcygpKTsKKyAgICBncmFwaGljc0NvbnRleHRHTCgpLT5nZXRFeHRl
bnNpb25zKCkuY29tcHJlc3NlZFRleFN1YkltYWdlMkRSb2J1c3RBTkdMRSh0YXJnZXQsIGxldmVs
LCB4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIGRhdGEuYnl0ZUxlbmd0
aCgpLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4oZGF0YS5iYXNlQWRkcmVzcygpLCBkYXRhLmJ5
dGVMZW5ndGgoKSkpOwogI2Vsc2UKICAgICBpZiAoIXZhbGlkYXRlVGV4RnVuY0xldmVsKCJjb21w
cmVzc2VkVGV4U3ViSW1hZ2UyRCIsIHRhcmdldCwgbGV2ZWwpKQogICAgICAgICByZXR1cm47CkBA
IC00NzA5LDEyICs0NzA5LDEyIEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OnRleEltYWdlU291cmNlSGVscGVyKFRleEltYWdlRnVuY3RpCiAgICAgICAgICAg
ICBpZiAoZnVuY3Rpb25JRCA9PSBUZXhJbWFnZUZ1bmN0aW9uSUQ6OlRleEltYWdlM0QpIHsKICAg
ICAgICAgICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS50ZXhJbWFnZTNEUm9idXN0
QU5HTEUodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsCiAgICAgICAgICAgICAgICAgICAg
IGFkanVzdGVkU291cmNlSW1hZ2VSZWN0LndpZHRoKCksIGFkanVzdGVkU291cmNlSW1hZ2VSZWN0
LmhlaWdodCgpLCBkZXB0aCwgMCwKLSAgICAgICAgICAgICAgICAgICAgZm9ybWF0LCB0eXBlLCBi
eXRlTGVuZ3RoLCBuZWVkQ29udmVyc2lvbiA/IGRhdGEuZGF0YSgpIDogcGl4ZWxzLT5kYXRhKCkt
PmRhdGEoKSk7CisgICAgICAgICAgICAgICAgICAgIGZvcm1hdCwgdHlwZSwgbWFrZUdDR0xTcGFu
KG5lZWRDb252ZXJzaW9uID8gZGF0YS5kYXRhKCkgOiBwaXhlbHMtPmRhdGEoKS0+ZGF0YSgpLCBi
eXRlTGVuZ3RoKSk7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIEFTU0VS
VChmdW5jdGlvbklEID09IFRleEltYWdlRnVuY3Rpb25JRDo6VGV4U3ViSW1hZ2UzRCk7CiAgICAg
ICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkudGV4U3ViSW1hZ2UzRFJvYnVz
dEFOR0xFKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHpvZmZzZXQsCiAgICAgICAg
ICAgICAgICAgICAgIGFkanVzdGVkU291cmNlSW1hZ2VSZWN0LndpZHRoKCksIGFkanVzdGVkU291
cmNlSW1hZ2VSZWN0LmhlaWdodCgpLCBkZXB0aCwKLSAgICAgICAgICAgICAgICAgICAgZm9ybWF0
LCB0eXBlLCBieXRlTGVuZ3RoLCBuZWVkQ29udmVyc2lvbiA/IGRhdGEuZGF0YSgpIDogcGl4ZWxz
LT5kYXRhKCktPmRhdGEoKSk7CisgICAgICAgICAgICAgICAgICAgIGZvcm1hdCwgdHlwZSwgbWFr
ZUdDR0xTcGFuKG5lZWRDb252ZXJzaW9uID8gZGF0YS5kYXRhKCkgOiBwaXhlbHMtPmRhdGEoKS0+
ZGF0YSgpLCBieXRlTGVuZ3RoKSk7CiAgICAgICAgICAgICB9CiAjZWxzZQogICAgICAgICAgICAg
Ly8gV2ViR0wgMi4wIGlzIG9ubHkgc3VwcG9ydGVkIHdpdGggdGhlIEFOR0xFIGJhY2tlbmQuCkBA
IC00ODk0LDExICs0ODk0LDExIEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dGV4
SW1hZ2VBcnJheUJ1ZmZlclZpZXdIZWxwZXIoVGV4SW1hZ2VGdW5jdGlvbklECiAgICAgfQogI2lm
IFVTRShBTkdMRSkKICAgICBpZiAoZnVuY3Rpb25JRCA9PSBUZXhJbWFnZUZ1bmN0aW9uSUQ6OlRl
eEltYWdlM0QpIHsKLSAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkudGV4SW1hZ2Uz
RFJvYnVzdEFOR0xFKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0
LCBkZXB0aCwgYm9yZGVyLCBmb3JtYXQsIHR5cGUsIGJ5dGVMZW5ndGgsIGRhdGEpOworICAgICAg
ICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS50ZXhJbWFnZTNEUm9idXN0QU5HTEUodGFyZ2V0
LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBib3JkZXIsIGZv
cm1hdCwgdHlwZSwgbWFrZUdDR0xTcGFuKGRhdGEsIGJ5dGVMZW5ndGgpKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KICAgICBpZiAoZnVuY3Rpb25JRCA9PSBUZXhJbWFnZUZ1bmN0aW9uSUQ6OlRl
eFN1YkltYWdlM0QpIHsKLSAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkudGV4U3Vi
SW1hZ2UzRFJvYnVzdEFOR0xFKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHpvZmZz
ZXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBmb3JtYXQsIHR5cGUsIGJ5dGVMZW5ndGgsIGRhdGEp
OworICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS50ZXhTdWJJbWFnZTNEUm9idXN0
QU5HTEUodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgem9mZnNldCwgd2lkdGgsIGhl
aWdodCwgZGVwdGgsIGZvcm1hdCwgdHlwZSwgbWFrZUdDR0xTcGFuKGRhdGEsIGJ5dGVMZW5ndGgp
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICNlbmRpZiAvLyBVU0UoQU5HTEUpCkBAIC00OTc1
LDEyICs0OTc1LDEyIEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dGV4SW1hZ2VJ
bXBsKFRleEltYWdlRnVuY3Rpb25JRCBmdW5jdGlvbklELCBHQ0dMCiAgICAgICAgIGlmIChmdW5j
dGlvbklEID09IFRleEltYWdlRnVuY3Rpb25JRDo6VGV4SW1hZ2UzRCkgewogICAgICAgICAgICAg
bV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkudGV4SW1hZ2UzRFJvYnVzdEFOR0xFKHRhcmdldCwg
bGV2ZWwsIGludGVybmFsZm9ybWF0LAogICAgICAgICAgICAgICAgIGFkanVzdGVkU291cmNlSW1h
Z2VSZWN0LndpZHRoKCksIGFkanVzdGVkU291cmNlSW1hZ2VSZWN0LmhlaWdodCgpLCBkZXB0aCwg
MCwKLSAgICAgICAgICAgICAgICBmb3JtYXQsIHR5cGUsIGJ5dGVMZW5ndGgsIG5lZWRDb252ZXJz
aW9uID8gZGF0YS5kYXRhKCkgOiBpbWFnZVBpeGVsRGF0YSk7CisgICAgICAgICAgICAgICAgZm9y
bWF0LCB0eXBlLCBtYWtlR0NHTFNwYW4obmVlZENvbnZlcnNpb24gPyBkYXRhLmRhdGEoKSA6IGlt
YWdlUGl4ZWxEYXRhLCBieXRlTGVuZ3RoKSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAg
ICBBU1NFUlQoZnVuY3Rpb25JRCA9PSBUZXhJbWFnZUZ1bmN0aW9uSUQ6OlRleFN1YkltYWdlM0Qp
OwogICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkudGV4U3ViSW1hZ2UzRFJv
YnVzdEFOR0xFKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHpvZmZzZXQsCiAgICAg
ICAgICAgICAgICAgYWRqdXN0ZWRTb3VyY2VJbWFnZVJlY3Qud2lkdGgoKSwgYWRqdXN0ZWRTb3Vy
Y2VJbWFnZVJlY3QuaGVpZ2h0KCksIGRlcHRoLAotICAgICAgICAgICAgICAgIGZvcm1hdCwgdHlw
ZSwgYnl0ZUxlbmd0aCwgbmVlZENvbnZlcnNpb24gPyBkYXRhLmRhdGEoKSA6IGltYWdlUGl4ZWxE
YXRhKTsKKyAgICAgICAgICAgICAgICBmb3JtYXQsIHR5cGUsIG1ha2VHQ0dMU3BhbihuZWVkQ29u
dmVyc2lvbiA/IGRhdGEuZGF0YSgpIDogaW1hZ2VQaXhlbERhdGEsIGJ5dGVMZW5ndGgpKTsKICAg
ICAgICAgfQogI2Vsc2UKICAgICAgICAgVU5VU0VEX1BBUkFNKHpvZmZzZXQpOwpAQCAtNDk5Myw3
ICs0OTkzLDcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp0ZXhJbWFnZUltcGwo
VGV4SW1hZ2VGdW5jdGlvbklEIGZ1bmN0aW9uSUQsIEdDR0wKIHZvaWQgV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6dGV4SW1hZ2UyREJhc2UoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVs
LCBHQ0dMZW51bSBpbnRlcm5hbEZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVp
Z2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dM
c2l6ZWkgYnl0ZUxlbmd0aCwgY29uc3Qgdm9pZCogcGl4ZWxzKQogewogI2lmIFVTRShBTkdMRSkK
LSAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS50ZXhJbWFnZTJEUm9idXN0QU5HTEUodGFy
Z2V0LCBsZXZlbCwgaW50ZXJuYWxGb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGJvcmRlciwgZm9ybWF0
LCB0eXBlLCBieXRlTGVuZ3RoLCBwaXhlbHMpOworICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9u
cygpLnRleEltYWdlMkRSb2J1c3RBTkdMRSh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbEZvcm1hdCwg
d2lkdGgsIGhlaWdodCwgYm9yZGVyLCBmb3JtYXQsIHR5cGUsIG1ha2VHQ0dMU3BhbihwaXhlbHMs
IGJ5dGVMZW5ndGgpKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGJ5dGVMZW5ndGgpOwogICAg
IC8vIEZJWE1FOiBGb3Igbm93IHdlIGlnbm9yZSBhbnkgZXJyb3JzIHJldHVybmVkLgpAQCAtNTAy
Myw3ICs1MDIzLDcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp0ZXhTdWJJbWFn
ZTJEQmFzZShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwKICAgICBBU1NFUlQoIWlzQ29u
dGV4dExvc3QoKSk7CiAjaWYgVVNFKEFOR0xFKQogICAgIFVOVVNFRF9QQVJBTShpbnRlcm5hbEZv
cm1hdCk7Ci0gICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkudGV4U3ViSW1hZ2UyRFJvYnVz
dEFOR0xFKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGZv
cm1hdCwgdHlwZSwgYnl0ZUxlbmd0aCwgcGl4ZWxzKTsKKyAgICBtX2NvbnRleHQtPmdldEV4dGVu
c2lvbnMoKS50ZXhTdWJJbWFnZTJEUm9idXN0QU5HTEUodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwg
eW9mZnNldCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBtYWtlR0NHTFNwYW4ocGl4ZWxz
LCBieXRlTGVuZ3RoKSk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShieXRlTGVuZ3RoKTsKICAg
ICBBU1NFUlQodmFsaWRhdGVUZXhGdW5jUGFyYW1ldGVycygidGV4U3ViSW1hZ2UyRCIsIFRleElt
YWdlRnVuY3Rpb25UeXBlOjpUZXhTdWJJbWFnZSwgU291cmNlQXJyYXlCdWZmZXJWaWV3LCB0YXJn
ZXQsIGxldmVsLCBpbnRlcm5hbEZvcm1hdCwgd2lkdGgsIGhlaWdodCwgMSwgMCwgZm9ybWF0LCB0
eXBlKSk7CkBAIC01ODI2LDEwMCArNTgyNiwxMjUgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlOjp1bmlmb3JtNGkoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLAog
CiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm0xZnYoY29uc3QgV2ViR0xV
bmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBGbG9hdDMyTGlzdCYmIHYpCiB7Ci0gICAgaWYgKGlz
Q29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycygidW5p
Zm9ybTFmdiIsIGxvY2F0aW9uLCB2LCAxLCAwLCB2Lmxlbmd0aCgpKSkKKyAgICBpZiAoaXNDb250
ZXh0TG9zdE9yUGVuZGluZygpKQogICAgICAgICByZXR1cm47Ci0KLSAgICBtX2NvbnRleHQtPnVu
aWZvcm0xZnYobG9jYXRpb24tPmxvY2F0aW9uKCksIHYubGVuZ3RoKCksIHYuZGF0YSgpKTsKKyAg
ICBhdXRvIGRhdGEgPSB2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKCJ1bmlmb3JtMWZ2IiwgbG9j
YXRpb24sIHYsIDEpOworICAgIGlmICghZGF0YSkKKyAgICAgICAgcmV0dXJuOworICAgIG1fY29u
dGV4dC0+dW5pZm9ybTFmdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgZGF0YS52YWx1ZSgpKTsKIH0K
IAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtMmZ2KGNvbnN0IFdlYkdM
VW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgRmxvYXQzMkxpc3QmJiB2KQogewotICAgIGlmIChp
c0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMoInVu
aWZvcm0yZnYiLCBsb2NhdGlvbiwgdiwgMiwgMCwgdi5sZW5ndGgoKSkpCisgICAgaWYgKGlzQ29u
dGV4dExvc3RPclBlbmRpbmcoKSkKICAgICAgICAgcmV0dXJuOwotCi0gICAgbV9jb250ZXh0LT51
bmlmb3JtMmZ2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCB2Lmxlbmd0aCgpIC8gMiwgdi5kYXRhKCkp
OworICAgIGF1dG8gZGF0YSA9IHZhbGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMoInVuaWZvcm0yZnYi
LCBsb2NhdGlvbiwgdiwgMik7CisgICAgaWYgKCFkYXRhKQorICAgICAgICByZXR1cm47CisgICAg
bV9jb250ZXh0LT51bmlmb3JtMmZ2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCBkYXRhLnZhbHVlKCkp
OwogfQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm0zZnYoY29uc3Qg
V2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBGbG9hdDMyTGlzdCYmIHYpCiB7Ci0gICAg
aWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVy
cygidW5pZm9ybTNmdiIsIGxvY2F0aW9uLCB2LCAzLCAwLCB2Lmxlbmd0aCgpKSkKKyAgICBpZiAo
aXNDb250ZXh0TG9zdE9yUGVuZGluZygpKQogICAgICAgICByZXR1cm47Ci0KLSAgICBtX2NvbnRl
eHQtPnVuaWZvcm0zZnYobG9jYXRpb24tPmxvY2F0aW9uKCksIHYubGVuZ3RoKCkgLyAzLCB2LmRh
dGEoKSk7CisgICAgYXV0byBkYXRhID0gdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycygidW5pZm9y
bTNmdiIsIGxvY2F0aW9uLCB2LCAzKTsKKyAgICBpZiAoIWRhdGEpCisgICAgICAgIHJldHVybjsK
KyAgICBtX2NvbnRleHQtPnVuaWZvcm0zZnYobG9jYXRpb24tPmxvY2F0aW9uKCksIGRhdGEudmFs
dWUoKSk7CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybTRmdihj
b25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEZsb2F0MzJMaXN0JiYgdikKIHsK
LSAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVVuaWZvcm1QYXJh
bWV0ZXJzKCJ1bmlmb3JtNGZ2IiwgbG9jYXRpb24sIHYsIDQsIDAsIHYubGVuZ3RoKCkpKQorICAg
IGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCiAgICAgICAgIHJldHVybjsKLQotICAgIG1f
Y29udGV4dC0+dW5pZm9ybTRmdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgdi5sZW5ndGgoKSAvIDQs
IHYuZGF0YSgpKTsKKyAgICBhdXRvIGRhdGEgPSB2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKCJ1
bmlmb3JtNGZ2IiwgbG9jYXRpb24sIHYsIDQpOworICAgIGlmICghZGF0YSkKKyAgICAgICAgcmV0
dXJuOworICAgIG1fY29udGV4dC0+dW5pZm9ybTRmdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgZGF0
YS52YWx1ZSgpKTsKIH0KIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3Jt
MWl2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgSW50MzJMaXN0JiYgdikK
IHsKLSAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVVuaWZvcm1Q
YXJhbWV0ZXJzKCJ1bmlmb3JtMWl2IiwgbG9jYXRpb24sIHYsIDEsIDAsIHYubGVuZ3RoKCkpKQor
ICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCisgICAgICAgIHJldHVybjsKKyAgICBh
dXRvIHJlc3VsdCA9IHZhbGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMoInVuaWZvcm0xaXYiLCBsb2Nh
dGlvbiwgdiwgMSk7CisgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1
dG8gZGF0YSA9IHYuZGF0YSgpOwotICAgIGF1dG8gbGVuZ3RoID0gdi5sZW5ndGgoKTsKKyAgICBh
dXRvIGRhdGEgPSByZXN1bHQudmFsdWUoKTsKIAogICAgIGlmIChsb2NhdGlvbi0+dHlwZSgpID09
IEdyYXBoaWNzQ29udGV4dEdMOjpTQU1QTEVSXzJEIHx8IGxvY2F0aW9uLT50eXBlKCkgPT0gR3Jh
cGhpY3NDb250ZXh0R0w6OlNBTVBMRVJfQ1VCRSkgewotICAgICAgICBmb3IgKGF1dG8gaSA9IDA7
IGkgPCBsZW5ndGg7ICsraSkgeworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGRhdGEu
YnVmU2l6ZTsgKytpKSB7CiAgICAgICAgICAgICBpZiAoZGF0YVtpXSA+PSBzdGF0aWNfY2FzdDxp
bnQ+KG1fdGV4dHVyZVVuaXRzLnNpemUoKSkpIHsKLSAgICAgICAgICAgICAgICBMT0coV2ViR0ws
ICJUZXh0dXJlIHVuaXQgc2l6ZT0lenUsIHZbJWRdPSVkLiBMb2NhdGlvbiB0eXBlID0gJTA0WC4i
LCBtX3RleHR1cmVVbml0cy5zaXplKCksIGksIGRhdGFbaV0sIGxvY2F0aW9uLT50eXBlKCkpOwor
ICAgICAgICAgICAgICAgIExPRyhXZWJHTCwgIlRleHR1cmUgdW5pdCBzaXplPSV6dSwgdlslenVd
PSVkLiBMb2NhdGlvbiB0eXBlID0gJTA0WC4iLCBtX3RleHR1cmVVbml0cy5zaXplKCksIGksIGRh
dGFbaV0sIGxvY2F0aW9uLT50eXBlKCkpOwogICAgICAgICAgICAgICAgIHN5bnRoZXNpemVHTEVy
cm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX1ZBTFVFLCAidW5pZm9ybTFpdiIsICJpbnZh
bGlkIHRleHR1cmUgdW5pdCIpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAg
IH0KICAgICAgICAgfQogICAgIH0KIAotICAgIG1fY29udGV4dC0+dW5pZm9ybTFpdihsb2NhdGlv
bi0+bG9jYXRpb24oKSwgbGVuZ3RoLCBkYXRhKTsKKyAgICBtX2NvbnRleHQtPnVuaWZvcm0xaXYo
bG9jYXRpb24tPmxvY2F0aW9uKCksIGRhdGEpOwogfQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OnVuaWZvcm0yaXYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9u
LCBJbnQzMkxpc3QmJiB2KQogewotICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwg
IXZhbGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMoInVuaWZvcm0yaXYiLCBsb2NhdGlvbiwgdiwgMiwg
MCwgdi5sZW5ndGgoKSkpCisgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSkKICAgICAg
ICAgcmV0dXJuOwotCi0gICAgbV9jb250ZXh0LT51bmlmb3JtMml2KGxvY2F0aW9uLT5sb2NhdGlv
bigpLCB2Lmxlbmd0aCgpIC8gMiwgdi5kYXRhKCkpOworICAgIGF1dG8gZGF0YSA9IHZhbGlkYXRl
VW5pZm9ybVBhcmFtZXRlcnMoInVuaWZvcm0yaXYiLCBsb2NhdGlvbiwgdiwgMik7CisgICAgaWYg
KCFkYXRhKQorICAgICAgICByZXR1cm47CisgICAgbV9jb250ZXh0LT51bmlmb3JtMml2KGxvY2F0
aW9uLT5sb2NhdGlvbigpLCBkYXRhLnZhbHVlKCkpOwogfQogCiB2b2lkIFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2U6OnVuaWZvcm0zaXYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0
aW9uLCBJbnQzMkxpc3QmJiB2KQogewotICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkg
fHwgIXZhbGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMoInVuaWZvcm0zaXYiLCBsb2NhdGlvbiwgdiwg
MywgMCwgdi5sZW5ndGgoKSkpCisgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSkKICAg
ICAgICAgcmV0dXJuOwotCi0gICAgbV9jb250ZXh0LT51bmlmb3JtM2l2KGxvY2F0aW9uLT5sb2Nh
dGlvbigpLCB2Lmxlbmd0aCgpIC8gMywgdi5kYXRhKCkpOworICAgIGF1dG8gZGF0YSA9IHZhbGlk
YXRlVW5pZm9ybVBhcmFtZXRlcnMoInVuaWZvcm0zaXYiLCBsb2NhdGlvbiwgdiwgMyk7CisgICAg
aWYgKCFkYXRhKQorICAgICAgICByZXR1cm47CisgICAgbV9jb250ZXh0LT51bmlmb3JtM2l2KGxv
Y2F0aW9uLT5sb2NhdGlvbigpLCBkYXRhLnZhbHVlKCkpOwogfQogCiB2b2lkIFdlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2U6OnVuaWZvcm00aXYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxv
Y2F0aW9uLCBJbnQzMkxpc3QmJiB2KQogewotICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5n
KCkgfHwgIXZhbGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMoInVuaWZvcm00aXYiLCBsb2NhdGlvbiwg
diwgNCwgMCwgdi5sZW5ndGgoKSkpCisgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSkK
ICAgICAgICAgcmV0dXJuOwotCi0gICAgbV9jb250ZXh0LT51bmlmb3JtNGl2KGxvY2F0aW9uLT5s
b2NhdGlvbigpLCB2Lmxlbmd0aCgpIC8gNCwgdi5kYXRhKCkpOworICAgIGF1dG8gZGF0YSA9IHZh
bGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMoInVuaWZvcm00aXYiLCBsb2NhdGlvbiwgdiwgNCk7Cisg
ICAgaWYgKCFkYXRhKQorICAgICAgICByZXR1cm47CisgICAgbV9jb250ZXh0LT51bmlmb3JtNGl2
KGxvY2F0aW9uLT5sb2NhdGlvbigpLCBkYXRhLnZhbHVlKCkpOwogfQogCiB2b2lkIFdlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm1NYXRyaXgyZnYoY29uc3QgV2ViR0xVbmlmb3JtTG9j
YXRpb24qIGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEZsb2F0MzJMaXN0JiYgdikK
IHsKLSAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVVuaWZvcm1N
YXRyaXhQYXJhbWV0ZXJzKCJ1bmlmb3JtTWF0cml4MmZ2IiwgbG9jYXRpb24sIHRyYW5zcG9zZSwg
diwgNCwgMCwgdi5sZW5ndGgoKSkpCisgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSkK
KyAgICAgICAgcmV0dXJuOworICAgIGF1dG8gZGF0YSA9IHZhbGlkYXRlVW5pZm9ybU1hdHJpeFBh
cmFtZXRlcnMoInVuaWZvcm1NYXRyaXgyZnYiLCBsb2NhdGlvbiwgdHJhbnNwb3NlLCB2LCA0KTsK
KyAgICBpZiAoIWRhdGEpCiAgICAgICAgIHJldHVybjsKLSAgICBtX2NvbnRleHQtPnVuaWZvcm1N
YXRyaXgyZnYobG9jYXRpb24tPmxvY2F0aW9uKCksIHYubGVuZ3RoKCkgLyA0LCB0cmFuc3Bvc2Us
IHYuZGF0YSgpKTsKKyAgICBtX2NvbnRleHQtPnVuaWZvcm1NYXRyaXgyZnYobG9jYXRpb24tPmxv
Y2F0aW9uKCksIHRyYW5zcG9zZSwgZGF0YS52YWx1ZSgpKTsKIH0KIAogdm9pZCBXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtTWF0cml4M2Z2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0
aW9uKiBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBGbG9hdDMyTGlzdCYmIHYpCiB7
Ci0gICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVVbmlmb3JtTWF0
cml4UGFyYW1ldGVycygidW5pZm9ybU1hdHJpeDNmdiIsIGxvY2F0aW9uLCB0cmFuc3Bvc2UsIHYs
IDksIDAsIHYubGVuZ3RoKCkpKQorICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCisg
ICAgICAgIHJldHVybjsKKyAgICBhdXRvIGRhdGEgPSB2YWxpZGF0ZVVuaWZvcm1NYXRyaXhQYXJh
bWV0ZXJzKCJ1bmlmb3JtTWF0cml4M2Z2IiwgbG9jYXRpb24sIHRyYW5zcG9zZSwgdiwgOSk7Cisg
ICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm47Ci0gICAgbV9jb250ZXh0LT51bmlmb3JtTWF0
cml4M2Z2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCB2Lmxlbmd0aCgpIC8gOSwgdHJhbnNwb3NlLCB2
LmRhdGEoKSk7CisgICAgbV9jb250ZXh0LT51bmlmb3JtTWF0cml4M2Z2KGxvY2F0aW9uLT5sb2Nh
dGlvbigpLCB0cmFuc3Bvc2UsIGRhdGEudmFsdWUoKSk7CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6dW5pZm9ybU1hdHJpeDRmdihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlv
biogbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgRmxvYXQzMkxpc3QmJiB2KQogewot
ICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlVW5pZm9ybU1hdHJp
eFBhcmFtZXRlcnMoInVuaWZvcm1NYXRyaXg0ZnYiLCBsb2NhdGlvbiwgdHJhbnNwb3NlLCB2LCAx
NiwgMCwgdi5sZW5ndGgoKSkpCisgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSkKKyAg
ICAgICAgcmV0dXJuOworICAgIGF1dG8gZGF0YSA9IHZhbGlkYXRlVW5pZm9ybU1hdHJpeFBhcmFt
ZXRlcnMoInVuaWZvcm1NYXRyaXg0ZnYiLCBsb2NhdGlvbiwgdHJhbnNwb3NlLCB2LCAxNik7Cisg
ICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm47Ci0gICAgbV9jb250ZXh0LT51bmlmb3JtTWF0
cml4NGZ2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCB2Lmxlbmd0aCgpIC8gMTYsIHRyYW5zcG9zZSwg
di5kYXRhKCkpOworICAgIG1fY29udGV4dC0+dW5pZm9ybU1hdHJpeDRmdihsb2NhdGlvbi0+bG9j
YXRpb24oKSwgdHJhbnNwb3NlLCBkYXRhLnZhbHVlKCkpOwogfQogCiB2b2lkIFdlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2U6OnVzZVByb2dyYW0oV2ViR0xQcm9ncmFtKiBwcm9ncmFtKQpAQCAtNzA0
Nyw2MiArNzA3Miw0OCBAQCBib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlkYXRl
Q2FwYWJpbGl0eShjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIEdDRwogICAgIH0KIH0KIAotYm9v
bCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKGNv
bnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0
aW9uLCBjb25zdCBGbG9hdDMyTGlzdCYgdiwgR0NHTHNpemVpIHJlcXVpcmVkTWluU2l6ZSwgR0NH
THVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCi17Ci0gICAgcmV0dXJuIHZhbGlk
YXRlVW5pZm9ybU1hdHJpeFBhcmFtZXRlcnMoZnVuY3Rpb25OYW1lLCBsb2NhdGlvbiwgZmFsc2Us
IHYuZGF0YSgpLCB2Lmxlbmd0aCgpLCByZXF1aXJlZE1pblNpemUsIHNyY09mZnNldCwgc3JjTGVu
Z3RoKTsKLX0KLQotYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZVVuaWZv
cm1QYXJhbWV0ZXJzKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgY29uc3QgV2ViR0xVbmlmb3Jt
TG9jYXRpb24qIGxvY2F0aW9uLCBjb25zdCBJbnQzMkxpc3QmIHYsIEdDR0xzaXplaSByZXF1aXJl
ZE1pblNpemUsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQotewotICAg
IHJldHVybiB2YWxpZGF0ZVVuaWZvcm1NYXRyaXhQYXJhbWV0ZXJzKGZ1bmN0aW9uTmFtZSwgbG9j
YXRpb24sIGZhbHNlLCB2LmRhdGEoKSwgdi5sZW5ndGgoKSwgcmVxdWlyZWRNaW5TaXplLCBzcmNP
ZmZzZXQsIHNyY0xlbmd0aCk7Ci19CiAKLWJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6
dmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycyhjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIGNvbnN0
IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgY29uc3QgVWludDMyTGlzdCYgdiwgR0NH
THNpemVpIHJlcXVpcmVkTWluU2l6ZSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNM
ZW5ndGgpCi17Ci0gICAgcmV0dXJuIHZhbGlkYXRlVW5pZm9ybU1hdHJpeFBhcmFtZXRlcnMoZnVu
Y3Rpb25OYW1lLCBsb2NhdGlvbiwgZmFsc2UsIHYuZGF0YSgpLCB2Lmxlbmd0aCgpLCByZXF1aXJl
ZE1pblNpemUsIHNyY09mZnNldCwgc3JjTGVuZ3RoKTsKLX0KLQotYm9vbCBXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlOjp2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKGNvbnN0IGNoYXIqIGZ1bmN0
aW9uTmFtZSwgY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCB2b2lkKiB2LCBH
Q0dMc2l6ZWkgc2l6ZSwgR0NHTHNpemVpIHJlcXVpcmVkTWluU2l6ZSwgR0NHTHVpbnQgc3JjT2Zm
c2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCi17Ci0gICAgcmV0dXJuIHZhbGlkYXRlVW5pZm9ybU1h
dHJpeFBhcmFtZXRlcnMoZnVuY3Rpb25OYW1lLCBsb2NhdGlvbiwgZmFsc2UsIHYsIHNpemUsIHJl
cXVpcmVkTWluU2l6ZSwgc3JjT2Zmc2V0LCBzcmNMZW5ndGgpOwotfQotCi1ib29sIFdlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlVW5pZm9ybU1hdHJpeFBhcmFtZXRlcnMoY29uc3Qg
Y2hhciogZnVuY3Rpb25OYW1lLCBjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24s
IEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgRmxvYXQzMkxpc3QmIHYsIEdDR0xzaXplaSBy
ZXF1aXJlZE1pblNpemUsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQot
ewotICAgIHJldHVybiB2YWxpZGF0ZVVuaWZvcm1NYXRyaXhQYXJhbWV0ZXJzKGZ1bmN0aW9uTmFt
ZSwgbG9jYXRpb24sIHRyYW5zcG9zZSwgdi5kYXRhKCksIHYubGVuZ3RoKCksIHJlcXVpcmVkTWlu
U2l6ZSwgc3JjT2Zmc2V0LCBzcmNMZW5ndGgpOwotfQotCi1ib29sIFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OnZhbGlkYXRlVW5pZm9ybU1hdHJpeFBhcmFtZXRlcnMoY29uc3QgY2hhciogZnVu
Y3Rpb25OYW1lLCBjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEdDR0xib29s
ZWFuIHRyYW5zcG9zZSwgY29uc3Qgdm9pZCogdiwgR0NHTHNpemVpIHNpemUsIEdDR0xzaXplaSBy
ZXF1aXJlZE1pblNpemUsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQor
dGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVHlwZWRMaXN0VHlwZT4KK09wdGlvbmFsPEdD
R0xTcGFuPGNvbnN0IFQ+PiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZVVuaWZv
cm1NYXRyaXhQYXJhbWV0ZXJzKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgY29uc3QgV2ViR0xV
bmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IFR5
cGVkTGlzdDxUeXBlZExpc3RUeXBlLCBUPiYgdmFsdWVzLCBHQ0dMc2l6ZWkgcmVxdWlyZWRNaW5T
aXplLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKIHsKICAgICBpZiAo
IXZhbGlkYXRlVW5pZm9ybUxvY2F0aW9uKGZ1bmN0aW9uTmFtZSwgbG9jYXRpb24pKQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKCF2KSB7CisgICAgICAgIHJldHVybiB7IH07CisgICAg
aWYgKCF2YWx1ZXMuZGF0YSgpKSB7CiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNz
Q29udGV4dEdMOjpJTlZBTElEX1ZBTFVFLCBmdW5jdGlvbk5hbWUsICJubyBhcnJheSIpOwotICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiB7IH07CiAgICAgfQogICAgIGlmICh0
cmFuc3Bvc2UgJiYgIWlzV2ViR0wyKCkpIHsKICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3Jh
cGhpY3NDb250ZXh0R0w6OklOVkFMSURfVkFMVUUsIGZ1bmN0aW9uTmFtZSwgInRyYW5zcG9zZSBu
b3QgRkFMU0UiKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4geyB9Owog
ICAgIH0KLSAgICBpZiAoc3JjT2Zmc2V0ID49IHN0YXRpY19jYXN0PEdDR0x1aW50PihzaXplKSkg
eworICAgIGlmIChzcmNPZmZzZXQgPj0gc3RhdGljX2Nhc3Q8R0NHTHVpbnQ+KHZhbHVlcy5sZW5n
dGgoKSkpIHsKICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklO
VkFMSURfVkFMVUUsIGZ1bmN0aW9uTmFtZSwgImludmFsaWQgc3JjT2Zmc2V0Iik7Ci0gICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9Ci0gICAgR0NHTHNpemVp
IGFjdHVhbFNpemUgPSBzaXplIC0gc3JjT2Zmc2V0OworICAgIEdDR0xzaXplaSBhY3R1YWxTaXpl
ID0gdmFsdWVzLmxlbmd0aCgpIC0gc3JjT2Zmc2V0OwogICAgIGlmIChzcmNMZW5ndGggPiAwKSB7
CiAgICAgICAgIGlmIChzcmNMZW5ndGggPiBzdGF0aWNfY2FzdDxHQ0dMdWludD4oYWN0dWFsU2l6
ZSkpIHsKICAgICAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJ
TlZBTElEX1ZBTFVFLCBmdW5jdGlvbk5hbWUsICJpbnZhbGlkIHNyY09mZnNldCArIHNyY0xlbmd0
aCIpOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgcmV0dXJuIHsgfTsK
ICAgICAgICAgfQogICAgICAgICBhY3R1YWxTaXplID0gc3JjTGVuZ3RoOwogICAgIH0KICAgICBp
ZiAoYWN0dWFsU2l6ZSA8IHJlcXVpcmVkTWluU2l6ZSB8fCAoYWN0dWFsU2l6ZSAlIHJlcXVpcmVk
TWluU2l6ZSkpIHsKICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6
OklOVkFMSURfVkFMVUUsIGZ1bmN0aW9uTmFtZSwgImludmFsaWQgc2l6ZSIpOwotICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiB7IH07CiAgICAgfQotICAgIHJldHVybiB0cnVl
OworICAgIHJldHVybiBtYWtlR0NHTFNwYW4odmFsdWVzLmRhdGEoKSArIHNyY09mZnNldCwgYWN0
dWFsU2l6ZSk7CiB9CiAKK3RlbXBsYXRlCitPcHRpb25hbDxHQ0dMU3Bhbjxjb25zdCBHQ0dMdWlu
dD4+IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlVW5pZm9ybU1hdHJpeFBhcmFt
ZXRlcnM8R0NHTHVpbnQsIFVpbnQzMkFycmF5Pihjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIGNv
bnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBU
eXBlZExpc3Q8VWludDMyQXJyYXksIHVpbnQzMl90PiYgdmFsdWVzLCBHQ0dMc2l6ZWkgcmVxdWly
ZWRNaW5TaXplLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCk7CisKK3Rl
bXBsYXRlCitPcHRpb25hbDxHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50Pj4gV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6dmFsaWRhdGVVbmlmb3JtTWF0cml4UGFyYW1ldGVyczxHQ0dMaW50LCBJbnQz
MkFycmF5Pihjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0
aW9uKiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBUeXBlZExpc3Q8SW50MzJBcnJheSwg
aW50MzJfdD4mIHZhbHVlcywgR0NHTHNpemVpIHJlcXVpcmVkTWluU2l6ZSwgR0NHTHVpbnQgc3Jj
T2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpOworCit0ZW1wbGF0ZQorT3B0aW9uYWw8R0NHTFNw
YW48Y29uc3QgR0NHTGZsb2F0Pj4gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmFsaWRhdGVV
bmlmb3JtTWF0cml4UGFyYW1ldGVyczxHQ0dMZmxvYXQsIEZsb2F0MzJBcnJheT4oY29uc3QgY2hh
ciogZnVuY3Rpb25OYW1lLCBjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiosIEdDR0xib29sZWFu
IHRyYW5zcG9zZSwgY29uc3QgVHlwZWRMaXN0PEZsb2F0MzJBcnJheSwgZmxvYXQ+JiB2YWx1ZXMs
IEdDR0xzaXplaSByZXF1aXJlZE1pblNpemUsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQg
c3JjTGVuZ3RoKTsKKwogV2ViR0xCdWZmZXIqIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZh
bGlkYXRlQnVmZmVyRGF0YVBhcmFtZXRlcnMoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xlbnVtIHVzYWdlKQogewogICAgIFdlYkdMQnVmZmVyKiBidWZmZXIg
PSB2YWxpZGF0ZUJ1ZmZlckRhdGFUYXJnZXQoZnVuY3Rpb25OYW1lLCB0YXJnZXQpOwpAQCAtNzI0
NiwxNiArNzI1NywxNiBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZlcnRleEF0
dHJpYmZ2SW1wbChjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIEdDRwogICAgIHsKICAgICAgICAg
c3dpdGNoIChleHBlY3RlZFNpemUpIHsKICAgICAgICAgY2FzZSAxOgotICAgICAgICAgICAgbV9j
b250ZXh0LT52ZXJ0ZXhBdHRyaWIxZnYoaW5kZXgsIGRhdGEpOworICAgICAgICAgICAgbV9jb250
ZXh0LT52ZXJ0ZXhBdHRyaWIxZnYoaW5kZXgsIG1ha2VHQ0dMU3BhbjwxPihkYXRhKSk7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSAyOgotICAgICAgICAgICAgbV9jb250ZXh0LT52
ZXJ0ZXhBdHRyaWIyZnYoaW5kZXgsIGRhdGEpOworICAgICAgICAgICAgbV9jb250ZXh0LT52ZXJ0
ZXhBdHRyaWIyZnYoaW5kZXgsIG1ha2VHQ0dMU3BhbjwyPihkYXRhKSk7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgY2FzZSAzOgotICAgICAgICAgICAgbV9jb250ZXh0LT52ZXJ0ZXhBdHRy
aWIzZnYoaW5kZXgsIGRhdGEpOworICAgICAgICAgICAgbV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWIz
ZnYoaW5kZXgsIG1ha2VHQ0dMU3BhbjwzPihkYXRhKSk7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgY2FzZSA0OgotICAgICAgICAgICAgbV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWI0ZnYoaW5k
ZXgsIGRhdGEpOworICAgICAgICAgICAgbV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWI0ZnYoaW5kZXgs
IG1ha2VHQ0dMU3Bhbjw0PihkYXRhKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQog
ICAgIH0KQEAgLTczMzAsNyArNzM0MSw3IEBAIE9wdGlvbmFsPGJvb2w+IFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2U6OnNpbXVsYXRlVmVydGV4QXR0cmliMChHQ0dMdWludCBudW1WZXJ0CiAKICAg
ICBpZiAoYnVmZmVyRGF0YVNpemUgPiBtX3ZlcnRleEF0dHJpYjBCdWZmZXJTaXplKSB7CiAgICAg
ICAgIG1fY29udGV4dC0+bW92ZUVycm9yc1RvU3ludGhldGljRXJyb3JMaXN0KCk7Ci0gICAgICAg
IG1fY29udGV4dC0+YnVmZmVyRGF0YShHcmFwaGljc0NvbnRleHRHTDo6QVJSQVlfQlVGRkVSLCBi
dWZmZXJEYXRhU2l6ZSwgMCwgR3JhcGhpY3NDb250ZXh0R0w6OkRZTkFNSUNfRFJBVyk7CisgICAg
ICAgIG1fY29udGV4dC0+YnVmZmVyRGF0YShHcmFwaGljc0NvbnRleHRHTDo6QVJSQVlfQlVGRkVS
LCBidWZmZXJEYXRhU2l6ZSwgR3JhcGhpY3NDb250ZXh0R0w6OkRZTkFNSUNfRFJBVyk7CiAgICAg
ICAgIGlmIChtX2NvbnRleHQtPmdldEVycm9yKCkgIT0gR3JhcGhpY3NDb250ZXh0R0w6Ok5PX0VS
Uk9SKSB7CiAgICAgICAgICAgICAvLyBXZSB3ZXJlIHVuYWJsZSB0byBjcmVhdGUgYSBidWZmZXIu
CiAgICAgICAgICAgICBtX3ZlcnRleEF0dHJpYjBVc2VkQmVmb3JlID0gZmFsc2U7CkBAIC03MzY1
LDcgKzczNzYsNyBAQCBPcHRpb25hbDxib29sPiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpz
aW11bGF0ZVZlcnRleEF0dHJpYjAoR0NHTHVpbnQgbnVtVmVydAogICAgICAgICBtX3ZlcnRleEF0
dHJpYjBCdWZmZXJWYWx1ZVsyXSA9IGF0dHJpYlZhbHVlLmZWYWx1ZVsyXTsKICAgICAgICAgbV92
ZXJ0ZXhBdHRyaWIwQnVmZmVyVmFsdWVbM10gPSBhdHRyaWJWYWx1ZS5mVmFsdWVbM107CiAgICAg
ICAgIG1fZm9yY2VBdHRyaWIwQnVmZmVyUmVmaWxsID0gZmFsc2U7Ci0gICAgICAgIG1fY29udGV4
dC0+YnVmZmVyU3ViRGF0YShHcmFwaGljc0NvbnRleHRHTDo6QVJSQVlfQlVGRkVSLCAwLCBidWZm
ZXJEYXRhU2l6ZSwgYnVmZmVyRGF0YS5nZXQoKSk7CisgICAgICAgIG1fY29udGV4dC0+YnVmZmVy
U3ViRGF0YShHcmFwaGljc0NvbnRleHRHTDo6QVJSQVlfQlVGRkVSLCAwLCBtYWtlR0NHTFNwYW4o
YnVmZmVyRGF0YS5nZXQoKSwgYnVmZmVyRGF0YVNpemUpKTsKICAgICB9CiAgICAgbV9jb250ZXh0
LT52ZXJ0ZXhBdHRyaWJQb2ludGVyKDAsIDQsIEdyYXBoaWNzQ29udGV4dEdMOjpGTE9BVCwgMCwg
MCwgMCk7CiAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmgKaW5kZXggYTcxZDAzNmFhMGRlYTUy
YjQ1NzkwOWZiZmZkYzNhZGY4MGY1MTBjYy4uMDA3ODI4ZjdmZDU3M2VhNTAwNTk0MGVkNTZlNDM5
NzUxNTc0M2U3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaApAQCAtMTAwNSwxMiArMTAwNSwxMyBAQCBwcm90ZWN0
ZWQ6CiAKICAgICAvLyBIZWxwZXIgZnVuY3Rpb24gdG8gdmFsaWRhdGUgaW5wdXQgcGFyYW1ldGVy
cyBmb3IgdW5pZm9ybSBmdW5jdGlvbnMuCiAgICAgYm9vbCB2YWxpZGF0ZVVuaWZvcm1Mb2NhdGlv
bihjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKik7
Ci0gICAgYm9vbCB2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKGNvbnN0IGNoYXIqIGZ1bmN0aW9u
TmFtZSwgY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qLCBjb25zdCBGbG9hdDMyTGlzdCYsIEdD
R0xzaXplaSByZXF1aXJlZE1pblNpemUsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3Jj
TGVuZ3RoKTsKLSAgICBib29sIHZhbGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMoY29uc3QgY2hhciog
ZnVuY3Rpb25OYW1lLCBjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiosIGNvbnN0IEludDMyTGlz
dCYsIEdDR0xzaXplaSByZXF1aXJlZE1pblNpemUsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVp
bnQgc3JjTGVuZ3RoKTsKLSAgICBib29sIHZhbGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMoY29uc3Qg
Y2hhciogZnVuY3Rpb25OYW1lLCBjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiosIGNvbnN0IFVp
bnQzMkxpc3QmLCBHQ0dMc2l6ZWkgcmVxdWlyZWRNaW5TaXplLCBHQ0dMdWludCBzcmNPZmZzZXQs
IEdDR0x1aW50IHNyY0xlbmd0aCk7Ci0gICAgYm9vbCB2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJz
KGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qLCB2
b2lkKiwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgcmVxdWlyZWRNaW5TaXplLCBHQ0dMdWludCBzcmNP
ZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCk7Ci0gICAgYm9vbCB2YWxpZGF0ZVVuaWZvcm1NYXRy
aXhQYXJhbWV0ZXJzKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgY29uc3QgV2ViR0xVbmlmb3Jt
TG9jYXRpb24qLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEZsb2F0MzJMaXN0JiwgR0NH
THNpemVpIHJlcXVpcmVkTWluU2l6ZSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNM
ZW5ndGgpOwotICAgIGJvb2wgdmFsaWRhdGVVbmlmb3JtTWF0cml4UGFyYW1ldGVycyhjb25zdCBj
aGFyKiBmdW5jdGlvbk5hbWUsIGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiwgR0NHTGJvb2xl
YW4gdHJhbnNwb3NlLCBjb25zdCB2b2lkKiwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgcmVxdWlyZWRN
aW5TaXplLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCk7CisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVHlwZWRMaXN0VHlwZT4KKyAgICBPcHRpb25hbDxH
Q0dMU3Bhbjxjb25zdCBUPj4gdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycyhjb25zdCBjaGFyKiBm
dW5jdGlvbk5hbWUsIGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgY29uc3Qg
VHlwZWRMaXN0PFR5cGVkTGlzdFR5cGUsIFQ+JiB2YWx1ZXMsIEdDR0xzaXplaSByZXF1aXJlZE1p
blNpemUsIEdDR0x1aW50IHNyY09mZnNldCA9IDAsIEdDR0x1aW50IHNyY0xlbmd0aCA9IDApCisg
ICAgeworICAgICAgICByZXR1cm4gdmFsaWRhdGVVbmlmb3JtTWF0cml4UGFyYW1ldGVycyhmdW5j
dGlvbk5hbWUsIGxvY2F0aW9uLCBmYWxzZSwgdmFsdWVzLCByZXF1aXJlZE1pblNpemUsIHNyY09m
ZnNldCwgc3JjTGVuZ3RoKTsKKyAgICB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5h
bWUgVHlwZWRMaXN0VHlwZT4KKyAgICBPcHRpb25hbDxHQ0dMU3Bhbjxjb25zdCBUPj4gdmFsaWRh
dGVVbmlmb3JtTWF0cml4UGFyYW1ldGVycyhjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIGNvbnN0
IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBUeXBl
ZExpc3Q8VHlwZWRMaXN0VHlwZSwgVD4mLCBHQ0dMc2l6ZWkgcmVxdWlyZWRNaW5TaXplLCBHQ0dM
dWludCBzcmNPZmZzZXQgPSAwLCBHQ0dMdWludCBzcmNMZW5ndGggPSAwKTsKIAogICAgIC8vIEhl
bHBlciBmdW5jdGlvbiB0byB2YWxpZGF0ZSBwYXJhbWV0ZXJzIGZvciBidWZmZXJEYXRhLgogICAg
IC8vIFJldHVybiB0aGUgY3VycmVudCBib3VuZCBidWZmZXIgdG8gdGFyZ2V0LCBvciAwIGlmIHBh
cmFtZXRlcnMgYXJlIGludmFsaWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9FeHRlbnNpb25zR0wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0V4dGVuc2lvbnNHTC5oCmluZGV4IGJhODY1YjMzMDhlNmM5NDU4MjIxMjIzNzc5NmQ2ZmQ1
Nzc0ODQ3ZjguLjhmNjg0MDYxZmE2ZGRiNzYzYTc1YjQ5ZjM4MmU1OTU1NmQ5OTJmZGQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0V4dGVuc2lvbnNHTC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0V4dGVuc2lvbnNHTC5oCkBAIC0y
OTgsNyArMjk4LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBwb3BHcm91cE1hcmtlckVY
VCh2b2lkKSA9IDA7CiAKICAgICAvLyBHTF9BUkJfZHJhd19idWZmZXJzIC8gR0xfRVhUX2RyYXdf
YnVmZmVycwotICAgIHZpcnR1YWwgdm9pZCBkcmF3QnVmZmVyc0VYVChHQ0dMc2l6ZWkgbiwgY29u
c3QgR0NHTGVudW0qIGJ1ZnMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd0J1ZmZlcnNFWFQo
R0NHTFNwYW48Y29uc3QgR0NHTGVudW0+IGJ1ZnMpID0gMDsKIAogICAgIC8vIEdMX0FOR0xFX2lu
c3RhbmNlZF9hcnJheXMKICAgICB2aXJ0dWFsIHZvaWQgZHJhd0FycmF5c0luc3RhbmNlZChHQ0dM
ZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xzaXplaSBwcmlt
Y291bnQpID0gMDsKQEAgLTMwNywxNyArMzA3LDE3IEBAIHB1YmxpYzoKIAogICAgIC8vIEdMX0FO
R0xFX3JvYnVzdF9jbGllbnRfbWVtb3J5CiAgICAgdmlydHVhbCB2b2lkIHJlYWRQaXhlbHNSb2J1
c3RBTkdMRShHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkg
aGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHNpemVpKiBjb2x1bW5zLCBHQ0dMc2l6ZWkqIHJvd3Ms
IEdDR0x2b2lkKiBwaXhlbHMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdGV4SW1hZ2UyRFJvYnVz
dEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCBpbnRlcm5hbGZv
cm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwg
R0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3Qg
R0NHTHZvaWQqIHBpeGVscykgPSAwOworICAgIHZpcnR1YWwgdm9pZCB0ZXhJbWFnZTJEUm9idXN0
QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IGludGVybmFsZm9y
bWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBH
Q0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBw
aXhlbHMpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdGV4UGFyYW1ldGVyZnZSb2J1c3RBTkdMRShH
Q0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3Qg
R0NHTGZsb2F0KiBwYXJhbXMpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdGV4UGFyYW1ldGVyaXZS
b2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgY29uc3QgR0NHTGludCogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHRleFN1
YkltYWdlMkRSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xp
bnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBo
ZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUs
IGNvbnN0IEdDR0x2b2lkKiBwaXhlbHMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgY29tcHJlc3Nl
ZFRleEltYWdlMkRSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdD
R0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQs
IEdDR0xpbnQgYm9yZGVyLCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
Y29uc3QgR0NHTHZvaWQqIGRhdGEpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgY29tcHJlc3NlZFRl
eFN1YkltYWdlMkRSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdD
R0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXpl
aSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIGNvbnN0IEdDR0x2b2lkKiBkYXRhKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGNv
bXByZXNzZWRUZXhJbWFnZTNEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxl
dmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkg
aGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMc2l6ZWkgaW1hZ2VT
aXplLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTHZvaWQqIGRhdGEpID0gMDsKLSAgICB2
aXJ0dWFsIHZvaWQgY29tcHJlc3NlZFRleFN1YkltYWdlM0RSb2J1c3RBTkdMRShHQ0dMZW51bSB0
YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBH
Q0dMaW50IHpvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNp
emVpIGRlcHRoLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xzaXpl
aSBidWZTaXplLCBjb25zdCBHQ0dMdm9pZCogZGF0YSkgPSAwOwotCi0gICAgdmlydHVhbCB2b2lk
IHRleEltYWdlM0RSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdD
R0xpbnQgaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwg
R0NHTHNpemVpIGRlcHRoLCBHQ0dMaW50IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51
bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTHZvaWQqIHBpeGVscykgPSAwOwot
ICAgIHZpcnR1YWwgdm9pZCB0ZXhTdWJJbWFnZTNEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTGlu
dCB6b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBk
ZXB0aCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
Y29uc3QgR0NHTHZvaWQqIHBpeGVscykgPSAwOworICAgIHZpcnR1YWwgdm9pZCB0ZXhTdWJJbWFn
ZTJEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhv
ZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0
LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lk
PiBwaXhlbHMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY29tcHJlc3NlZFRleEltYWdlMkRSb2J1
c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFs
Zm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVy
LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gZGF0YSkgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRFJvYnVzdEFOR0xFKEdD
R0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlv
ZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0
LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gZGF0YSkgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBjb21wcmVzc2VkVGV4SW1hZ2UzRFJvYnVzdEFOR0xFKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xz
aXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMaW50IGJv
cmRlciwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY29tcHJlc3NlZFRleFN1YkltYWdlM0RSb2J1c3RBTkdM
RShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGlu
dCB5b2Zmc2V0LCBHQ0dMaW50IHpvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhl
aWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFnZVNp
emUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRhKSA9IDA7CisKKyAgICB2aXJ0dWFsIHZv
aWQgdGV4SW1hZ2UzRFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwg
R0NHTGludCBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0
LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xl
bnVtIHR5cGUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBwaXhlbHMpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgdGV4U3ViSW1hZ2UzRFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGlu
dCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xpbnQgem9mZnNl
dCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdD
R0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IHBp
eGVscykgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBnZXRRdWVyeWl2Um9idXN0QU5HTEUoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSog
bGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0UXVlcnlP
YmplY3R1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQqIHBhcmFtcykgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCBnZXRCdWZmZXJQb2ludGVydlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwg
R0NHTHZvaWQqKiBwYXJhbXMpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5oCmluZGV4IDBhNzE1NDBjZTgwMjBmZDlmNTgx
Njg2MDNmNjc2OWI5NDQ1MjI0MTUuLjhlYjJjZWZjNzM3OGQ0NTA3OGQxOTBhNWYxMTNmYjgyM2Yx
ZGI5NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzQ29udGV4dEdMLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NDb250ZXh0R0wuaApAQCAtMzczLDcgKzM3Myw3IEBAIHB1YmxpYzoKICAgICAgICAgVU5Q
QUNLX0NPTE9SU1BBQ0VfQ09OVkVSU0lPTl9XRUJHTCA9IDB4OTI0MywKICAgICAgICAgQlJPV1NF
Ul9ERUZBVUxUX1dFQkdMID0gMHg5MjQ0LAogICAgICAgICBWRVJURVhfQVRUUklCX0FSUkFZX0RJ
VklTT1JfQU5HTEUgPSAweDg4RkUsCi0gICAgICAgIAorCiAgICAgICAgIC8vIFdlYkdMMiBjb25z
dGFudHMKICAgICAgICAgUkVBRF9CVUZGRVIgPSAweDBDMDIsCiAgICAgICAgIFVOUEFDS19ST1df
TEVOR1RIID0gMHgwQ0YyLApAQCAtMTA2Myw0OSArMTA2Myw0OSBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIHRleFBhcmFtZXRlcmkoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwg
R0NHTGludCBwYXJhbSkgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIHVuaWZvcm0xZihHQ0dMaW50
IGxvY2F0aW9uLCBHQ0dMZmxvYXQgeCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtMWZ2
KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSwgY29uc3QgR0NHTGZsb2F0KiB2KSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIHVuaWZvcm0xZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29u
c3QgR0NHTGZsb2F0PiB2KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHVuaWZvcm0xaShHQ0dMaW50
IGxvY2F0aW9uLCBHQ0dMaW50IHgpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybTFpdihH
Q0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWksIGNvbnN0IEdDR0xpbnQqIHYpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgdW5pZm9ybTFpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBH
Q0dMaW50PiB2KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHVuaWZvcm0yZihHQ0dMaW50IGxvY2F0
aW9uLCBHQ0dMZmxvYXQgeCwgR0NHTGZsb2F0IHkpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdW5p
Zm9ybTJmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWksIGNvbnN0IEdDR0xmbG9hdCogdikg
PSAwOworICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtMmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xT
cGFuPGNvbnN0IEdDR0xmbG9hdD4gdikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtMmko
R0NHTGludCBsb2NhdGlvbiwgR0NHTGludCB4LCBHQ0dMaW50IHkpID0gMDsKLSAgICB2aXJ0dWFs
IHZvaWQgdW5pZm9ybTJpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWksIGNvbnN0IEdDR0xp
bnQqIHYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybTJpdihHQ0dMaW50IGxvY2F0aW9u
LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50PiB2KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHVuaWZv
cm0zZihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMZmxvYXQgeCwgR0NHTGZsb2F0IHksIEdDR0xmbG9h
dCB6KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHVuaWZvcm0zZnYoR0NHTGludCBsb2NhdGlvbiwg
R0NHTHNpemVpLCBjb25zdCBHQ0dMZmxvYXQqIHYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdW5p
Zm9ybTNmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IHYpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybTNpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xpbnQg
eCwgR0NHTGludCB5LCBHQ0dMaW50IHopID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybTNp
dihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWksIGNvbnN0IEdDR0xpbnQqIHYpID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgdW5pZm9ybTNpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25z
dCBHQ0dMaW50PiB2KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHVuaWZvcm00ZihHQ0dMaW50IGxv
Y2F0aW9uLCBHQ0dMZmxvYXQgeCwgR0NHTGZsb2F0IHksIEdDR0xmbG9hdCB6LCBHQ0dMZmxvYXQg
dykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtNGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdD
R0xzaXplaSwgY29uc3QgR0NHTGZsb2F0KiB2KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVuaWZv
cm00ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiB2KSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIHVuaWZvcm00aShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMaW50IHgs
IEdDR0xpbnQgeSwgR0NHTGludCB6LCBHQ0dMaW50IHcpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQg
dW5pZm9ybTRpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWksIGNvbnN0IEdDR0xpbnQqIHYp
ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybU1hdHJpeDJmdihHQ0dMaW50IGxvY2F0aW9u
LCBHQ0dMc2l6ZWksIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiB2YWx1
ZSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtTWF0cml4M2Z2KEdDR0xpbnQgbG9jYXRp
b24sIEdDR0xzaXplaSwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHQ0dMZmxvYXQqIHZh
bHVlKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHVuaWZvcm1NYXRyaXg0ZnYoR0NHTGludCBsb2Nh
dGlvbiwgR0NHTHNpemVpLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCog
dmFsdWUpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybTRpdihHQ0dMaW50IGxvY2F0aW9u
LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50PiB2KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVuaWZv
cm1NYXRyaXgyZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dM
U3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IHZhbHVlKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVuaWZv
cm1NYXRyaXgzZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dM
U3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IHZhbHVlKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVuaWZv
cm1NYXRyaXg0ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dM
U3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IHZhbHVlKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgdXNl
UHJvZ3JhbShQbGF0Zm9ybUdMT2JqZWN0KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHZhbGlkYXRl
UHJvZ3JhbShQbGF0Zm9ybUdMT2JqZWN0KSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgdmVydGV4
QXR0cmliMWYoR0NHTHVpbnQgaW5kZXgsIEdDR0xmbG9hdCB4KSA9IDA7Ci0gICAgdmlydHVhbCB2
b2lkIHZlcnRleEF0dHJpYjFmdihHQ0dMdWludCBpbmRleCwgY29uc3QgR0NHTGZsb2F0KiB2YWx1
ZXMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdmVydGV4QXR0cmliMWZ2KEdDR0x1aW50IGluZGV4
LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQsIDE+IHZhbHVlcykgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCB2ZXJ0ZXhBdHRyaWIyZihHQ0dMdWludCBpbmRleCwgR0NHTGZsb2F0IHgsIEdDR0xmbG9h
dCB5KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHZlcnRleEF0dHJpYjJmdihHQ0dMdWludCBpbmRl
eCwgY29uc3QgR0NHTGZsb2F0KiB2YWx1ZXMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdmVydGV4
QXR0cmliMmZ2KEdDR0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQsIDI+IHZh
bHVlcykgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB2ZXJ0ZXhBdHRyaWIzZihHQ0dMdWludCBpbmRl
eCwgR0NHTGZsb2F0IHgsIEdDR0xmbG9hdCB5LCBHQ0dMZmxvYXQgeikgPSAwOwotICAgIHZpcnR1
YWwgdm9pZCB2ZXJ0ZXhBdHRyaWIzZnYoR0NHTHVpbnQgaW5kZXgsIGNvbnN0IEdDR0xmbG9hdCog
dmFsdWVzKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHZlcnRleEF0dHJpYjNmdihHQ0dMdWludCBp
bmRleCwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0LCAzPiB2YWx1ZXMpID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgdmVydGV4QXR0cmliNGYoR0NHTHVpbnQgaW5kZXgsIEdDR0xmbG9hdCB4LCBHQ0dM
ZmxvYXQgeSwgR0NHTGZsb2F0IHosIEdDR0xmbG9hdCB3KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lk
IHZlcnRleEF0dHJpYjRmdihHQ0dMdWludCBpbmRleCwgY29uc3QgR0NHTGZsb2F0KiB2YWx1ZXMp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdmVydGV4QXR0cmliNGZ2KEdDR0x1aW50IGluZGV4LCBH
Q0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQsIDQ+IHZhbHVlcykgPSAwOwogCiAgICAgdmlydHVhbCB2
b2lkIHZlcnRleEF0dHJpYlBvaW50ZXIoR0NHTHVpbnQgaW5kZXgsIEdDR0xpbnQgc2l6ZSwgR0NH
TGVudW0gdHlwZSwgR0NHTGJvb2xlYW4gbm9ybWFsaXplZCwgR0NHTHNpemVpIHN0cmlkZSwgR0NH
TGludHB0ciBvZmZzZXQpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCB2aWV3cG9ydChHQ0dMaW50
IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KSA9IDA7CiAK
ICAgICB2aXJ0dWFsIHZvaWQgYnVmZmVyRGF0YShHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaXB0
ciwgR0NHTGVudW0gdXNhZ2UpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgYnVmZmVyRGF0YShHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xzaXplaXB0ciwgY29uc3QgR0NHTHZvaWQqIGRhdGEsIEdDR0xlbnVt
IHVzYWdlKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGJ1ZmZlclN1YkRhdGEoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMaW50cHRyIG9mZnNldCwgR0NHTHNpemVpcHRyLCBjb25zdCBHQ0dMdm9pZCogZGF0
YSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBidWZmZXJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NH
TFNwYW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEsIEdDR0xlbnVtIHVzYWdlKSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIGJ1ZmZlclN1YkRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50cHRyIG9mZnNl
dCwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEpID0gMDsKIAogICAgIHZpcnR1YWwgdm9p
ZCByZWFkUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xz
aXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHZvaWQqIGRh
dGEpID0gMDsKIAotICAgIHZpcnR1YWwgYm9vbCB0ZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwg
R0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVu
dW0gdHlwZSwgY29uc3QgR0NHTHZvaWQqIHBpeGVscykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB0
ZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zm
c2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwg
R0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBjb25zdCBHQ0dMdm9pZCogcGl4ZWxzKSA9
IDA7CisgICAgdmlydHVhbCBib29sIHRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50
IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6
ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBl
LCAgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IHBpeGVscykgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCB0ZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4
b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdo
dCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9p
ZD4gcGl4ZWxzKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgZHJhd0FycmF5c0luc3RhbmNlZChH
Q0dMZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xzaXplaSBw
cmltY291bnQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZHJhd0VsZW1lbnRzSW5zdGFuY2VkKEdD
R0xlbnVtIG1vZGUsIEdDR0xzaXplaSBjb3VudCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBv
ZmZzZXQsIEdDR0xzaXplaSBwcmltY291bnQpID0gMDsKQEAgLTExMjUsOCArMTEyNSw4IEBAIHB1
YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBibGl0RnJhbWVidWZmZXIoR0NHTGludCBzcmNYMCwg
R0NHTGludCBzcmNZMCwgR0NHTGludCBzcmNYMSwgR0NHTGludCBzcmNZMSwgR0NHTGludCBkc3RY
MCwgR0NHTGludCBkc3RZMCwgR0NHTGludCBkc3RYMSwgR0NHTGludCBkc3RZMSwgR0NHTGJpdGZp
ZWxkIG1hc2ssIEdDR0xlbnVtIGZpbHRlcikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBmcmFtZWJ1
ZmZlclRleHR1cmVMYXllcihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGF0dGFjaG1lbnQsIFBs
YXRmb3JtR0xPYmplY3QgdGV4dHVyZSwgR0NHTGludCBsZXZlbCwgR0NHTGludCBsYXllcikgPSAw
OwotICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlRnJhbWVidWZmZXIoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMc2l6ZWkgbnVtQXR0YWNobWVudHMsIGNvbnN0IEdDR0xlbnVtKiBhdHRhY2htZW50cykg
PSAwOwotICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlU3ViRnJhbWVidWZmZXIoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMc2l6ZWkgbnVtQXR0YWNobWVudHMsIGNvbnN0IEdDR0xlbnVtKiBhdHRhY2ht
ZW50cywgR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhl
aWdodCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlRnJhbWVidWZmZXIoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4gYXR0YWNobWVudHMpID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZVN1YkZyYW1lYnVmZmVyKEdDR0xlbnVtIHRhcmdldCwg
R0NHTFNwYW48Y29uc3QgR0NHTGVudW0+IGF0dGFjaG1lbnRzLCBHQ0dMaW50IHgsIEdDR0xpbnQg
eSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIHJlYWRCdWZmZXIoR0NHTGVudW0gc3JjKSA9IDA7CiAKICAgICAvLyBnZXRJbnRlcm5hbEZv
cm1hdFBhcmFtZXRlcgpAQCAtMTE0OCwyOCArMTE0OCwyOCBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIHVuaWZvcm0ydWkoR0NHTGludCBsb2NhdGlvbiwgR0NHTHVpbnQgdjAsIEdDR0x1aW50
IHYxKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHVuaWZvcm0zdWkoR0NHTGludCBsb2NhdGlvbiwg
R0NHTHVpbnQgdjAsIEdDR0x1aW50IHYxLCBHQ0dMdWludCB2MikgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCB1bmlmb3JtNHVpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0x1aW50IHYwLCBHQ0dMdWludCB2
MSwgR0NHTHVpbnQgdjIsIEdDR0x1aW50IHYzKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHVuaWZv
cm0xdWl2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0x1aW50KiBkYXRhLCBHQ0dMdWludCBz
cmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB1bmlm
b3JtMnVpdihHQ0dMaW50IGxvY2F0aW9uLCBjb25zdCBHQ0dMdWludCogZGF0YSwgR0NHTHVpbnQg
c3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdW5p
Zm9ybTN1aXYoR0NHTGludCBsb2NhdGlvbiwgY29uc3QgR0NHTHVpbnQqIGRhdGEsIEdDR0x1aW50
IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHVu
aWZvcm00dWl2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0x1aW50KiBkYXRhLCBHQ0dMdWlu
dCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB1
bmlmb3JtTWF0cml4MngzZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3Nl
LCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3Jj
TGVuZ3RoKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHVuaWZvcm1NYXRyaXgzeDJmdihHQ0dMaW50
IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwg
R0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpID0gMDsKLSAgICB2aXJ0dWFs
IHZvaWQgdW5pZm9ybU1hdHJpeDJ4NGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRy
YW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1
aW50IHNyY0xlbmd0aCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtTWF0cml4NHgyZnYo
R0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHQ0dMZmxvYXQq
IGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKSA9IDA7Ci0gICAg
dmlydHVhbCB2b2lkIHVuaWZvcm1NYXRyaXgzeDRmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9v
bGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0
LCBHQ0dMdWludCBzcmNMZW5ndGgpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybU1hdHJp
eDR4M2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NH
TGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkgPSAw
OworICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtMXVpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bh
bjxjb25zdCBHQ0dMdWludD4gZGF0YSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtMnVp
dihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdWludD4gZGF0YSkgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtM3VpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxj
b25zdCBHQ0dMdWludD4gZGF0YSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtNHVpdihH
Q0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdWludD4gZGF0YSkgPSAwOworICAg
IHZpcnR1YWwgdm9pZCB1bmlmb3JtTWF0cml4MngzZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJv
b2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEpID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgdW5pZm9ybU1hdHJpeDN4MmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xi
b29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiBkYXRhKSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIHVuaWZvcm1NYXRyaXgyeDRmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dM
Ym9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gZGF0YSkgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtTWF0cml4NHgyZnYoR0NHTGludCBsb2NhdGlvbiwgR0NH
TGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybU1hdHJpeDN4NGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdD
R0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiBkYXRhKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIHVuaWZvcm1NYXRyaXg0eDNmdihHQ0dMaW50IGxvY2F0aW9uLCBH
Q0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gZGF0YSkgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCB2ZXJ0ZXhBdHRyaWJJNGkoR0NHTHVpbnQgaW5kZXgsIEdDR0xp
bnQgeCwgR0NHTGludCB5LCBHQ0dMaW50IHosIEdDR0xpbnQgdykgPSAwOwotICAgIHZpcnR1YWwg
dm9pZCB2ZXJ0ZXhBdHRyaWJJNGl2KEdDR0x1aW50IGluZGV4LCBjb25zdCBHQ0dMaW50KiB2YWx1
ZXMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdmVydGV4QXR0cmliSTRpdihHQ0dMdWludCBpbmRl
eCwgR0NHTFNwYW48Y29uc3QgR0NHTGludCwgND4gdmFsdWVzKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIHZlcnRleEF0dHJpYkk0dWkoR0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50IHgsIEdDR0x1aW50
IHksIEdDR0x1aW50IHosIEdDR0x1aW50IHcpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdmVydGV4
QXR0cmliSTR1aXYoR0NHTHVpbnQgaW5kZXgsIGNvbnN0IEdDR0x1aW50KiB2YWx1ZXMpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgdmVydGV4QXR0cmliSTR1aXYoR0NHTHVpbnQgaW5kZXgsIEdDR0xT
cGFuPGNvbnN0IEdDR0x1aW50LCA0PiB2YWx1ZXMpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdmVy
dGV4QXR0cmliSVBvaW50ZXIoR0NHTHVpbnQgaW5kZXgsIEdDR0xpbnQgc2l6ZSwgR0NHTGVudW0g
dHlwZSwgR0NHTHNpemVpIHN0cmlkZSwgR0NHTGludHB0ciBvZmZzZXQpID0gMDsKIAogICAgIHZp
cnR1YWwgdm9pZCBkcmF3UmFuZ2VFbGVtZW50cyhHQ0dMZW51bSBtb2RlLCBHQ0dMdWludCBzdGFy
dCwgR0NHTHVpbnQgZW5kLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRw
dHIgb2Zmc2V0KSA9IDA7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZHJhd0J1ZmZlcnMoR0NHTHNpemVp
IG4sIGNvbnN0IEdDR0xlbnVtKiBidWZzKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGNsZWFyQnVm
ZmVyaXYoR0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50IGRyYXdidWZmZXIsIGNvbnN0IEdDR0xpbnQq
IHZhbHVlcywgR0NHTHVpbnQgc3JjT2Zmc2V0KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGNsZWFy
QnVmZmVydWl2KEdDR0xlbnVtIGJ1ZmZlciwgR0NHTGludCBkcmF3YnVmZmVyLCBjb25zdCBHQ0dM
dWludCogdmFsdWVzLCBHQ0dMdWludCBzcmNPZmZzZXQpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQg
Y2xlYXJCdWZmZXJmdihHQ0dMZW51bSBidWZmZXIsIEdDR0xpbnQgZHJhd2J1ZmZlciwgY29uc3Qg
R0NHTGZsb2F0KiB2YWx1ZXMsIEdDR0x1aW50IHNyY09mZnNldCkgPSAwOworICAgIHZpcnR1YWwg
dm9pZCBkcmF3QnVmZmVycyhHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4gYnVmcykgPSAwOworICAg
IHZpcnR1YWwgdm9pZCBjbGVhckJ1ZmZlcml2KEdDR0xlbnVtIGJ1ZmZlciwgR0NHTGludCBkcmF3
YnVmZmVyLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50PiB2YWx1ZXMpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgY2xlYXJCdWZmZXJ1aXYoR0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50IGRyYXdidWZmZXIs
IEdDR0xTcGFuPGNvbnN0IEdDR0x1aW50PiB2YWx1ZXMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
Y2xlYXJCdWZmZXJmdihHQ0dMZW51bSBidWZmZXIsIEdDR0xpbnQgZHJhd2J1ZmZlciwgR0NHTFNw
YW48Y29uc3QgR0NHTGZsb2F0PiB2YWx1ZXMpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY2xlYXJC
dWZmZXJmaShHQ0dMZW51bSBidWZmZXIsIEdDR0xpbnQgZHJhd2J1ZmZlciwgR0NHTGZsb2F0IGRl
cHRoLCBHQ0dMaW50IHN0ZW5jaWwpID0gMDsKIAogICAgIHZpcnR1YWwgUGxhdGZvcm1HTE9iamVj
dCBjcmVhdGVRdWVyeSgpID0gMDsKQEAgLTEyMjEsMjAgKzEyMjEsNiBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCBTdHJpbmcgZ2V0QWN0aXZlVW5pZm9ybUJsb2NrTmFtZShQbGF0Zm9ybUdMT2JqZWN0
IHByb2dyYW0sIEdDR0x1aW50IHVuaWZvcm1CbG9ja0luZGV4KSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIHVuaWZvcm1CbG9ja0JpbmRpbmcoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMdWlu
dCB1bmlmb3JtQmxvY2tJbmRleCwgR0NHTHVpbnQgdW5pZm9ybUJsb2NrQmluZGluZykgPSAwOwog
Ci0gICAgdmlydHVhbCB2b2lkIHVuaWZvcm0xZnYoR0NHTGludCBsb2NhdGlvbiwgY29uc3QgR0NH
TGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkgPSAw
OwotICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtMmZ2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdD
R0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpID0g
MDsKLSAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybTNmdihHQ0dMaW50IGxvY2F0aW9uLCBjb25zdCBH
Q0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKSA9
IDA7Ci0gICAgdmlydHVhbCB2b2lkIHVuaWZvcm00ZnYoR0NHTGludCBsb2NhdGlvbiwgY29uc3Qg
R0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkg
PSAwOwotCi0gICAgdmlydHVhbCB2b2lkIHVuaWZvcm0xaXYoR0NHTGludCBsb2NhdGlvbiwgY29u
c3QgR0NHTGludCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgp
ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybTJpdihHQ0dMaW50IGxvY2F0aW9uLCBjb25z
dCBHQ0dMaW50KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkg
PSAwOwotICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtM2l2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0
IEdDR0xpbnQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKSA9
IDA7Ci0gICAgdmlydHVhbCB2b2lkIHVuaWZvcm00aXYoR0NHTGludCBsb2NhdGlvbiwgY29uc3Qg
R0NHTGludCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpID0g
MDsKLQotICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtTWF0cml4MmZ2KEdDR0xpbnQgbG9jYXRpb24s
IEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBz
cmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB1bmlm
b3JtTWF0cml4M2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29u
c3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0
aCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtTWF0cml4NGZ2KEdDR0xpbnQgbG9jYXRp
b24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWlu
dCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkgPSAwOwotCiAgICAgdmlydHVhbCB2b2lk
IGdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2KEdDR0x1aW50IHByb2dyYW0sIEdDR0x1aW50IHVuaWZv
cm1CbG9ja0luZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGludD4gcGFyYW1zKSA9
IDA7CiAKICAgICAvLyBPdGhlciBmdW5jdGlvbnMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5cGVzR0wuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXNHTC5oCmluZGV4IGU3YzY5YjI4ZGNlNDY1ODI1
NzU3NzMzMzI1YjhmNDRkZjI3MjA3YjkuLjA2MmU1NTY3YTJjMTlkYjdiMjgxOTFiYWE4NWQzNzdj
YzAxNmM0ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzVHlwZXNHTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzVHlwZXNHTC5oCkBAIC02OCw2ICs2OCwxMCBAQCBzdHJ1Y3QgR0NHTFNwYW4gewogICAg
IEdDR0xTcGFuKFQgKCZhcnJheSlbRXh0ZW50XSkKICAgICAgICAgOiBkYXRhKGFycmF5KQogICAg
IHsgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+CisgICAgR0NHTFNwYW4oY29uc3QgR0NHTFNw
YW48VSwgRXh0ZW50PiYgb3RoZXIsIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19jb252ZXJ0aWJs
ZV92PFUoKilbXSwgVCgqKVtdPiwgbnVsbHB0cl90PiA9IG51bGxwdHIpCisgICAgICAgIDogZGF0
YShvdGhlci5kYXRhKQorICAgIHsgfQogICAgIFQmIG9wZXJhdG9yW10oc2l6ZV90IGkpIHsgUkVM
RUFTRV9BU1NFUlQoZGF0YSAmJiBpIDwgYnVmU2l6ZSk7IHJldHVybiBkYXRhW2ldOyB9CiAgICAg
VCYgb3BlcmF0b3IqKCkgeyBSRUxFQVNFX0FTU0VSVChkYXRhICYmIGJ1ZlNpemUpOyByZXR1cm4g
KmRhdGE7IH0KICAgICBUKiBkYXRhOwpAQCAtODAsMTEgKzg0LDE4IEBAIHN0cnVjdCBHQ0dMU3Bh
bjxULCBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpPiB7CiAgICAgICAgIDogZGF0
YShhcnJheSkKICAgICAgICAgLCBidWZTaXplKGJ1ZlNpemVfKQogICAgIHsgfQotICAgIHRlbXBs
YXRlPHNpemVfdCBTej4gR0NHTFNwYW4oVCAoJmFycmF5KVtTel0pCisgICAgdGVtcGxhdGU8c2l6
ZV90IFN6PgorICAgIEdDR0xTcGFuKFQgKCZhcnJheSlbU3pdKQogICAgICAgICA6IGRhdGEoYXJy
YXkpCiAgICAgICAgICwgYnVmU2l6ZShTeikKICAgICB7IH0KLSAgICBHQ0dMU3BhbihXVEY6OlZl
Y3RvcjxUPiYgYXJyYXkpCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVSwgc2l6ZV90IFVFeHRlbnQ+
CisgICAgR0NHTFNwYW4oY29uc3QgR0NHTFNwYW48VSwgVUV4dGVudD4mIG90aGVyLCBzdGQ6OmVu
YWJsZV9pZl90PHN0ZDo6aXNfY29udmVydGlibGVfdjxVKCopW10sIFQoKilbXT4sIG51bGxwdHJf
dD4gPSBudWxscHRyKQorICAgICAgICA6IGRhdGEob3RoZXIuZGF0YSkKKyAgICAgICAgLCBidWZT
aXplKG90aGVyLmJ1ZlNpemUpCisgICAgeyB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVSwgc2l6
ZV90IGlubGluZUNhcGFjaXR5PgorICAgIEdDR0xTcGFuKFdURjo6VmVjdG9yPFUsIGlubGluZUNh
cGFjaXR5PiYgYXJyYXksIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19jb252ZXJ0aWJsZV92PFUo
KilbXSwgVCgqKVtdPiwgbnVsbHB0cl90PiA9IG51bGxwdHIpCiAgICAgICAgIDogZGF0YShhcnJh
eS5kYXRhKCkpCiAgICAgICAgICwgYnVmU2l6ZShhcnJheS5zaXplKCkpCiAgICAgeyB9CkBAIC05
NCw2ICsxMDUsNTQgQEAgc3RydWN0IEdDR0xTcGFuPFQsIHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6
ZV90Pjo6bWF4KCk+IHsKICAgICBjb25zdCBzaXplX3QgYnVmU2l6ZTsKIH07CiAKK3RlbXBsYXRl
PD4KK3N0cnVjdCBHQ0dMU3BhbjxHQ0dMdm9pZD4geworICAgIEdDR0xTcGFuKEdDR0x2b2lkKiBh
cnJheSwgc2l6ZV90IGJ1ZlNpemVfKQorICAgICAgICA6IGRhdGEoYXJyYXkpCisgICAgICAgICwg
YnVmU2l6ZShidWZTaXplXykKKyAgICB7IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVLCBzaXpl
X3QgU3o+CisgICAgR0NHTFNwYW4oVSAoJmFycmF5KVtTel0pCisgICAgICAgIDogZGF0YShhcnJh
eSkKKyAgICAgICAgLCBidWZTaXplKFN6ICogc2l6ZW9mKFUpKQorICAgIHsgfQorICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFUsIHNpemVfdCBVRXh0ZW50PgorICAgIEdDR0xTcGFuKGNvbnN0IEdDR0xT
cGFuPFUsIFVFeHRlbnQ+JiBvdGhlcikKKyAgICAgICAgOiBkYXRhKG90aGVyLmRhdGEpCisgICAg
ICAgICwgYnVmU2l6ZShvdGhlci5idWZTaXplICogc2l6ZW9mKFUpKQorICAgIHsgfQorICAgIEdD
R0x2b2lkKiBkYXRhOworICAgIGNvbnN0IHNpemVfdCBidWZTaXplOworfTsKKwordGVtcGxhdGU8
Pgorc3RydWN0IEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiB7CisgICAgR0NHTFNwYW4oY29uc3Qg
R0NHTHZvaWQqIGFycmF5LCBzaXplX3QgYnVmU2l6ZV8pCisgICAgICAgIDogZGF0YShhcnJheSkK
KyAgICAgICAgLCBidWZTaXplKGJ1ZlNpemVfKQorICAgIHsgfQorICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFUsIHNpemVfdCBTej4KKyAgICBHQ0dMU3BhbihVICgmYXJyYXkpW1N6XSkKKyAgICAgICAg
OiBkYXRhKGFycmF5KQorICAgICAgICAsIGJ1ZlNpemUoU3ogKiBzaXplb2YoVSkpCisgICAgeyB9
CisgICAgR0NHTFNwYW4oY29uc3QgR0NHTFNwYW48R0NHTHZvaWQ+JiBvdGhlcikKKyAgICAgICAg
OiBkYXRhKG90aGVyLmRhdGEpCisgICAgICAgICwgYnVmU2l6ZShvdGhlci5idWZTaXplKQorICAg
IHsgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUsIHNpemVfdCBVRXh0ZW50PgorICAgIEdDR0xT
cGFuKGNvbnN0IEdDR0xTcGFuPFUsIFVFeHRlbnQ+JiBvdGhlcikKKyAgICAgICAgOiBkYXRhKG90
aGVyLmRhdGEpCisgICAgICAgICwgYnVmU2l6ZShvdGhlci5idWZTaXplICogc2l6ZW9mKFUpKQor
ICAgIHsgfQorICAgIEdDR0xTcGFuKGludHB0cl90IG9mZnNldCkKKyAgICAgICAgOiBkYXRhKHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTHZvaWQqPihvZmZzZXQpKQorICAgICAgICAsIGJ1ZlNp
emUoMCkKKyAgICB7IH0KKyAgICBjb25zdCBHQ0dMdm9pZCogZGF0YTsKKyAgICBjb25zdCBzaXpl
X3QgYnVmU2l6ZTsKK307CisKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBOPgogR0NHTFNw
YW4oVCAoJilbTl0pIC0+IEdDR0xTcGFuPFQsIE4+OwogCkBAIC0xMDUsMyArMTY0LDkgQEAgR0NH
TFNwYW48VD4gbWFrZUdDR0xTcGFuKFQqIGRhdGEsIHNpemVfdCBjb3VudCkKIHsKICAgICByZXR1
cm4gR0NHTFNwYW48VD4geyBkYXRhLCBjb3VudCB9OwogfQorCit0ZW1wbGF0ZTxzaXplX3QgRXh0
ZW50LCB0eXBlbmFtZSBUPgorR0NHTFNwYW48VCwgRXh0ZW50PiBtYWtlR0NHTFNwYW4oVCogZGF0
YSkKK3sKKyAgICByZXR1cm4gR0NHTFNwYW48VCwgRXh0ZW50PiB7IGRhdGEgfTsKK30KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNH
TEFOR0xFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVu
c2lvbnNHTEFOR0xFLmNwcAppbmRleCA0ZDAyNWI5OTM0MjI3NzZiOWI1ZjRhYWJjMzlhMGM3ODkx
OTQwYTk5Li4xMDcxM2FjNTZkMGRlY2FkOTFiYzVjYjE2NzQxYWIyOWI0NWFlNGQ1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xB
TkdMRS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0
ZW5zaW9uc0dMQU5HTEUuY3BwCkBAIC0yMjcsMTIgKzIyNywxMiBAQCBib29sIEV4dGVuc2lvbnNH
TEFOR0xFOjpzdXBwb3J0c0V4dGVuc2lvbihjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAgcmV0dXJu
IG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucyhuYW1lKSB8fCBtX3JlcXVlc3RhYmxlRXh0
ZW5zaW9ucy5jb250YWlucyhuYW1lKTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6ZHJh
d0J1ZmZlcnNFWFQoR0NHTHNpemVpIG4sIGNvbnN0IEdDR0xlbnVtKiBidWZzKQordm9pZCBFeHRl
bnNpb25zR0xBTkdMRTo6ZHJhd0J1ZmZlcnNFWFQoR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+IGJ1
ZnMpCiB7CiAgICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBnbDo6RHJhd0J1ZmZlcnNFWFQobiwgYnVmcyk7CisgICAgZ2w6OkRy
YXdCdWZmZXJzRVhUKGJ1ZnMuYnVmU2l6ZSwgYnVmcy5kYXRhKTsKIH0KIAogdm9pZCBFeHRlbnNp
b25zR0xBTkdMRTo6ZHJhd0FycmF5c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMaW50IGZp
cnN0LCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xzaXplaSBwcmltY291bnQpCkBAIC0yODYsMTQgKzI4
NiwxNCBAQCB2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpyZWFkUGl4ZWxzUm9idXN0QU5HTEUoaW50
IHgsIGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDRwogICAgIGdsOjpSZWFkUGl4ZWxzUm9idXN0
QU5HTEUoeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBidWZTaXplLCBsZW5ndGgs
IGNvbHVtbnMsIHJvd3MsIHBpeGVscyk7CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OnRl
eEltYWdlMkRSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIGludCBsZXZlbCwgaW50IGludGVy
bmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIGludCBib3JkZXIs
IEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0
IHZvaWQgKnBpeGVscykKK3ZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OnRleEltYWdlMkRSb2J1c3RB
TkdMRShHQ0dMZW51bSB0YXJnZXQsIGludCBsZXZlbCwgaW50IGludGVybmFsZm9ybWF0LCBHQ0dM
c2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1h
dCwgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IHBpeGVscykKIHsKICAg
ICBpZiAoIW1fY29udGV4dC0+bV9pc0ZvcldlYkdMMikKICAgICAgICAgaW50ZXJuYWxmb3JtYXQg
PSBhZGp1c3RXZWJHTDFUZXh0dXJlSW50ZXJuYWxGb3JtYXQoaW50ZXJuYWxmb3JtYXQsIGZvcm1h
dCwgdHlwZSk7CiAgICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBnbDo6VGV4SW1hZ2UyRFJvYnVzdEFOR0xFKHRhcmdldCwgbGV2
ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIsIGZvcm1hdCwgdHlwZSwg
YnVmU2l6ZSwgcGl4ZWxzKTsKKyAgICBnbDo6VGV4SW1hZ2UyRFJvYnVzdEFOR0xFKHRhcmdldCwg
bGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIsIGZvcm1hdCwgdHlw
ZSwgcGl4ZWxzLmJ1ZlNpemUsIHBpeGVscy5kYXRhKTsKIH0KIAogdm9pZCBFeHRlbnNpb25zR0xB
TkdMRTo6dGV4UGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVt
IHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGZsb2F0ICpwYXJhbXMpCkBAIC0z
MTIsNjQgKzMxMiw2NCBAQCB2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjp0ZXhQYXJhbWV0ZXJpdlJv
YnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbQogICAgIGdsOjpUZXhQYXJh
bWV0ZXJpdlJvYnVzdEFOR0xFKHRhcmdldCwgcG5hbWUsIGJ1ZlNpemUsIHBhcmFtcyk7CiB9CiAK
LXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OnRleFN1YkltYWdlMkRSb2J1c3RBTkdMRShHQ0dMZW51
bSB0YXJnZXQsIGludCBsZXZlbCwgaW50IHhvZmZzZXQsIGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkg
d2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwg
R0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IHZvaWQgKnBpeGVscykKK3ZvaWQgRXh0ZW5zaW9uc0dM
QU5HTEU6OnRleFN1YkltYWdlMkRSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIGludCBsZXZl
bCwgaW50IHhvZmZzZXQsIGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBo
ZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48Y29uc3QgR0NH
THZvaWQ+IHBpeGVscykKIHsKICAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50
KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGdsOjpUZXhTdWJJbWFnZTJEUm9idXN0QU5HTEUo
dGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0
eXBlLCBidWZTaXplLCBwaXhlbHMpOworICAgIGdsOjpUZXhTdWJJbWFnZTJEUm9idXN0QU5HTEUo
dGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0
eXBlLCBwaXhlbHMuYnVmU2l6ZSwgcGl4ZWxzLmRhdGEpOwogfQogCi12b2lkIEV4dGVuc2lvbnNH
TEFOR0xFOjpjb21wcmVzc2VkVGV4SW1hZ2UyRFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwg
aW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dM
c2l6ZWkgaGVpZ2h0LCBpbnQgYm9yZGVyLCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgY29uc3Qgdm9pZCogZGF0YSkKK3ZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmNvbXBy
ZXNzZWRUZXhJbWFnZTJEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWwsIEdD
R0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQs
IGludCBib3JkZXIsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lk
PiBkYXRhKQogewogICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgZ2w6OkNvbXByZXNzZWRUZXhJbWFnZTJEUm9idXN0QU5HTEUo
dGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGJvcmRlciwgaW1h
Z2VTaXplLCBidWZTaXplLCBkYXRhKTsKKyAgICBnbDo6Q29tcHJlc3NlZFRleEltYWdlMkRSb2J1
c3RBTkdMRSh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgYm9y
ZGVyLCBpbWFnZVNpemUsIGRhdGEuYnVmU2l6ZSwgZGF0YS5kYXRhKTsKICAgICBtX2NvbnRleHQt
Pm1fc3RhdGUudGV4dHVyZVNlZWRDb3VudC5hZGQobV9jb250ZXh0LT5tX3N0YXRlLmN1cnJlbnRC
b3VuZFRleHR1cmUoKSk7CiAKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Y29tcHJlc3Nl
ZFRleFN1YkltYWdlMkRSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIGludCBsZXZlbCwgaW50
IHhvZmZzZXQsIGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQs
IEdDR0xlbnVtIGZvcm1hdCwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTHNpemVpIGJ1ZlNpemUs
IGNvbnN0IHZvaWQqIGRhdGEpCit2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpjb21wcmVzc2VkVGV4
U3ViSW1hZ2UyRFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgaW50IGxldmVsLCBpbnQgeG9m
ZnNldCwgaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NH
TGVudW0gZm9ybWF0LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9p
ZD4gZGF0YSkKIHsKICAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIGdsOjpDb21wcmVzc2VkVGV4U3ViSW1hZ2UyRFJvYnVzdEFO
R0xFKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGZvcm1h
dCwgaW1hZ2VTaXplLCBidWZTaXplLCBkYXRhKTsKKyAgICBnbDo6Q29tcHJlc3NlZFRleFN1Yklt
YWdlMkRSb2J1c3RBTkdMRSh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwg
aGVpZ2h0LCBmb3JtYXQsIGltYWdlU2l6ZSwgZGF0YS5idWZTaXplLCBkYXRhLmRhdGEpOwogICAg
IG1fY29udGV4dC0+bV9zdGF0ZS50ZXh0dXJlU2VlZENvdW50LmFkZChtX2NvbnRleHQtPm1fc3Rh
dGUuY3VycmVudEJvdW5kVGV4dHVyZSgpKTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6
Y29tcHJlc3NlZFRleEltYWdlM0RSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIGludCBsZXZl
bCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhl
aWdodCwgR0NHTHNpemVpIGRlcHRoLCBpbnQgYm9yZGVyLCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3Qgdm9pZCogZGF0YSkKK3ZvaWQgRXh0ZW5zaW9uc0dMQU5H
TEU6OmNvbXByZXNzZWRUZXhJbWFnZTNEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBpbnQg
bGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXpl
aSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgaW50IGJvcmRlciwgR0NHTHNpemVpIGltYWdlU2l6
ZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEpCiB7CiAgICAgaWYgKCFtX2NvbnRleHQt
Pm1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBnbDo6Q29tcHJl
c3NlZFRleEltYWdlM0RSb2J1c3RBTkdMRSh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwg
d2lkdGgsIGhlaWdodCwgZGVwdGgsIGJvcmRlciwgaW1hZ2VTaXplLCBidWZTaXplLCBkYXRhKTsK
KyAgICBnbDo6Q29tcHJlc3NlZFRleEltYWdlM0RSb2J1c3RBTkdMRSh0YXJnZXQsIGxldmVsLCBp
bnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGJvcmRlciwgaW1hZ2VTaXplLCBk
YXRhLmJ1ZlNpemUsIGRhdGEuZGF0YSk7CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmNv
bXByZXNzZWRUZXhTdWJJbWFnZTNEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBpbnQgbGV2
ZWwsIGludCB4b2Zmc2V0LCBpbnQgeW9mZnNldCwgaW50IHpvZmZzZXQsIEdDR0xzaXplaSB3aWR0
aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMZW51bSBmb3JtYXQsIEdD
R0xzaXplaSBpbWFnZVNpemUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCB2b2lkKiBkYXRhKQor
dm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Y29tcHJlc3NlZFRleFN1YkltYWdlM0RSb2J1c3RBTkdM
RShHQ0dMZW51bSB0YXJnZXQsIGludCBsZXZlbCwgaW50IHhvZmZzZXQsIGludCB5b2Zmc2V0LCBp
bnQgem9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkg
ZGVwdGgsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTFNwYW48Y29u
c3QgR0NHTHZvaWQ+IGRhdGEpCiB7CiAgICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3Vy
cmVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBnbDo6Q29tcHJlc3NlZFRleFN1YkltYWdl
M0RSb2J1c3RBTkdMRSh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB6b2Zmc2V0LCB3
aWR0aCwgaGVpZ2h0LCBkZXB0aCwgZm9ybWF0LCBpbWFnZVNpemUsIGJ1ZlNpemUsIGRhdGEpOwor
ICAgIGdsOjpDb21wcmVzc2VkVGV4U3ViSW1hZ2UzRFJvYnVzdEFOR0xFKHRhcmdldCwgbGV2ZWws
IHhvZmZzZXQsIHlvZmZzZXQsIHpvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBmb3JtYXQs
IGltYWdlU2l6ZSwgZGF0YS5idWZTaXplLCBkYXRhLmRhdGEpOwogfQogCiAKLXZvaWQgRXh0ZW5z
aW9uc0dMQU5HTEU6OnRleEltYWdlM0RSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIGludCBs
ZXZlbCwgaW50IGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWln
aHQsIEdDR0xzaXplaSBkZXB0aCwgaW50IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51
bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3Qgdm9pZCAqcGl4ZWxzKQordm9pZCBFeHRl
bnNpb25zR0xBTkdMRTo6dGV4SW1hZ2UzRFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgaW50
IGxldmVsLCBpbnQgaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhl
aWdodCwgR0NHTHNpemVpIGRlcHRoLCBpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xl
bnVtIHR5cGUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBwaXhlbHMpCiB7CiAgICAgaWYgKCFt
X2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBn
bDo6VGV4SW1hZ2UzRFJvYnVzdEFOR0xFKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3
aWR0aCwgaGVpZ2h0LCBkZXB0aCwgYm9yZGVyLCBmb3JtYXQsIHR5cGUsIGJ1ZlNpemUsIHBpeGVs
cyk7CisgICAgZ2w6OlRleEltYWdlM0RSb2J1c3RBTkdMRSh0YXJnZXQsIGxldmVsLCBpbnRlcm5h
bGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGJvcmRlciwgZm9ybWF0LCB0eXBlLCBwaXhl
bHMuYnVmU2l6ZSwgcGl4ZWxzLmRhdGEpOwogfQogCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjp0
ZXhTdWJJbWFnZTNEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWwsIGludCB4
b2Zmc2V0LCBpbnQgeW9mZnNldCwgaW50IHpvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNp
emVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5
cGUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCB2b2lkICpwaXhlbHMpCit2b2lkIEV4dGVuc2lv
bnNHTEFOR0xFOjp0ZXhTdWJJbWFnZTNEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBpbnQg
bGV2ZWwsIGludCB4b2Zmc2V0LCBpbnQgeW9mZnNldCwgaW50IHpvZmZzZXQsIEdDR0xzaXplaSB3
aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMZW51bSBmb3JtYXQs
IEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBwaXhlbHMpCiB7CiAgICAg
aWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBnbDo6VGV4U3ViSW1hZ2UzRFJvYnVzdEFOR0xFKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQs
IHlvZmZzZXQsIHpvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBmb3JtYXQsIHR5cGUsIGJ1
ZlNpemUsIHBpeGVscyk7CisgICAgZ2w6OlRleFN1YkltYWdlM0RSb2J1c3RBTkdMRSh0YXJnZXQs
IGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB6b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwg
Zm9ybWF0LCB0eXBlLCBwaXhlbHMuYnVmU2l6ZSwgcGl4ZWxzLmRhdGEpOwogfQogCiB2b2lkIEV4
dGVuc2lvbnNHTEFOR0xFOjpnZXRRdWVyeWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dM
aW50ICpwYXJhbXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuaAppbmRleCA1N2JiOTNiYzg0YzMzNTkwZmJj
ZjRiM2Y3YTFlYjVhNTVjNTkyNTZjLi5hZGFlYWY5MTAxYzE0ZjdkY2Q0Zjk5OTA4MjBmYTllYTI0
YmM4OTQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmds
ZS9FeHRlbnNpb25zR0xBTkdMRS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmgKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgog
ICAgIHZvaWQgaW5zZXJ0RXZlbnRNYXJrZXJFWFQoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBwdXNoR3JvdXBNYXJrZXJFWFQoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAg
dm9pZCBwb3BHcm91cE1hcmtlckVYVCh2b2lkKSBvdmVycmlkZTsKLSAgICB2b2lkIGRyYXdCdWZm
ZXJzRVhUKEdDR0xzaXplaSwgY29uc3QgR0NHTGVudW0qKSBvdmVycmlkZTsKKyAgICB2b2lkIGRy
YXdCdWZmZXJzRVhUKEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVtPikgb3ZlcnJpZGU7CiAKICAgICBT
dHJpbmcgZ2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKFBsYXRmb3JtR0xPYmplY3QpIG92
ZXJyaWRlOwogCkBAIC03NCwxNyArNzQsMTcgQEAgcHVibGljOgogCiAgICAgLy8gR0xfQU5HTEVf
cm9idXN0X2NsaWVudF9tZW1vcnkKICAgICB2b2lkIHJlYWRQaXhlbHNSb2J1c3RBTkdMRShHQ0dM
aW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dM
ZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkg
Kmxlbmd0aCwgR0NHTHNpemVpICpjb2x1bW5zLCBHQ0dMc2l6ZWkgKnJvd3MsIHZvaWQgKnBpeGVs
cykgb3ZlcnJpZGU7Ci0gICAgdm9pZCB0ZXhJbWFnZTJEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lk
dGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdD
R0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCB2b2lkICpwaXhlbHMpIG92ZXJy
aWRlOworICAgIHZvaWQgdGV4SW1hZ2UyRFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NH
TGludCBsZXZlbCwgR0NHTGludCBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dM
c2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0
eXBlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gcGl4ZWxzKSBvdmVycmlkZTsKICAgICB2b2lk
IHRleFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFt
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xmbG9hdCAqcGFyYW1zKSBvdmVycmlkZTsK
ICAgICB2b2lkIHRleFBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQgKnBhcmFtcykgb3Zl
cnJpZGU7Ci0gICAgdm9pZCB0ZXhTdWJJbWFnZTJEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTHNp
emVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5
cGUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCB2b2lkICpwaXhlbHMpIG92ZXJyaWRlOwotICAg
IHZvaWQgY29tcHJlc3NlZFRleEltYWdlMkRSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdD
R0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdD
R0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTHZvaWQqIGRhdGEpIG92ZXJyaWRlOwotICAgIHZvaWQg
Y29tcHJlc3NlZFRleFN1YkltYWdlMkRSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xp
bnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lk
dGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTHNpemVpIGltYWdlU2l6
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0x2b2lkKiBkYXRhKSBvdmVycmlkZTsKLSAg
ICB2b2lkIGNvbXByZXNzZWRUZXhJbWFnZTNEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBH
Q0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMc2l6
ZWkgaW1hZ2VTaXplLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTHZvaWQqIGRhdGEpIG92
ZXJyaWRlOwotICAgIHZvaWQgY29tcHJlc3NlZFRleFN1YkltYWdlM0RSb2J1c3RBTkdMRShHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zm
c2V0LCBHQ0dMaW50IHpvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwg
R0NHTHNpemVpIGRlcHRoLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdD
R0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMdm9pZCogZGF0YSkgb3ZlcnJpZGU7Ci0KLSAgICB2
b2lkIHRleEltYWdlM0RSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWws
IEdDR0xpbnQgaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdo
dCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMaW50IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dM
ZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3Qgdm9pZCAqcGl4ZWxzKSBvdmVycmlk
ZTsKLSAgICB2b2lkIHRleFN1YkltYWdlM0RSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdD
R0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMaW50IHpv
ZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRo
LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBjb25z
dCB2b2lkICpwaXhlbHMpIG92ZXJyaWRlOworICAgIHZvaWQgdGV4U3ViSW1hZ2UyRFJvYnVzdEFO
R0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dM
aW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0g
Zm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gcGl4ZWxzKSBv
dmVycmlkZTsKKyAgICB2b2lkIGNvbXByZXNzZWRUZXhJbWFnZTJEUm9idXN0QU5HTEUoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNp
emVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTHNpemVpIGlt
YWdlU2l6ZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEpIG92ZXJyaWRlOworICAgIHZv
aWQgY29tcHJlc3NlZFRleFN1YkltYWdlMkRSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdD
R0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkg
d2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTHNpemVpIGltYWdl
U2l6ZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEpIG92ZXJyaWRlOworICAgIHZvaWQg
Y29tcHJlc3NlZFRleEltYWdlM0RSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQg
bGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXpl
aSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGludCBib3JkZXIsIEdDR0xzaXplaSBpbWFn
ZVNpemUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRhKSBvdmVycmlkZTsKKyAgICB2b2lk
IGNvbXByZXNzZWRUZXhTdWJJbWFnZTNEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
aW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTGludCB6b2Zm
c2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwg
R0NHTGVudW0gZm9ybWF0LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMU3Bhbjxjb25zdCBHQ0dM
dm9pZD4gZGF0YSkgb3ZlcnJpZGU7CisKKyAgICB2b2lkIHRleEltYWdlM0RSb2J1c3RBTkdMRShH
Q0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgaW50ZXJuYWxmb3JtYXQsIEdD
R0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMaW50
IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bhbjxjb25zdCBH
Q0dMdm9pZD4gcGl4ZWxzKSBvdmVycmlkZTsKKyAgICB2b2lkIHRleFN1YkltYWdlM0RSb2J1c3RB
TkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NH
TGludCB5b2Zmc2V0LCBHQ0dMaW50IHpvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVp
IGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUs
IEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBwaXhlbHMpIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0
UXVlcnlpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlk
ZTsKICAgICB2b2lkIGdldFF1ZXJ5T2JqZWN0dWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1
aW50ICpwYXJhbXMpIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0QnVmZmVyUG9pbnRlcnZSb2J1c3RB
TkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
R0NHTHNpemVpICpsZW5ndGgsIHZvaWQgKipwYXJhbXMpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xB
TkdMRS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGlj
c0NvbnRleHRHTEFOR0xFLmNwcAppbmRleCBmZWIwYmViZWYzMTVmMGUxMzhiYTk5ZDYyZWI2Y2Zj
ZWQ1MTkzNjdhLi43M2Y0YzRmMzAzYWM1MGQ3YWZjODZhMjkyMGE0NjE2NmRjYThlMGJjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0Nv
bnRleHRHTEFOR0xFLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
bmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcApAQCAtMzYyLDE0ICszNjIsMTkgQEAgdm9p
ZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0KEdDR0xl
bnVtIHNoYWRlclR5cGUsIEdDR0wKICAgICBnbDo6R2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0KHNo
YWRlclR5cGUsIHByZWNpc2lvblR5cGUsIHJhbmdlLmRhdGEsIHByZWNpc2lvbik7CiB9CiAKLWJv
b2wgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBH
Q0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51
bSB0eXBlLCBjb25zdCB2b2lkKiBwaXhlbHMpCitib29sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
Ojp0ZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50
ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBi
b3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48Y29uc3QgR0NH
THZvaWQ+IHBpeGVscykKIHsKLSAgICBpZiAod2lkdGggJiYgaGVpZ2h0ICYmICFwaXhlbHMpIHsK
KyAgICBpZiAod2lkdGggJiYgaGVpZ2h0ICYmICFwaXhlbHMuZGF0YSkgewogICAgICAgICBzeW50
aGVzaXplR0xFcnJvcihJTlZBTElEX1ZBTFVFKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IH0KKyAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7
CiAKLSAgICB0ZXhJbWFnZTJERGlyZWN0KHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3
aWR0aCwgaGVpZ2h0LCBib3JkZXIsIGZvcm1hdCwgdHlwZSwgcGl4ZWxzKTsKKyAgICBpZiAoIW1f
aXNGb3JXZWJHTDIgJiYgbV9leHRlbnNpb25zKQorICAgICAgICBpbnRlcm5hbGZvcm1hdCA9IG1f
ZXh0ZW5zaW9ucy0+YWRqdXN0V2ViR0wxVGV4dHVyZUludGVybmFsRm9ybWF0KGludGVybmFsZm9y
bWF0LCBmb3JtYXQsIHR5cGUpOworICAgIGdsOjpUZXhJbWFnZTJEUm9idXN0QU5HTEUodGFyZ2V0
LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGJvcmRlciwgZm9ybWF0LCB0
eXBlLCBwaXhlbHMuYnVmU2l6ZSwgcGl4ZWxzLmRhdGEpOworICAgIG1fc3RhdGUudGV4dHVyZVNl
ZWRDb3VudC5hZGQobV9zdGF0ZS5jdXJyZW50Qm91bmRUZXh0dXJlKCkpOwogICAgIHJldHVybiB0
cnVlOwogfQogCkBAIC04MzUsMjAgKzg0MCwyMCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpidWZmZXJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpcHRyIHNpemUsIEdDRwog
ICAgIGdsOjpCdWZmZXJEYXRhKHRhcmdldCwgc2l6ZSwgMCwgdXNhZ2UpOwogfQogCi12b2lkIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpidWZmZXJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNp
emVpcHRyIHNpemUsIGNvbnN0IHZvaWQqIGRhdGEsIEdDR0xlbnVtIHVzYWdlKQordm9pZCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6YnVmZmVyRGF0YShHQ0dMZW51bSB0YXJnZXQsIEdDR0xTcGFu
PGNvbnN0IEdDR0x2b2lkPiBkYXRhLCBHQ0dMZW51bSB1c2FnZSkKIHsKICAgICBpZiAoIW1ha2VD
b250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBnbDo6QnVmZmVyRGF0YSh0
YXJnZXQsIHNpemUsIGRhdGEsIHVzYWdlKTsKKyAgICBnbDo6QnVmZmVyRGF0YSh0YXJnZXQsIGRh
dGEuYnVmU2l6ZSwgZGF0YS5kYXRhLCB1c2FnZSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmJ1ZmZlclN1YkRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50cHRyIG9mZnNl
dCwgR0NHTHNpemVpcHRyIHNpemUsIGNvbnN0IHZvaWQqIGRhdGEpCit2b2lkIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpidWZmZXJTdWJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludHB0ciBv
ZmZzZXQsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRhKQogewogICAgIGlmICghbWFrZUNv
bnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGdsOjpCdWZmZXJTdWJEYXRh
KHRhcmdldCwgb2Zmc2V0LCBzaXplLCBkYXRhKTsKKyAgICBnbDo6QnVmZmVyU3ViRGF0YSh0YXJn
ZXQsIG9mZnNldCwgZGF0YS5idWZTaXplLCBkYXRhLmRhdGEpOwogfQogCiB2b2lkKiBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6bWFwQnVmZmVyUmFuZ2UoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50
cHRyIG9mZnNldCwgR0NHTHNpemVpcHRyIGxlbmd0aCwgR0NHTGJpdGZpZWxkIGFjY2VzcykKQEAg
LTE1MDEsMTIgKzE1MDYsMTIgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9y
bTFmKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xmbG9hdCB2MCkKICAgICBnbDo6VW5pZm9ybTFmKGxv
Y2F0aW9uLCB2MCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0x
ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIHNpemUsIGNvbnN0IEdDR0xmbG9hdCogYXJy
YXkpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMWZ2KEdDR0xpbnQgbG9j
YXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gYXJyYXkpCiB7CiAgICAgaWYgKCFtYWtl
Q29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZ2w6OlVuaWZvcm0xZnYo
bG9jYXRpb24sIHNpemUsIGFycmF5KTsKKyAgICBnbDo6VW5pZm9ybTFmdihsb2NhdGlvbiwgYXJy
YXkuYnVmU2l6ZSwgYXJyYXkuZGF0YSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OnVuaWZvcm0yZihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMZmxvYXQgdjAsIEdDR0xmbG9hdCB2
MSkKQEAgLTE1MTcsMTMgKzE1MjIsMTMgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
dW5pZm9ybTJmKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xmbG9hdCB2MCwgR0NHTGZsb2EKICAgICBn
bDo6VW5pZm9ybTJmKGxvY2F0aW9uLCB2MCwgdjEpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjp1bmlmb3JtMmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBzaXplLCBj
b25zdCBHQ0dMZmxvYXQqIGFycmF5KQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5p
Zm9ybTJmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGFycmF5
KQogewotICAgIC8vIEZJWE1FOiBsZW5ndGggbmVlZHMgdG8gYmUgYSBtdWx0aXBsZSBvZiAyLgor
ICAgIEFTU0VSVCghKGFycmF5LmJ1ZlNpemUgJSAyKSk7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1
cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZ2w6OlVuaWZvcm0yZnYobG9jYXRpb24s
IHNpemUsIGFycmF5KTsKKyAgICBnbDo6VW5pZm9ybTJmdihsb2NhdGlvbiwgYXJyYXkuYnVmU2l6
ZSAvIDIsIGFycmF5LmRhdGEpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1
bmlmb3JtM2YoR0NHTGludCBsb2NhdGlvbiwgR0NHTGZsb2F0IHYwLCBHQ0dMZmxvYXQgdjEsIEdD
R0xmbG9hdCB2MikKQEAgLTE1MzQsMTMgKzE1MzksMTMgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6dW5pZm9ybTNmKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xmbG9hdCB2MCwgR0NHTGZs
b2EKICAgICBnbDo6VW5pZm9ybTNmKGxvY2F0aW9uLCB2MCwgdjEsIHYyKTsKIH0KIAotdm9pZCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTNmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dM
c2l6ZWkgc2l6ZSwgY29uc3QgR0NHTGZsb2F0KiBhcnJheSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OnVuaWZvcm0zZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NH
TGZsb2F0PiBhcnJheSkKIHsKLSAgICAvLyBGSVhNRTogbGVuZ3RoIG5lZWRzIHRvIGJlIGEgbXVs
dGlwbGUgb2YgMy4KKyAgICBBU1NFUlQoIShhcnJheS5idWZTaXplICUgMykpOwogICAgIGlmICgh
bWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGdsOjpVbmlmb3Jt
M2Z2KGxvY2F0aW9uLCBzaXplLCBhcnJheSk7CisgICAgZ2w6OlVuaWZvcm0zZnYobG9jYXRpb24s
IGFycmF5LmJ1ZlNpemUgLyAzLCBhcnJheS5kYXRhKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6dW5pZm9ybTRmKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xmbG9hdCB2MCwgR0NH
TGZsb2F0IHYxLCBHQ0dMZmxvYXQgdjIsIEdDR0xmbG9hdCB2MykKQEAgLTE1NTEsMTMgKzE1NTYs
MTMgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTRmKEdDR0xpbnQgbG9j
YXRpb24sIEdDR0xmbG9hdCB2MCwgR0NHTGZsb2EKICAgICBnbDo6VW5pZm9ybTRmKGxvY2F0aW9u
LCB2MCwgdjEsIHYyLCB2Myk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVu
aWZvcm00ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIHNpemUsIGNvbnN0IEdDR0xmbG9h
dCogYXJyYXkpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtNGZ2KEdDR0xp
bnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gYXJyYXkpCiB7Ci0gICAgLy8g
RklYTUU6IGxlbmd0aCBuZWVkcyB0byBiZSBhIG11bHRpcGxlIG9mIDQuCisgICAgQVNTRVJUKCEo
YXJyYXkuYnVmU2l6ZSAlIDQpKTsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBnbDo6VW5pZm9ybTRmdihsb2NhdGlvbiwgc2l6ZSwgYXJyYXkp
OworICAgIGdsOjpVbmlmb3JtNGZ2KGxvY2F0aW9uLCBhcnJheS5idWZTaXplIC8gNCwgYXJyYXku
ZGF0YSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0xaShHQ0dM
aW50IGxvY2F0aW9uLCBHQ0dMaW50IHYwKQpAQCAtMTU2OCwxMiArMTU3MywxMiBAQCB2b2lkIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMWkoR0NHTGludCBsb2NhdGlvbiwgR0NHTGlu
dCB2MCkKICAgICBnbDo6VW5pZm9ybTFpKGxvY2F0aW9uLCB2MCk7CiB9CiAKLXZvaWQgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0xaXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVp
IHNpemUsIGNvbnN0IEdDR0xpbnQqIGFycmF5KQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6dW5pZm9ybTFpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50PiBh
cnJheSkKIHsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47
CiAKLSAgICBnbDo6VW5pZm9ybTFpdihsb2NhdGlvbiwgc2l6ZSwgYXJyYXkpOworICAgIGdsOjpV
bmlmb3JtMWl2KGxvY2F0aW9uLCBhcnJheS5idWZTaXplLCBhcnJheS5kYXRhKTsKIH0KIAogdm9p
ZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTJpKEdDR0xpbnQgbG9jYXRpb24sIEdD
R0xpbnQgdjAsIEdDR0xpbnQgdjEpCkBAIC0xNTg0LDEzICsxNTg5LDEzIEBAIHZvaWQgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0yaShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMaW50IHYw
LCBHQ0dMaW50IHYxCiAgICAgZ2w6OlVuaWZvcm0yaShsb2NhdGlvbiwgdjAsIHYxKTsKIH0KIAot
dm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTJpdihHQ0dMaW50IGxvY2F0aW9u
LCBHQ0dMc2l6ZWkgc2l6ZSwgY29uc3QgR0NHTGludCogYXJyYXkpCit2b2lkIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjp1bmlmb3JtMml2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0
IEdDR0xpbnQ+IGFycmF5KQogewotICAgIC8vIEZJWE1FOiBsZW5ndGggbmVlZHMgdG8gYmUgYSBt
dWx0aXBsZSBvZiAyLgorICAgIEFTU0VSVCghKGFycmF5LmJ1ZlNpemUgJSAyKSk7CiAgICAgaWYg
KCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZ2w6OlVuaWZv
cm0yaXYobG9jYXRpb24sIHNpemUsIGFycmF5KTsKKyAgICBnbDo6VW5pZm9ybTJpdihsb2NhdGlv
biwgYXJyYXkuYnVmU2l6ZSAvIDIsIGFycmF5LmRhdGEpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjp1bmlmb3JtM2koR0NHTGludCBsb2NhdGlvbiwgR0NHTGludCB2MCwgR0NH
TGludCB2MSwgR0NHTGludCB2MikKQEAgLTE2MDEsMTMgKzE2MDYsMTMgQEAgdm9pZCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTNpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xpbnQgdjAs
IEdDR0xpbnQgdjEKICAgICBnbDo6VW5pZm9ybTNpKGxvY2F0aW9uLCB2MCwgdjEsIHYyKTsKIH0K
IAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTNpdihHQ0dMaW50IGxvY2F0
aW9uLCBHQ0dMc2l6ZWkgc2l6ZSwgY29uc3QgR0NHTGludCogYXJyYXkpCit2b2lkIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjp1bmlmb3JtM2l2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNv
bnN0IEdDR0xpbnQ+IGFycmF5KQogewotICAgIC8vIEZJWE1FOiBsZW5ndGggbmVlZHMgdG8gYmUg
YSBtdWx0aXBsZSBvZiAzLgorICAgIEFTU0VSVCghKGFycmF5LmJ1ZlNpemUgJSAzKSk7CiAgICAg
aWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZ2w6OlVu
aWZvcm0zaXYobG9jYXRpb24sIHNpemUsIGFycmF5KTsKKyAgICBnbDo6VW5pZm9ybTNpdihsb2Nh
dGlvbiwgYXJyYXkuYnVmU2l6ZSAvIDMsIGFycmF5LmRhdGEpOwogfQogCiB2b2lkIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjp1bmlmb3JtNGkoR0NHTGludCBsb2NhdGlvbiwgR0NHTGludCB2MCwg
R0NHTGludCB2MSwgR0NHTGludCB2MiwgR0NHTGludCB2MykKQEAgLTE2MTgsNDAgKzE2MjMsMzkg
QEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTRpKEdDR0xpbnQgbG9jYXRp
b24sIEdDR0xpbnQgdjAsIEdDR0xpbnQgdjEKICAgICBnbDo6VW5pZm9ybTRpKGxvY2F0aW9uLCB2
MCwgdjEsIHYyLCB2Myk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZv
cm00aXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIHNpemUsIGNvbnN0IEdDR0xpbnQqIGFy
cmF5KQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTRpdihHQ0dMaW50IGxv
Y2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50PiBhcnJheSkKIHsKLSAgICAvLyBGSVhNRTog
bGVuZ3RoIG5lZWRzIHRvIGJlIGEgbXVsdGlwbGUgb2YgNC4KKyAgICBBU1NFUlQoIShhcnJheS5i
dWZTaXplICUgNCkpOwogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIGdsOjpVbmlmb3JtNGl2KGxvY2F0aW9uLCBzaXplLCBhcnJheSk7CisgICAg
Z2w6OlVuaWZvcm00aXYobG9jYXRpb24sIGFycmF5LmJ1ZlNpemUgLyA0LCBhcnJheS5kYXRhKTsK
IH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybU1hdHJpeDJmdihHQ0dM
aW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgc2l6ZSwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25z
dCBHQ0dMZmxvYXQqIGFycmF5KQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9y
bU1hdHJpeDJmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xT
cGFuPGNvbnN0IEdDR0xmbG9hdD4gYXJyYXkpCiB7Ci0gICAgLy8gRklYTUU6IGxlbmd0aCBuZWVk
cyB0byBiZSBhIG11bHRpcGxlIG9mIDQuCiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgZ2w6OlVuaWZvcm1NYXRyaXgyZnYobG9jYXRpb24sIHNp
emUsIHRyYW5zcG9zZSwgYXJyYXkpOworICAgIGdsOjpVbmlmb3JtTWF0cml4MmZ2KGxvY2F0aW9u
LCBhcnJheS5idWZTaXplIC8gNCwgdHJhbnNwb3NlLCBhcnJheS5kYXRhKTsKIH0KIAotdm9pZCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybU1hdHJpeDNmdihHQ0dMaW50IGxvY2F0aW9u
LCBHQ0dMc2l6ZWkgc2l6ZSwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHQ0dMZmxvYXQq
IGFycmF5KQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybU1hdHJpeDNmdihH
Q0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdD
R0xmbG9hdD4gYXJyYXkpCiB7Ci0gICAgLy8gRklYTUU6IGxlbmd0aCBuZWVkcyB0byBiZSBhIG11
bHRpcGxlIG9mIDkuCisgICAgQVNTRVJUKCEoYXJyYXkuYnVmU2l6ZSAlIDkpKTsKICAgICBpZiAo
IW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBnbDo6VW5pZm9y
bU1hdHJpeDNmdihsb2NhdGlvbiwgc2l6ZSwgdHJhbnNwb3NlLCBhcnJheSk7CisgICAgZ2w6OlVu
aWZvcm1NYXRyaXgzZnYobG9jYXRpb24sIGFycmF5LmJ1ZlNpemUgLyA5LCB0cmFuc3Bvc2UsIGFy
cmF5LmRhdGEpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0
cml4NGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBzaXplLCBHQ0dMYm9vbGVhbiB0cmFu
c3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogYXJyYXkpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjp1bmlmb3JtTWF0cml4NGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5z
cG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiBhcnJheSkKIHsKLSAgICAvLyBGSVhNRTog
bGVuZ3RoIG5lZWRzIHRvIGJlIGEgbXVsdGlwbGUgb2YgMTYuCisgICAgQVNTRVJUKCEoYXJyYXku
YnVmU2l6ZSAlIDE2KSk7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgZ2w6OlVuaWZvcm1NYXRyaXg0ZnYobG9jYXRpb24sIHNpemUsIHRyYW5z
cG9zZSwgYXJyYXkpOworICAgIGdsOjpVbmlmb3JtTWF0cml4NGZ2KGxvY2F0aW9uLCBhcnJheS5i
dWZTaXplIC8gMTYsIHRyYW5zcG9zZSwgYXJyYXkuZGF0YSk7CiB9CiAKIHZvaWQgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OnVzZVByb2dyYW0oUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtKQpAQCAt
MTY4MCwxMiArMTY4NCwxMiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2ZXJ0ZXhB
dHRyaWIxZihHQ0dMdWludCBpbmRleCwgR0NHTGZsb2F0IHYwKQogICAgIGdsOjpWZXJ0ZXhBdHRy
aWIxZihpbmRleCwgdjApOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2ZXJ0
ZXhBdHRyaWIxZnYoR0NHTHVpbnQgaW5kZXgsIGNvbnN0IEdDR0xmbG9hdCogYXJyYXkpCit2b2lk
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2ZXJ0ZXhBdHRyaWIxZnYoR0NHTHVpbnQgaW5kZXgs
IEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdCwgMT4gYXJyYXkpCiB7CiAgICAgaWYgKCFtYWtlQ29u
dGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZ2w6OlZlcnRleEF0dHJpYjFm
dihpbmRleCwgYXJyYXkpOworICAgIGdsOjpWZXJ0ZXhBdHRyaWIxZnYoaW5kZXgsIGFycmF5LmRh
dGEpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2ZXJ0ZXhBdHRyaWIyZihH
Q0dMdWludCBpbmRleCwgR0NHTGZsb2F0IHYwLCBHQ0dMZmxvYXQgdjEpCkBAIC0xNjk2LDEyICsx
NzAwLDEyIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYjJmKEdD
R0x1aW50IGluZGV4LCBHQ0dMZmxvYXQgdjAsIEdDR0xmCiAgICAgZ2w6OlZlcnRleEF0dHJpYjJm
KGluZGV4LCB2MCwgdjEpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2ZXJ0
ZXhBdHRyaWIyZnYoR0NHTHVpbnQgaW5kZXgsIGNvbnN0IEdDR0xmbG9hdCogYXJyYXkpCit2b2lk
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2ZXJ0ZXhBdHRyaWIyZnYoR0NHTHVpbnQgaW5kZXgs
IEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdCwgMj4gYXJyYXkpCiB7CiAgICAgaWYgKCFtYWtlQ29u
dGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZ2w6OlZlcnRleEF0dHJpYjJm
dihpbmRleCwgYXJyYXkpOworICAgIGdsOjpWZXJ0ZXhBdHRyaWIyZnYoaW5kZXgsIGFycmF5LmRh
dGEpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2ZXJ0ZXhBdHRyaWIzZihH
Q0dMdWludCBpbmRleCwgR0NHTGZsb2F0IHYwLCBHQ0dMZmxvYXQgdjEsIEdDR0xmbG9hdCB2MikK
QEAgLTE3MTIsMTIgKzE3MTYsMTIgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVy
dGV4QXR0cmliM2YoR0NHTHVpbnQgaW5kZXgsIEdDR0xmbG9hdCB2MCwgR0NHTGYKICAgICBnbDo6
VmVydGV4QXR0cmliM2YoaW5kZXgsIHYwLCB2MSwgdjIpOwogfQogCi12b2lkIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjp2ZXJ0ZXhBdHRyaWIzZnYoR0NHTHVpbnQgaW5kZXgsIGNvbnN0IEdDR0xm
bG9hdCogYXJyYXkpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2ZXJ0ZXhBdHRyaWIz
ZnYoR0NHTHVpbnQgaW5kZXgsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdCwgMz4gYXJyYXkpCiB7
CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
Z2w6OlZlcnRleEF0dHJpYjNmdihpbmRleCwgYXJyYXkpOworICAgIGdsOjpWZXJ0ZXhBdHRyaWIz
ZnYoaW5kZXgsIGFycmF5LmRhdGEpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
Ojp2ZXJ0ZXhBdHRyaWI0ZihHQ0dMdWludCBpbmRleCwgR0NHTGZsb2F0IHYwLCBHQ0dMZmxvYXQg
djEsIEdDR0xmbG9hdCB2MiwgR0NHTGZsb2F0IHYzKQpAQCAtMTcyOCwxMiArMTczMiwxMiBAQCB2
b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2ZXJ0ZXhBdHRyaWI0ZihHQ0dMdWludCBpbmRl
eCwgR0NHTGZsb2F0IHYwLCBHQ0dMZgogICAgIGdsOjpWZXJ0ZXhBdHRyaWI0ZihpbmRleCwgdjAs
IHYxLCB2MiwgdjMpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2ZXJ0ZXhB
dHRyaWI0ZnYoR0NHTHVpbnQgaW5kZXgsIGNvbnN0IEdDR0xmbG9hdCogYXJyYXkpCit2b2lkIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2ZXJ0ZXhBdHRyaWI0ZnYoR0NHTHVpbnQgaW5kZXgsIEdD
R0xTcGFuPGNvbnN0IEdDR0xmbG9hdCwgND4gYXJyYXkpCiB7CiAgICAgaWYgKCFtYWtlQ29udGV4
dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZ2w6OlZlcnRleEF0dHJpYjRmdihp
bmRleCwgYXJyYXkpOworICAgIGdsOjpWZXJ0ZXhBdHRyaWI0ZnYoaW5kZXgsIGFycmF5LmRhdGEp
OwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2ZXJ0ZXhBdHRyaWJQb2ludGVy
KEdDR0x1aW50IGluZGV4LCBHQ0dMaW50IHNpemUsIEdDR0xlbnVtIHR5cGUsIEdDR0xib29sZWFu
IG5vcm1hbGl6ZWQsIEdDR0xzaXplaSBzdHJpZGUsIEdDR0xpbnRwdHIgb2Zmc2V0KQpAQCAtMjAy
OSwxMyArMjAzMywxMyBAQCBHQ0dMc2l6ZWlwdHIgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Omdl
dFZlcnRleEF0dHJpYk9mZnNldChHQ0dMdWludCBpbmRleCwgR0NHTAogICAgIHJldHVybiBzdGF0
aWNfY2FzdDxHQ0dMc2l6ZWlwdHI+KHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KHBvaW50ZXIp
KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dGV4U3ViSW1hZ2UyRChHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZiwgR0NHTGludCB5b2ZmLCBH
Q0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVu
dW0gdHlwZSwgY29uc3Qgdm9pZCogcGl4ZWxzKQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6dGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQg
eG9mZiwgR0NHTGludCB5b2ZmLCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdD
R0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IHBp
eGVscykKIHsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47
CiAKICAgICAvLyBGSVhNRTogd2Ugd2lsbCBuZWVkIHRvIGRlYWwgd2l0aCBQaXhlbFN0b3JlIHBh
cmFtcyB3aGVuIGRlYWxpbmcgd2l0aCBpbWFnZSBidWZmZXJzIHRoYXQgZGlmZmVyIGZyb20gdGhl
IHN1YmltYWdlIHNpemUuCi0gICAgZ2w6OlRleFN1YkltYWdlMkQodGFyZ2V0LCBsZXZlbCwgeG9m
ZiwgeW9mZiwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBwaXhlbHMpOworICAgIGdsOjpU
ZXhTdWJJbWFnZTJEUm9idXN0QU5HTEUodGFyZ2V0LCBsZXZlbCwgeG9mZiwgeW9mZiwgd2lkdGgs
IGhlaWdodCwgZm9ybWF0LCB0eXBlLCBwaXhlbHMuYnVmU2l6ZSwgcGl4ZWxzLmRhdGEpOwogICAg
IG1fc3RhdGUudGV4dHVyZVNlZWRDb3VudC5hZGQobV9zdGF0ZS5jdXJyZW50Qm91bmRUZXh0dXJl
KCkpOwogfQogCkBAIC0yMjAzLDE3ICsyMjA3LDYgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6ZGlzcGF0Y2hDb250ZXh0Q2hhbmdlZE5vdGlmaWNhdGlvbigpCiAgICAgICAgIGNsaWVu
dC0+ZGlzcGF0Y2hDb250ZXh0Q2hhbmdlZE5vdGlmaWNhdGlvbigpOwogfQogCi12b2lkIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjp0ZXhJbWFnZTJERGlyZWN0KEdDR0xlbnVtIHRhcmdldCwgR0NH
TGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NH
THNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0g
dHlwZSwgY29uc3Qgdm9pZCogcGl4ZWxzKQotewotICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50
KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmICghbV9pc0ZvcldlYkdMMiAmJiBtX2V4dGVu
c2lvbnMpCi0gICAgICAgIGludGVybmFsZm9ybWF0ID0gbV9leHRlbnNpb25zLT5hZGp1c3RXZWJH
TDFUZXh0dXJlSW50ZXJuYWxGb3JtYXQoaW50ZXJuYWxmb3JtYXQsIGZvcm1hdCwgdHlwZSk7Ci0g
ICAgZ2w6OlRleEltYWdlMkQodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBo
ZWlnaHQsIGJvcmRlciwgZm9ybWF0LCB0eXBlLCBwaXhlbHMpOwotICAgIG1fc3RhdGUudGV4dHVy
ZVNlZWRDb3VudC5hZGQobV9zdGF0ZS5jdXJyZW50Qm91bmRUZXh0dXJlKCkpOwotfQotCiB2b2lk
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpkcmF3QXJyYXlzSW5zdGFuY2VkKEdDR0xlbnVtIG1v
ZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xzaXplaSBjb3VudCwgR0NHTHNpemVpIHByaW1jb3VudCkK
IHsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQpAQCAtMjQzNiwyMCArMjQyOSwyMCBA
QCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpmcmFtZWJ1ZmZlclRleHR1cmVMYXllcihH
Q0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtCiAgICAgZ2w6OkZyYW1lYnVmZmVyVGV4dHVyZUxheWVy
KHRhcmdldCwgYXR0YWNobWVudCwgdGV4dHVyZSwgbGV2ZWwsIGxheWVyKTsKIH0KIAotdm9pZCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6aW52YWxpZGF0ZUZyYW1lYnVmZmVyKEdDR0xlbnVtIHRh
cmdldCwgR0NHTHNpemVpIG51bUF0dGFjaG1lbnRzLCBjb25zdCBHQ0dMZW51bSogYXR0YWNobWVu
dHMpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjppbnZhbGlkYXRlRnJhbWVidWZmZXIo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4gYXR0YWNobWVudHMpCiB7
CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
Z2w6OkludmFsaWRhdGVGcmFtZWJ1ZmZlcih0YXJnZXQsIG51bUF0dGFjaG1lbnRzLCBhdHRhY2ht
ZW50cyk7CisgICAgZ2w6OkludmFsaWRhdGVGcmFtZWJ1ZmZlcih0YXJnZXQsIGF0dGFjaG1lbnRz
LmJ1ZlNpemUsIGF0dGFjaG1lbnRzLmRhdGEpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjppbnZhbGlkYXRlU3ViRnJhbWVidWZmZXIoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6
ZWkgbnVtQXR0YWNobWVudHMsIGNvbnN0IEdDR0xlbnVtKiBhdHRhY2htZW50cywgR0NHTGludCB4
LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkKK3ZvaWQgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OmludmFsaWRhdGVTdWJGcmFtZWJ1ZmZlcihHQ0dMZW51bSB0
YXJnZXQsIEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVtPiBhdHRhY2htZW50cywgR0NHTGludCB4LCBH
Q0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkKIHsKICAgICBpZiAo
IW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBnbDo6SW52YWxp
ZGF0ZVN1YkZyYW1lYnVmZmVyKHRhcmdldCwgbnVtQXR0YWNobWVudHMsIGF0dGFjaG1lbnRzLCB4
LCB5LCB3aWR0aCwgaGVpZ2h0KTsKKyAgICBnbDo6SW52YWxpZGF0ZVN1YkZyYW1lYnVmZmVyKHRh
cmdldCwgYXR0YWNobWVudHMuYnVmU2l6ZSwgYXR0YWNobWVudHMuZGF0YSwgeCwgeSwgd2lkdGgs
IGhlaWdodCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRCdWZmZXIo
R0NHTGVudW0gc3JjKQpAQCAtMjUxNyw4NCArMjUxMCw5MyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjp1bmlmb3JtNHVpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0x1aW50IHYwLCBHQ0dM
dWludAogICAgIGdsOjpVbmlmb3JtNHVpKGxvY2F0aW9uLCB2MCwgdjEsIHYyLCB2Myk7CiB9CiAK
LXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0xdWl2KEdDR0xpbnQgbG9jYXRp
b24sIGNvbnN0IEdDR0x1aW50KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNy
Y0xlbmd0aCkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0xdWl2KEdDR0xp
bnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0x1aW50PiBkYXRhKQogewogICAgIGlmICgh
bWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGdsOjpVbmlmb3Jt
MXVpdihsb2NhdGlvbiwgc3JjTGVuZ3RoLCBkYXRhICsgc3JjT2Zmc2V0KTsKKyAgICBnbDo6VW5p
Zm9ybTF1aXYobG9jYXRpb24sIGRhdGEuYnVmU2l6ZSwgZGF0YS5kYXRhKTsKIH0KIAotdm9pZCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTJ1aXYoR0NHTGludCBsb2NhdGlvbiwgY29u
c3QgR0NHTHVpbnQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3Ro
KQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTJ1aXYoR0NHTGludCBsb2Nh
dGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTHVpbnQ+IGRhdGEpCiB7CisgICAgQVNTRVJUKCEoZGF0
YS5idWZTaXplICUgMikpOwogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIGdsOjpVbmlmb3JtMnVpdihsb2NhdGlvbiwgc3JjTGVuZ3RoLCBkYXRh
ICsgc3JjT2Zmc2V0KTsKKyAgICBnbDo6VW5pZm9ybTJ1aXYobG9jYXRpb24sIGRhdGEuYnVmU2l6
ZSAvIDIsIGRhdGEuZGF0YSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVu
aWZvcm0zdWl2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0x1aW50KiBkYXRhLCBHQ0dMdWlu
dCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OnVuaWZvcm0zdWl2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0x1
aW50PiBkYXRhKQogeworICAgIEFTU0VSVCghKGRhdGEuYnVmU2l6ZSAlIDMpKTsKICAgICBpZiAo
IW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBnbDo6VW5pZm9y
bTN1aXYobG9jYXRpb24sIHNyY0xlbmd0aCwgZGF0YSArIHNyY09mZnNldCk7CisgICAgZ2w6OlVu
aWZvcm0zdWl2KGxvY2F0aW9uLCBkYXRhLmJ1ZlNpemUgLyAzLCBkYXRhLmRhdGEpOwogfQogCi12
b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtNHVpdihHQ0dMaW50IGxvY2F0aW9u
LCBjb25zdCBHQ0dMdWludCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNM
ZW5ndGgpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtNHVpdihHQ0dMaW50
IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdWludD4gZGF0YSkKIHsKKyAgICBBU1NFUlQo
IShkYXRhLmJ1ZlNpemUgJSA0KSk7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgZ2w6OlVuaWZvcm00dWl2KGxvY2F0aW9uLCBzcmNMZW5ndGgs
IGRhdGEgKyBzcmNPZmZzZXQpOworICAgIGdsOjpVbmlmb3JtNHVpdihsb2NhdGlvbiwgZGF0YS5i
dWZTaXplIC8gNCwgZGF0YS5kYXRhKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6dW5pZm9ybU1hdHJpeDJ4M2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5z
cG9zZSwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50
IHNyY0xlbmd0aCkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXgy
eDNmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNv
bnN0IEdDR0xmbG9hdD4gZGF0YSkKIHsKKyAgICBBU1NFUlQoIShkYXRhLmJ1ZlNpemUgJSA2KSk7
CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
Z2w6OlVuaWZvcm1NYXRyaXgyeDNmdihsb2NhdGlvbiwgc3JjTGVuZ3RoLCB0cmFuc3Bvc2UsIGRh
dGEgKyBzcmNPZmZzZXQpOworICAgIGdsOjpVbmlmb3JtTWF0cml4MngzZnYobG9jYXRpb24sIGRh
dGEuYnVmU2l6ZSAvIDYsIHRyYW5zcG9zZSwgZGF0YS5kYXRhKTsKIH0KIAotdm9pZCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybU1hdHJpeDN4MmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdD
R0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNP
ZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OnVuaWZvcm1NYXRyaXgzeDJmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bv
c2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gZGF0YSkKIHsKKyAgICBBU1NFUlQoIShkYXRh
LmJ1ZlNpemUgJSA2KSk7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgZ2w6OlVuaWZvcm1NYXRyaXgzeDJmdihsb2NhdGlvbiwgc3JjTGVuZ3Ro
LCB0cmFuc3Bvc2UsIGRhdGEgKyBzcmNPZmZzZXQpOworICAgIGdsOjpVbmlmb3JtTWF0cml4M3gy
ZnYobG9jYXRpb24sIGRhdGEuYnVmU2l6ZSAvIDYsIHRyYW5zcG9zZSwgZGF0YS5kYXRhKTsKIH0K
IAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybU1hdHJpeDJ4NGZ2KEdDR0xp
bnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiBkYXRh
LCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKK3ZvaWQgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXgyeDRmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dM
Ym9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gZGF0YSkKIHsKKyAg
ICBBU1NFUlQoIShkYXRhLmJ1ZlNpemUgJSA4KSk7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJl
bnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZ2w6OlVuaWZvcm1NYXRyaXgyeDRmdihsb2Nh
dGlvbiwgc3JjTGVuZ3RoLCB0cmFuc3Bvc2UsIGRhdGEgKyBzcmNPZmZzZXQpOworICAgIGdsOjpV
bmlmb3JtTWF0cml4Mng0ZnYobG9jYXRpb24sIGRhdGEuYnVmU2l6ZSAvIDgsIHRyYW5zcG9zZSwg
ZGF0YS5kYXRhKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybU1h
dHJpeDR4MmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3Qg
R0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkK
K3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXg0eDJmdihHQ0dMaW50
IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9h
dD4gZGF0YSkKIHsKKyAgICBBU1NFUlQoIShkYXRhLmJ1ZlNpemUgJSA4KSk7CiAgICAgaWYgKCFt
YWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZ2w6OlVuaWZvcm1N
YXRyaXg0eDJmdihsb2NhdGlvbiwgc3JjTGVuZ3RoLCB0cmFuc3Bvc2UsIGRhdGEgKyBzcmNPZmZz
ZXQpOworICAgIGdsOjpVbmlmb3JtTWF0cml4NHgyZnYobG9jYXRpb24sIGRhdGEuYnVmU2l6ZSAv
IDgsIHRyYW5zcG9zZSwgZGF0YS5kYXRhKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6dW5pZm9ybU1hdHJpeDN4NGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRy
YW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1
aW50IHNyY0xlbmd0aCkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRy
aXgzeDRmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFu
PGNvbnN0IEdDR0xmbG9hdD4gZGF0YSkKIHsKKyAgICBBU1NFUlQoIShkYXRhLmJ1ZlNpemUgJSAx
MikpOwogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIGdsOjpVbmlmb3JtTWF0cml4M3g0ZnYobG9jYXRpb24sIHNyY0xlbmd0aCwgdHJhbnNwb3Nl
LCBkYXRhICsgc3JjT2Zmc2V0KTsKKyAgICBnbDo6VW5pZm9ybU1hdHJpeDN4NGZ2KGxvY2F0aW9u
LCBkYXRhLmJ1ZlNpemUgLyAxMiwgdHJhbnNwb3NlLCBkYXRhLmRhdGEpOwogfQogCi12b2lkIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4NHgzZnYoR0NHTGludCBsb2NhdGlv
biwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50
IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6dW5pZm9ybU1hdHJpeDR4M2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRy
YW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiBkYXRhKQogeworICAgIEFTU0VSVCgh
KGRhdGEuYnVmU2l6ZSAlIDEyKSk7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgZ2w6OlVuaWZvcm1NYXRyaXg0eDNmdihsb2NhdGlvbiwgc3Jj
TGVuZ3RoLCB0cmFuc3Bvc2UsIGRhdGEgKyBzcmNPZmZzZXQpOworICAgIGdsOjpVbmlmb3JtTWF0
cml4NHgzZnYobG9jYXRpb24sIGRhdGEuYnVmU2l6ZSAvIDEyLCB0cmFuc3Bvc2UsIGRhdGEuZGF0
YSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYkk0aShH
Q0dMdWludCBpbmRleCwgR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xpbnQgeiwgR0NHTGludCB3
KQpAQCAtMjYwNSwxMiArMjYwNywxMiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2
ZXJ0ZXhBdHRyaWJJNGkoR0NHTHVpbnQgaW5kZXgsIEdDR0xpbnQgeCwgR0NHTGludAogICAgIGds
OjpWZXJ0ZXhBdHRyaWJJNGkoaW5kZXgsIHgsIHksIHosIHcpOwogfQogCi12b2lkIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjp2ZXJ0ZXhBdHRyaWJJNGl2KEdDR0x1aW50IGluZGV4LCBjb25zdCBH
Q0dMaW50KiB2YWx1ZXMpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2ZXJ0ZXhBdHRy
aWJJNGl2KEdDR0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50LCA0PiB2YWx1ZXMp
CiB7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgZ2w6OlZlcnRleEF0dHJpYkk0aXYoaW5kZXgsIHZhbHVlcyk7CisgICAgZ2w6OlZlcnRleEF0
dHJpYkk0aXYoaW5kZXgsIHZhbHVlcy5kYXRhKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6dmVydGV4QXR0cmliSTR1aShHQ0dMdWludCBpbmRleCwgR0NHTHVpbnQgeCwgR0NH
THVpbnQgeSwgR0NHTHVpbnQgeiwgR0NHTHVpbnQgdykKQEAgLTI2MjEsMTIgKzI2MjMsMTIgQEAg
dm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliSTR1aShHQ0dMdWludCBp
bmRleCwgR0NHTHVpbnQgeCwgR0NHTHUKICAgICBnbDo6VmVydGV4QXR0cmliSTR1aShpbmRleCwg
eCwgeSwgeiwgdyk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZlcnRleEF0
dHJpYkk0dWl2KEdDR0x1aW50IGluZGV4LCBjb25zdCBHQ0dMdWludCogdmFsdWVzKQordm9pZCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliSTR1aXYoR0NHTHVpbnQgaW5kZXgs
IEdDR0xTcGFuPGNvbnN0IEdDR0x1aW50LCA0PiB2YWx1ZXMpCiB7CiAgICAgaWYgKCFtYWtlQ29u
dGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZ2w6OlZlcnRleEF0dHJpYkk0
dWl2KGluZGV4LCB2YWx1ZXMpOworICAgIGdsOjpWZXJ0ZXhBdHRyaWJJNHVpdihpbmRleCwgdmFs
dWVzLmRhdGEpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpkcmF3UmFuZ2VF
bGVtZW50cyhHQ0dMZW51bSBtb2RlLCBHQ0dMdWludCBzdGFydCwgR0NHTHVpbnQgZW5kLCBHQ0dM
c2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KQpAQCAtMjYzNywz
NiArMjYzOSwzNiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpkcmF3UmFuZ2VFbGVt
ZW50cyhHQ0dMZW51bSBtb2RlLCBHQ0dMdWludCBzdGFydCwgRwogICAgIGdsOjpEcmF3UmFuZ2VF
bGVtZW50cyhtb2RlLCBzdGFydCwgZW5kLCBjb3VudCwgdHlwZSwgcmVpbnRlcnByZXRfY2FzdDx2
b2lkKj4ob2Zmc2V0KSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmRyYXdC
dWZmZXJzKEdDR0xzaXplaSBuLCBjb25zdCBHQ0dMZW51bSogYnVmcykKK3ZvaWQgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OmRyYXdCdWZmZXJzKEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVtPiBidWZz
KQogewogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIGdsOjpEcmF3QnVmZmVycyhuLCBidWZzKTsKKyAgICBnbDo6RHJhd0J1ZmZlcnMoYnVmcy5i
dWZTaXplLCBidWZzLmRhdGEpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpj
bGVhckJ1ZmZlcml2KEdDR0xlbnVtIGJ1ZmZlciwgR0NHTGludCBkcmF3YnVmZmVyLCBjb25zdCBH
Q0dMaW50KiB2YWx1ZXMsIEdDR0x1aW50IHNyY09mZnNldCkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmNsZWFyQnVmZmVyaXYoR0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50IGRyYXdidWZm
ZXIsIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+IHZhbHVlcykKIHsKICAgICBpZiAoIW1ha2VDb250
ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBnbDo6Q2xlYXJCdWZmZXJpdihi
dWZmZXIsIGRyYXdidWZmZXIsIHZhbHVlcyArIHNyY09mZnNldCk7CisgICAgZ2w6OkNsZWFyQnVm
ZmVyaXYoYnVmZmVyLCBkcmF3YnVmZmVyLCB2YWx1ZXMuZGF0YSk7CiB9CiAKLXZvaWQgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmNsZWFyQnVmZmVydWl2KEdDR0xlbnVtIGJ1ZmZlciwgR0NHTGlu
dCBkcmF3YnVmZmVyLCBjb25zdCBHQ0dMdWludCogdmFsdWVzLCBHQ0dMdWludCBzcmNPZmZzZXQp
Cit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjbGVhckJ1ZmZlcnVpdihHQ0dMZW51bSBi
dWZmZXIsIEdDR0xpbnQgZHJhd2J1ZmZlciwgR0NHTFNwYW48Y29uc3QgR0NHTHVpbnQ+IHZhbHVl
cykKIHsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBnbDo6Q2xlYXJCdWZmZXJ1aXYoYnVmZmVyLCBkcmF3YnVmZmVyLCB2YWx1ZXMgKyBzcmNP
ZmZzZXQpOworICAgIGdsOjpDbGVhckJ1ZmZlcnVpdihidWZmZXIsIGRyYXdidWZmZXIsIHZhbHVl
cy5kYXRhKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y2xlYXJCdWZmZXJm
dihHQ0dMZW51bSBidWZmZXIsIEdDR0xpbnQgZHJhd2J1ZmZlciwgY29uc3QgR0NHTGZsb2F0KiB2
YWx1ZXMsIEdDR0x1aW50IHNyY09mZnNldCkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OmNsZWFyQnVmZmVyZnYoR0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50IGRyYXdidWZmZXIsIEdDR0xT
cGFuPGNvbnN0IEdDR0xmbG9hdD4gdmFsdWVzKQogewogICAgIGlmICghbWFrZUNvbnRleHRDdXJy
ZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGdsOjpDbGVhckJ1ZmZlcmZ2KGJ1ZmZlciwg
ZHJhd2J1ZmZlciwgdmFsdWVzICsgc3JjT2Zmc2V0KTsKKyAgICBnbDo6Q2xlYXJCdWZmZXJmdihi
dWZmZXIsIGRyYXdidWZmZXIsIHZhbHVlcy5kYXRhKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6Y2xlYXJCdWZmZXJmaShHQ0dMZW51bSBidWZmZXIsIEdDR0xpbnQgZHJhd2J1
ZmZlciwgR0NHTGZsb2F0IGRlcHRoLCBHQ0dMaW50IHN0ZW5jaWwpCkBAIC0yODU0LDk0ICsyODU2
LDYgQEAgVmVjdG9yPEdDR0x1aW50PiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VW5pZm9y
bUluZGljZXMoUGxhdGZvcm1HTE9iamVjdCBwcm8KICAgICByZXR1cm4gcmVzdWx0OwogfQogCi12
b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMWZ2KEdDR0xpbnQgbG9jYXRpb24s
IGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNM
ZW5ndGgpCi17Ci0gICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgZ2w6OlVuaWZvcm0xZnYobG9jYXRpb24sIHNyY0xlbmd0aCwgZGF0YSArIHNyY09m
ZnNldCk7Ci19Ci0KLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0yZnYoR0NH
TGludCBsb2NhdGlvbiwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQs
IEdDR0x1aW50IHNyY0xlbmd0aCkKLXsKLSAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6VW5pZm9ybTJmdihsb2NhdGlvbiwgc3JjTGVuZ3Ro
LCBkYXRhICsgc3JjT2Zmc2V0KTsKLX0KLQotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
dW5pZm9ybTNmdihHQ0dMaW50IGxvY2F0aW9uLCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1
aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQotewotICAgIGlmICghbWFrZUNvbnRl
eHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpVbmlmb3JtM2Z2KGxvY2F0
aW9uLCBzcmNMZW5ndGgsIGRhdGEgKyBzcmNPZmZzZXQpOwotfQotCi12b2lkIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjp1bmlmb3JtNGZ2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0xmbG9h
dCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCi17Ci0gICAg
aWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OlVu
aWZvcm00ZnYobG9jYXRpb24sIHNyY0xlbmd0aCwgZGF0YSArIHNyY09mZnNldCk7Ci19Ci0KLXZv
aWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0xaXYoR0NHTGludCBsb2NhdGlvbiwg
Y29uc3QgR0NHTGludCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5n
dGgpCi17Ci0gICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgZ2w6OlVuaWZvcm0xaXYobG9jYXRpb24sIHNyY0xlbmd0aCwgZGF0YSArIHNyY09mZnNl
dCk7Ci19Ci0KLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0yaXYoR0NHTGlu
dCBsb2NhdGlvbiwgY29uc3QgR0NHTGludCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dM
dWludCBzcmNMZW5ndGgpCi17Ci0gICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgZ2w6OlVuaWZvcm0yaXYobG9jYXRpb24sIHNyY0xlbmd0aCwgZGF0
YSArIHNyY09mZnNldCk7Ci19Ci0KLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZv
cm0zaXYoR0NHTGludCBsb2NhdGlvbiwgY29uc3QgR0NHTGludCogZGF0YSwgR0NHTHVpbnQgc3Jj
T2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCi17Ci0gICAgaWYgKCFtYWtlQ29udGV4dEN1cnJl
bnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OlVuaWZvcm0zaXYobG9jYXRpb24sIHNy
Y0xlbmd0aCwgZGF0YSArIHNyY09mZnNldCk7Ci19Ci0KLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OnVuaWZvcm00aXYoR0NHTGludCBsb2NhdGlvbiwgY29uc3QgR0NHTGludCogZGF0YSwg
R0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCi17Ci0gICAgaWYgKCFtYWtl
Q29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OlVuaWZvcm00aXYo
bG9jYXRpb24sIHNyY0xlbmd0aCwgZGF0YSArIHNyY09mZnNldCk7Ci19Ci0KLXZvaWQgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXgyZnYoR0NHTGludCBsb2NhdGlvbiwgR0NH
TGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNyY09m
ZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQotewotICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50
KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpVbmlmb3JtTWF0cml4MmZ2KGxvY2F0aW9u
LCBzcmNMZW5ndGgsIHRyYW5zcG9zZSwgZGF0YSArIHNyY09mZnNldCk7Ci19Ci0KLXZvaWQgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXgzZnYoR0NHTGludCBsb2NhdGlvbiwg
R0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNy
Y09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQotewotICAgIGlmICghbWFrZUNvbnRleHRDdXJy
ZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpVbmlmb3JtTWF0cml4M2Z2KGxvY2F0
aW9uLCBzcmNMZW5ndGgsIHRyYW5zcG9zZSwgZGF0YSArIHNyY09mZnNldCk7Ci19Ci0KLXZvaWQg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXg0ZnYoR0NHTGludCBsb2NhdGlv
biwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50
IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQotewotICAgIGlmICghbWFrZUNvbnRleHRD
dXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpVbmlmb3JtTWF0cml4NGZ2KGxv
Y2F0aW9uLCBzcmNMZW5ndGgsIHRyYW5zcG9zZSwgZGF0YSArIHNyY09mZnNldCk7Ci19Ci0KIHZv
aWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2KEdDR0x1
aW50IHByb2dyYW0sIEdDR0x1aW50IHVuaWZvcm1CbG9ja0luZGV4LCBHQ0dMZW51bSBwbmFtZSwg
R0NHTFNwYW48R0NHTGludD4gcGFyYW1zKQogewogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50
KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9HcmFw
aGljc0NvbnRleHRHTENWQU5HTEUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY3YvR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFLmNwcAppbmRleCBmOWJmY2EzYzQ4Y2UyOGVh
YjE5NDRhNGY1ZTg1MzBhNDI1Zjg2MmZlLi4xYTQzMzcyYzIxZTIyMDIxNzk0NmQ2N2FlMDE2YzA4
MTIxMzRiMjA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
di9HcmFwaGljc0NvbnRleHRHTENWQU5HTEUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2N2L0dyYXBoaWNzQ29udGV4dEdMQ1ZBTkdMRS5jcHAKQEAgLTIzNSwxOCAr
MjM1LDEzIEBAIHN0cnVjdCBHTGZsb2F0Q29sb3JzIHsKIH07CiAKIHN0cnVjdCBZQ2JDck1hdHJp
eCB7Ci0gICAgdW5pb24gewotICAgICAgICBHTGZsb2F0IHJvd3NbNF1bNF07Ci0gICAgICAgIEdM
ZmxvYXQgZGF0YVsxNl07Ci0gICAgfTsKKyAgICBHTGZsb2F0IHJvd3NbNF1bNF07CiAKICAgICBj
b25zdGV4cHIgWUNiQ3JNYXRyaXgoUGl4ZWxSYW5nZSwgR0xmbG9hdCBjYkNvZWZmaWNpZW50LCBH
TGZsb2F0IGNyQ29lZmZpY2llbnQpOwogCi0gICAgb3BlcmF0b3IgVmVjdG9yPEdMZmxvYXQ+KCkg
Y29uc3QKKyAgICBvcGVyYXRvciBHQ0dMU3Bhbjxjb25zdCBHTGZsb2F0LCAxNj4oKSBjb25zdAog
ICAgIHsKLSAgICAgICAgVmVjdG9yPEdMZmxvYXQ+IHZlY3RvcjsKLSAgICAgICAgdmVjdG9yLmFw
cGVuZChkYXRhLCAxNik7Ci0gICAgICAgIHJldHVybiB2ZWN0b3I7CisgICAgICAgIHJldHVybiBt
YWtlR0NHTFNwYW48MTY+KCZyb3dzWzBdWzBdKTsKICAgICB9CiAKICAgICBjb25zdGV4cHIgR0xm
bG9hdENvbG9yIG9wZXJhdG9yKihjb25zdCBHTGZsb2F0Q29sb3ImKSBjb25zdDsKQEAgLTMxOCwx
MCArMzEzLDEwIEBAIGNvbnN0ZXhwciBHTGZsb2F0Q29sb3IgWUNiQ3JNYXRyaXg6Om9wZXJhdG9y
Kihjb25zdCBHTGZsb2F0Q29sb3ImIGNvbG9yKSBjb25zdAogICAgICk7CiB9CiAKLXN0YXRpYyBj
b25zdCBWZWN0b3I8R0xmbG9hdD4gWUNiQ3JUb1JHQk1hdHJpeEZvclJhbmdlQW5kVHJhbnNmZXJG
dW5jdGlvbihQaXhlbFJhbmdlIHJhbmdlLCBUcmFuc2ZlckZ1bmN0aW9uQ1YgdHJhbnNmZXJGdW5j
dGlvbikKK3N0YXRpYyBHQ0dMU3Bhbjxjb25zdCBHTGZsb2F0LCAxNj4gWUNiQ3JUb1JHQk1hdHJp
eEZvclJhbmdlQW5kVHJhbnNmZXJGdW5jdGlvbihQaXhlbFJhbmdlIHJhbmdlLCBUcmFuc2ZlckZ1
bmN0aW9uQ1YgdHJhbnNmZXJGdW5jdGlvbikKIHsKICAgICB1c2luZyBNYXBLZXkgPSBzdGQ6OnBh
aXI8UGl4ZWxSYW5nZSwgVHJhbnNmZXJGdW5jdGlvbkNWPjsKLSAgICB1c2luZyBNYXRyaXhNYXAg
PSBTdGRNYXA8TWFwS2V5LCBWZWN0b3I8R0xmbG9hdD4+OworICAgIHVzaW5nIE1hdHJpeE1hcCA9
IFN0ZE1hcDxNYXBLZXksIGNvbnN0IFlDYkNyTWF0cml4Jj47CiAKICAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8TWF0cml4TWFwPiBtYXRyaWNlczsKICAgICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90
IG9uY2VUb2tlbjsKQEAgLTUyNiw3ICs1MjEsNyBAQCBib29sIEdyYXBoaWNzQ29udGV4dEdMQ1ZB
TkdMRTo6aW5pdGlhbGl6ZVVWQ29udGV4dE9iamVjdHMoKQogICAgIGZsb2F0IHZlcnRpY2VzWzEy
XSA9IHsgLTEsIC0xLCAxLCAtMSwgMSwgMSwgMSwgMSwgLTEsIDEsIC0xLCAtMSB9OwogCiAgICAg
bV9jb250ZXh0LT5iaW5kQnVmZmVyKEdyYXBoaWNzQ29udGV4dEdMOjpBUlJBWV9CVUZGRVIsIG1f
eXV2VmVydGV4QnVmZmVyKTsKLSAgICBtX2NvbnRleHQtPmJ1ZmZlckRhdGEoR3JhcGhpY3NDb250
ZXh0R0w6OkFSUkFZX0JVRkZFUiwgc2l6ZW9mKHZlcnRpY2VzKSwgdmVydGljZXMsIEdyYXBoaWNz
Q29udGV4dEdMOjpTVEFUSUNfRFJBVyk7CisgICAgbV9jb250ZXh0LT5idWZmZXJEYXRhKEdyYXBo
aWNzQ29udGV4dEdMOjpBUlJBWV9CVUZGRVIsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPih2ZXJ0
aWNlcywgc2l6ZW9mKHZlcnRpY2VzKSksIEdyYXBoaWNzQ29udGV4dEdMOjpTVEFUSUNfRFJBVyk7
CiAgICAgbV9jb250ZXh0LT5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShtX3l1dlBvc2l0aW9uQXR0
cmlidXRlTG9jYXRpb24pOwogICAgIG1fY29udGV4dC0+dmVydGV4QXR0cmliUG9pbnRlcihtX3l1
dlBvc2l0aW9uQXR0cmlidXRlTG9jYXRpb24sIDIsIEdyYXBoaWNzQ29udGV4dEdMOjpGTE9BVCwg
ZmFsc2UsIDAsIDApOwogCkBAIC02MjUsNyArNjIwLDcgQEAgYm9vbCBHcmFwaGljc0NvbnRleHRH
TENWQU5HTEU6OmNvcHlQaXhlbEJ1ZmZlclRvVGV4dHVyZShDVlBpeGVsQnVmZmVyUmVmIGltYWdl
LAogICAgIG1fY29udGV4dC0+dGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVS
RV8yRCwgR3JhcGhpY3NDb250ZXh0R0w6OlRFWFRVUkVfTUlOX0ZJTFRFUiwgR3JhcGhpY3NDb250
ZXh0R0w6OkxJTkVBUik7CiAgICAgbV9jb250ZXh0LT50ZXhQYXJhbWV0ZXJpKEdyYXBoaWNzQ29u
dGV4dEdMOjpURVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV9XUkFQX1MsIEdy
YXBoaWNzQ29udGV4dEdMOjpDTEFNUF9UT19FREdFKTsKICAgICBtX2NvbnRleHQtPnRleFBhcmFt
ZXRlcmkoR3JhcGhpY3NDb250ZXh0R0w6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4dEdMOjpU
RVhUVVJFX1dSQVBfVCwgR3JhcGhpY3NDb250ZXh0R0w6OkNMQU1QX1RPX0VER0UpOwotICAgIG1f
Y29udGV4dC0+dGV4SW1hZ2UyRERpcmVjdChHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV8yRCwg
bGV2ZWwsIGludGVybmFsRm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCAwLCBmb3JtYXQsIHR5cGUsIG51
bGxwdHIpOworICAgIGdsOjpUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIGxldmVsLCBpbnRlcm5h
bEZvcm1hdCwgd2lkdGgsIGhlaWdodCwgMCwgZm9ybWF0LCB0eXBlLCBudWxscHRyKTsKIAogICAg
IG1fY29udGV4dC0+ZnJhbWVidWZmZXJUZXh0dXJlMkQoR3JhcGhpY3NDb250ZXh0R0w6OkZSQU1F
QlVGRkVSLCBHcmFwaGljc0NvbnRleHRHTDo6Q09MT1JfQVRUQUNITUVOVDAsIEdyYXBoaWNzQ29u
dGV4dEdMOjpURVhUVVJFXzJELCBvdXRwdXRUZXh0dXJlLCBsZXZlbCk7CiAgICAgR0NHTGVudW0g
c3RhdHVzID0gbV9jb250ZXh0LT5jaGVja0ZyYW1lYnVmZmVyU3RhdHVzKEdyYXBoaWNzQ29udGV4
dEdMOjpGUkFNRUJVRkZFUik7CkBAIC02ODIsOCArNjc3LDggQEAgYm9vbCBHcmFwaGljc0NvbnRl
eHRHTENWQU5HTEU6OmNvcHlQaXhlbEJ1ZmZlclRvVGV4dHVyZShDVlBpeGVsQnVmZmVyUmVmIGlt
YWdlLAogCiAgICAgYXV0byByYW5nZSA9IHBpeGVsUmFuZ2VGcm9tUGl4ZWxGb3JtYXQocGl4ZWxG
b3JtYXQpOwogICAgIGF1dG8gdHJhbnNmZXJGdW5jdGlvbiA9IHRyYW5zZmVyRnVuY3Rpb25Gcm9t
U3RyaW5nKChDRlN0cmluZ1JlZilDVkJ1ZmZlckdldEF0dGFjaG1lbnQoaW1hZ2UsIGtDVkltYWdl
QnVmZmVyWUNiQ3JNYXRyaXhLZXksIG5pbCkpOwotICAgIGF1dG8mIGNvbG9yTWF0cml4ID0gWUNi
Q3JUb1JHQk1hdHJpeEZvclJhbmdlQW5kVHJhbnNmZXJGdW5jdGlvbihyYW5nZSwgdHJhbnNmZXJG
dW5jdGlvbik7Ci0gICAgbV9jb250ZXh0LT51bmlmb3JtTWF0cml4NGZ2KG1fY29sb3JNYXRyaXhV
bmlmb3JtTG9jYXRpb24sIDEsIEdMX0ZBTFNFLCBjb2xvck1hdHJpeC5kYXRhKCkpOworICAgIGF1
dG8gY29sb3JNYXRyaXggPSBZQ2JDclRvUkdCTWF0cml4Rm9yUmFuZ2VBbmRUcmFuc2ZlckZ1bmN0
aW9uKHJhbmdlLCB0cmFuc2ZlckZ1bmN0aW9uKTsKKyAgICBtX2NvbnRleHQtPnVuaWZvcm1NYXRy
aXg0ZnYobV9jb2xvck1hdHJpeFVuaWZvcm1Mb2NhdGlvbiwgR0xfRkFMU0UsIGNvbG9yTWF0cml4
KTsKIAogICAgIC8vIERvIHRoZSBhY3R1YWwgZHJhd2luZy4KICAgICBtX2NvbnRleHQtPmRyYXdB
cnJheXMoR3JhcGhpY3NDb250ZXh0R0w6OlRSSUFOR0xFUywgMCwgNik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdM
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25z
R0xPcGVuR0wuY3BwCmluZGV4IDE3Nzg2YTY0YmE0ZTFkYTAwOTY0ZWFlOTk3ZDI5Mjc2NGRhZDE4
OTYuLjE5NmJiNTU5NGNlMWYxZGMyZmQ0ODQ1Zjk3OTBiZGM1OGZiYWEwZjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVu
R0wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRl
bnNpb25zR0xPcGVuR0wuY3BwCkBAIC0yMDgsMTQgKzIwOCwxNCBAQCBib29sIEV4dGVuc2lvbnNH
TE9wZW5HTDo6c3VwcG9ydHNFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBuYW1lKQogICAgIHJldHVy
biBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMobmFtZSk7CiB9CiAKLXZvaWQgRXh0ZW5z
aW9uc0dMT3BlbkdMOjpkcmF3QnVmZmVyc0VYVChHQ0dMc2l6ZWkgbiwgY29uc3QgR0NHTGVudW0q
IGJ1ZnMpCit2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTDo6ZHJhd0J1ZmZlcnNFWFQoR0NHTFNwYW48
Y29uc3QgR0NHTGVudW0+IGJ1ZnMpCiB7CiAgICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0
Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyAgRklYTUU6IGltcGxlbWVudCBz
dXBwb3J0IGZvciBvdGhlciBwbGF0Zm9ybXMuCiAjaWYgUExBVEZPUk0oR1RLKQotICAgIDo6Z2xE
cmF3QnVmZmVycyhuLCBidWZzKTsKKyAgICA6OmdsRHJhd0J1ZmZlcnMoYnVmcy5idWZTaXplLCBi
dWZzLmRhdCk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShuKTsKICAgICBVTlVTRURfUEFSQU0o
YnVmcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmgKaW5kZXggZDNiZThjYzI4YzE3YzJkZjVkM2I0
ODY2YmIzYzVmOTQ0YzQ1NWYyMS4uNDk2Mjg5Y2VhMGU2YTA5ZDZkYjczMWY4NjhiNTQ5OTNhNDQ0
NDlhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Blbmds
L0V4dGVuc2lvbnNHTE9wZW5HTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuaApAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCBpbnNlcnRFdmVudE1hcmtlckVYVChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsK
ICAgICB2b2lkIHB1c2hHcm91cE1hcmtlckVYVChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKICAg
ICB2b2lkIHBvcEdyb3VwTWFya2VyRVhUKHZvaWQpIG92ZXJyaWRlOwotICAgIHZvaWQgZHJhd0J1
ZmZlcnNFWFQoR0NHTHNpemVpLCBjb25zdCBHQ0dMZW51bSopIG92ZXJyaWRlOworICAgIHZvaWQg
ZHJhd0J1ZmZlcnNFWFQoR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+KSBvdmVycmlkZTsKIAogICAg
IHZvaWQgZHJhd0FycmF5c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBH
Q0dMc2l6ZWkgY291bnQsIEdDR0xzaXplaSBwcmltY291bnQpIG92ZXJyaWRlOwogICAgIHZvaWQg
ZHJhd0VsZW1lbnRzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xzaXplaSBjb3VudCwgR0NH
TGVudW0gdHlwZSwgbG9uZyBsb25nIG9mZnNldCwgR0NHTHNpemVpIHByaW1jb3VudCkgb3ZlcnJp
ZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wv
RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uY3BwCmluZGV4IDY4NmYyZDUx
MTQ4ZWY5YjEyZmVmMTBiM2MyYWM3MGIyYTM1ZDIxNTcuLmU5MGMwNjYwZDIzYzBiYjJjYTJiZGRm
MzZkNjg0ZjM4YTkyZDhlZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24u
Y3BwCkBAIC0yNTksNyArMjU5LDcgQEAgdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OnJl
YWRQaXhlbHNSb2J1c3RBTkdMRShpbnQsIGludCwgR0NHTHNpemVpLCBHQ0dMc2kKICAgICBtX2Nv
bnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKIH0KIAotdm9p
ZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OnRleEltYWdlMkRSb2J1c3RBTkdMRShHQ0dMZW51
bSwgaW50LCBpbnQsIEdDR0xzaXplaSwgR0NHTHNpemVpLCBpbnQsIEdDR0xlbnVtLCBHQ0dMZW51
bSwgR0NHTHNpemVpLCBjb25zdCB2b2lkICopCit2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1v
bjo6dGV4SW1hZ2UyRFJvYnVzdEFOR0xFKEdDR0xlbnVtLCBpbnQsIGludCwgR0NHTHNpemVpLCBH
Q0dMc2l6ZWksIGludCwgR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9p
ZD4pCiB7CiAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJB
VElPTik7CiB9CkBAIC0yNzQsMzggKzI3NCwzOCBAQCB2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENv
bW1vbjo6dGV4UGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSwgR0NHTGVudW0sIEdDRwog
ICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwog
fQogCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6dGV4U3ViSW1hZ2UyRFJvYnVzdEFO
R0xFKEdDR0xlbnVtLCBpbnQsIGludCwgaW50LCBHQ0dMc2l6ZWksIEdDR0xzaXplaSwgR0NHTGVu
dW0sIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIGNvbnN0IHZvaWQgKikKK3ZvaWQgRXh0ZW5zaW9uc0dM
T3BlbkdMQ29tbW9uOjp0ZXhTdWJJbWFnZTJEUm9idXN0QU5HTEUoR0NHTGVudW0sIGludCwgaW50
LCBpbnQsIEdDR0xzaXplaSwgR0NHTHNpemVpLCBHQ0dMZW51bSwgR0NHTGVudW0sIEdDR0xTcGFu
PGNvbnN0IEdDR0x2b2lkPikKIHsKICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdM
X0lOVkFMSURfT1BFUkFUSU9OKTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246
OmNvbXByZXNzZWRUZXhJbWFnZTJEUm9idXN0QU5HTEUoR0NHTGVudW0sIGludCwgR0NHTGVudW0s
IEdDR0xzaXplaSwgR0NHTHNpemVpLCBpbnQsIEdDR0xzaXplaSwgR0NHTHNpemVpLCBjb25zdCB2
b2lkKikKK3ZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpjb21wcmVzc2VkVGV4SW1hZ2Uy
RFJvYnVzdEFOR0xFKEdDR0xlbnVtLCBpbnQsIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXpl
aSwgaW50LCBHQ0dMc2l6ZWksIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPikKIHsKICAgICBtX2Nv
bnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKIH0KIAotdm9p
ZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEUm9idXN0
QU5HTEUoR0NHTGVudW0sIGludCwgaW50LCBpbnQsIEdDR0xzaXplaSwgR0NHTHNpemVpLCBHQ0dM
ZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWksIGNvbnN0IHZvaWQqKQordm9pZCBFeHRlbnNpb25z
R0xPcGVuR0xDb21tb246OmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEUm9idXN0QU5HTEUoR0NHTGVu
dW0sIGludCwgaW50LCBpbnQsIEdDR0xzaXplaSwgR0NHTHNpemVpLCBHQ0dMZW51bSwgR0NHTHNp
emVpLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4pCiB7CiAgICAgbV9jb250ZXh0LT5zeW50aGVz
aXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dM
T3BlbkdMQ29tbW9uOjpjb21wcmVzc2VkVGV4SW1hZ2UzRFJvYnVzdEFOR0xFKEdDR0xlbnVtLCBp
bnQsIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSwgR0NHTHNpemVpLCBpbnQsIEdDR0xz
aXplaSwgR0NHTHNpemVpLCBjb25zdCB2b2lkKikKK3ZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29t
bW9uOjpjb21wcmVzc2VkVGV4SW1hZ2UzRFJvYnVzdEFOR0xFKEdDR0xlbnVtLCBpbnQsIEdDR0xl
bnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSwgR0NHTHNpemVpLCBpbnQsIEdDR0xzaXplaSwgR0NH
TFNwYW48Y29uc3QgR0NHTHZvaWQ+KQogewogICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJy
b3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwogfQogCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENv
bW1vbjo6Y29tcHJlc3NlZFRleFN1YkltYWdlM0RSb2J1c3RBTkdMRShHQ0dMZW51bSwgaW50LCBp
bnQsIGludCwgaW50LCBHQ0dMc2l6ZWksIEdDR0xzaXplaSwgR0NHTHNpemVpLCBHQ0dMZW51bSwg
R0NHTHNpemVpLCBHQ0dMc2l6ZWksIGNvbnN0IHZvaWQqKQordm9pZCBFeHRlbnNpb25zR0xPcGVu
R0xDb21tb246OmNvbXByZXNzZWRUZXhTdWJJbWFnZTNEUm9idXN0QU5HTEUoR0NHTGVudW0sIGlu
dCwgaW50LCBpbnQsIGludCwgR0NHTHNpemVpLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSwgR0NHTGVu
dW0sIEdDR0xzaXplaSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+KQogewogICAgIG1fY29udGV4
dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwogfQogCiAKLXZvaWQg
RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjp0ZXhJbWFnZTNEUm9idXN0QU5HTEUoR0NHTGVudW0s
IGludCwgaW50LCBHQ0dMc2l6ZWksIEdDR0xzaXplaSwgR0NHTHNpemVpLCBpbnQsIEdDR0xlbnVt
LCBHQ0dMZW51bSwgR0NHTHNpemVpLCBjb25zdCB2b2lkICopCit2b2lkIEV4dGVuc2lvbnNHTE9w
ZW5HTENvbW1vbjo6dGV4SW1hZ2UzRFJvYnVzdEFOR0xFKEdDR0xlbnVtLCBpbnQsIGludCwgR0NH
THNpemVpLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSwgaW50LCBHQ0dMZW51bSwgR0NHTGVudW0sIEdD
R0xTcGFuPGNvbnN0IEdDR0x2b2lkPikKIHsKICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVy
cm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xD
b21tb246OnRleFN1YkltYWdlM0RSb2J1c3RBTkdMRShHQ0dMZW51bSwgaW50LCBpbnQsIGludCwg
aW50LCBHQ0dMc2l6ZWksIEdDR0xzaXplaSwgR0NHTHNpemVpLCBHQ0dMZW51bSwgR0NHTGVudW0s
IEdDR0xzaXplaSwgY29uc3Qgdm9pZCAqKQordm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246
OnRleFN1YkltYWdlM0RSb2J1c3RBTkdMRShHQ0dMZW51bSwgaW50LCBpbnQsIGludCwgaW50LCBH
Q0dMc2l6ZWksIEdDR0xzaXplaSwgR0NHTHNpemVpLCBHQ0dMZW51bSwgR0NHTGVudW0sIEdDR0xT
cGFuPGNvbnN0IEdDR0x2b2lkPikKIHsKICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9y
KEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21t
b24uaAppbmRleCA5N2VlZGZiNzQ4NWM4MzJmNzkzYzhjZmYwZmExN2ZiZmZiZTY1ODhkLi4xNzYz
NzlhZjQxNzQwNzVkZGExNDM5YmQ1M2M5NjYzNmJhZjc5ZGFjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9u
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lv
bnNHTE9wZW5HTENvbW1vbi5oCkBAIC01MCw3ICs1MCw3IEBAIHB1YmxpYzoKICAgICBHQ0dMYm9v
bGVhbiBpc1ZlcnRleEFycmF5T0VTKFBsYXRmb3JtR0xPYmplY3QpIG92ZXJyaWRlID0gMDsKICAg
ICB2b2lkIGJpbmRWZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybUdMT2JqZWN0KSBvdmVycmlkZSA9IDA7
CiAKLSAgICB2b2lkIGRyYXdCdWZmZXJzRVhUKEdDR0xzaXplaSwgY29uc3QgR0NHTGVudW0qKSBv
dmVycmlkZSA9IDA7CisgICAgdm9pZCBkcmF3QnVmZmVyc0VYVChHQ0dMU3Bhbjxjb25zdCBHQ0dM
ZW51bT4pIG92ZXJyaWRlID0gMDsKIAogICAgIFN0cmluZyBnZXRUcmFuc2xhdGVkU2hhZGVyU291
cmNlQU5HTEUoUGxhdGZvcm1HTE9iamVjdCkgb3ZlcnJpZGU7CiAKQEAgLTcwLDE3ICs3MCwxNyBA
QCBwdWJsaWM6CiAKICAgICAvLyBHTF9BTkdMRV9yb2J1c3RfY2xpZW50X21lbW9yeQogICAgIHZv
aWQgcmVhZFBpeGVsc1JvYnVzdEFOR0xFKGludCB4LCBpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBH
Q0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHNpemVpICpjb2x1bW5zLCBHQ0dMc2l6
ZWkgKnJvd3MsIHZvaWQgKnBpeGVscykgb3ZlcnJpZGU7Ci0gICAgdm9pZCB0ZXhJbWFnZTJEUm9i
dXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWwsIGludCBpbnRlcm5hbGZvcm1hdCwg
R0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBpbnQgYm9yZGVyLCBHQ0dMZW51bSBm
b3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCB2b2lkICpwaXhl
bHMpIG92ZXJyaWRlOworICAgIHZvaWQgdGV4SW1hZ2UyRFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRh
cmdldCwgaW50IGxldmVsLCBpbnQgaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NH
THNpemVpIGhlaWdodCwgaW50IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBl
LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gcGl4ZWxzKSBvdmVycmlkZTsKICAgICB2b2lkIHRl
eFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwg
R0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xmbG9hdCAqcGFyYW1zKSBvdmVycmlkZTsKICAg
ICB2b2lkIHRleFBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51
bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCB0ZXhTdWJJbWFnZTJEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBp
bnQgbGV2ZWwsIGludCB4b2Zmc2V0LCBpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dM
c2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBi
dWZTaXplLCBjb25zdCB2b2lkICpwaXhlbHMpIG92ZXJyaWRlOwotICAgIHZvaWQgY29tcHJlc3Nl
ZFRleEltYWdlMkRSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIGludCBsZXZlbCwgR0NHTGVu
dW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgaW50
IGJvcmRlciwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IHZv
aWQqIGRhdGEpIG92ZXJyaWRlOwotICAgIHZvaWQgY29tcHJlc3NlZFRleFN1YkltYWdlMkRSb2J1
c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIGludCBsZXZlbCwgaW50IHhvZmZzZXQsIGludCB5b2Zm
c2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwg
R0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IHZvaWQqIGRhdGEp
IG92ZXJyaWRlOwotICAgIHZvaWQgY29tcHJlc3NlZFRleEltYWdlM0RSb2J1c3RBTkdMRShHQ0dM
ZW51bSB0YXJnZXQsIGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXpl
aSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBpbnQgYm9yZGVyLCBH
Q0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3Qgdm9pZCogZGF0YSkg
b3ZlcnJpZGU7Ci0gICAgdm9pZCBjb21wcmVzc2VkVGV4U3ViSW1hZ2UzRFJvYnVzdEFOR0xFKEdD
R0xlbnVtIHRhcmdldCwgaW50IGxldmVsLCBpbnQgeG9mZnNldCwgaW50IHlvZmZzZXQsIGludCB6
b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0
aCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgY29uc3Qgdm9pZCogZGF0YSkgb3ZlcnJpZGU7Ci0KLSAgICB2b2lkIHRleEltYWdlM0RSb2J1
c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIGludCBsZXZlbCwgaW50IGludGVybmFsZm9ybWF0LCBH
Q0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgaW50IGJv
cmRlciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
Y29uc3Qgdm9pZCAqcGl4ZWxzKSBvdmVycmlkZTsKLSAgICB2b2lkIHRleFN1YkltYWdlM0RSb2J1
c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIGludCBsZXZlbCwgaW50IHhvZmZzZXQsIGludCB5b2Zm
c2V0LCBpbnQgem9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dM
c2l6ZWkgZGVwdGgsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIGNvbnN0IHZvaWQgKnBpeGVscykgb3ZlcnJpZGU7CisgICAgdm9pZCB0ZXhTdWJJbWFn
ZTJEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWwsIGludCB4b2Zmc2V0LCBp
bnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBm
b3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBwaXhlbHMpIG92
ZXJyaWRlOworICAgIHZvaWQgY29tcHJlc3NlZFRleEltYWdlMkRSb2J1c3RBTkdMRShHQ0dMZW51
bSB0YXJnZXQsIGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3
aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgaW50IGJvcmRlciwgR0NHTHNpemVpIGltYWdlU2l6ZSwg
R0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEpIG92ZXJyaWRlOworICAgIHZvaWQgY29tcHJl
c3NlZFRleFN1YkltYWdlMkRSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIGludCBsZXZlbCwg
aW50IHhvZmZzZXQsIGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWln
aHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTFNwYW48Y29uc3Qg
R0NHTHZvaWQ+IGRhdGEpIG92ZXJyaWRlOworICAgIHZvaWQgY29tcHJlc3NlZFRleEltYWdlM0RS
b2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxm
b3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRo
LCBpbnQgYm9yZGVyLCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9p
ZD4gZGF0YSkgb3ZlcnJpZGU7CisgICAgdm9pZCBjb21wcmVzc2VkVGV4U3ViSW1hZ2UzRFJvYnVz
dEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgaW50IGxldmVsLCBpbnQgeG9mZnNldCwgaW50IHlvZmZz
ZXQsIGludCB6b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xz
aXplaSBkZXB0aCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMU3Bh
bjxjb25zdCBHQ0dMdm9pZD4gZGF0YSkgb3ZlcnJpZGU7CisKKyAgICB2b2lkIHRleEltYWdlM0RS
b2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIGludCBsZXZlbCwgaW50IGludGVybmFsZm9ybWF0
LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgaW50
IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bhbjxjb25zdCBH
Q0dMdm9pZD4gcGl4ZWxzKSBvdmVycmlkZTsKKyAgICB2b2lkIHRleFN1YkltYWdlM0RSb2J1c3RB
TkdMRShHQ0dMZW51bSB0YXJnZXQsIGludCBsZXZlbCwgaW50IHhvZmZzZXQsIGludCB5b2Zmc2V0
LCBpbnQgem9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6
ZWkgZGVwdGgsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48Y29uc3Qg
R0NHTHZvaWQ+IHBpeGVscykgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRRdWVyeWl2Um9idXN0QU5H
TEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdD
R0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0
UXVlcnlPYmplY3R1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdD
R0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFtcykgb3Zl
cnJpZGU7CiAgICAgdm9pZCBnZXRCdWZmZXJQb2ludGVydlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRh
cmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0
aCwgdm9pZCAqKnBhcmFtcykgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmNw
cAppbmRleCBkMjhmNGEwMzFlYmRjNDgzODc1ZDM5ODQ4N2Q1Nzg3NDhmZGU0N2U3Li4zNmMzZWYz
OGY5OGI5OWFmMDExNTA2OTkxNDI3YmFjZWZjYmI4YWMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xP
cGVuR0xFUy5jcHAKQEAgLTE4MCw3ICsxODAsNyBAQCB2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTEVT
OjpiaW5kVmVydGV4QXJyYXlPRVMoUGxhdGZvcm1HTE9iamVjdCBhcnJheSkKICAgICAgICAgbV9j
b250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CiB9CiAKLXZv
aWQgRXh0ZW5zaW9uc0dMT3BlbkdMRVM6OmRyYXdCdWZmZXJzRVhUKEdDR0xzaXplaSAvKiBuICov
LCBjb25zdCBHQ0dMZW51bSogLyogYnVmcyAqLykKK3ZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMRVM6
OmRyYXdCdWZmZXJzRVhUKEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVtPiAvKiBidWZzICovKQogewog
ICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQgdGhlIHN1cHBvcnQuCiAgICAgbm90SW1wbGVtZW50ZWQo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9F
eHRlbnNpb25zR0xPcGVuR0xFUy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmgKaW5kZXggYzc0ODI1YzgxZWFkMGE3NDYwYWVh
MWRhZjFjOWFlMTgzNzAyOTM5Ni4uMDE3YTQ1YjczOThkMDk5MmVkMTQ3NjdmMDc2N2UwNGI0NjQx
NjI4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Blbmds
L0V4dGVuc2lvbnNHTE9wZW5HTEVTLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmgKQEAgLTg1LDcgKzg1LDcgQEAgcHVi
bGljOgogICAgIHZvaWQgZGVsZXRlVmVydGV4QXJyYXlPRVMoUGxhdGZvcm1HTE9iamVjdCkgb3Zl
cnJpZGU7CiAgICAgR0NHTGJvb2xlYW4gaXNWZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybUdMT2JqZWN0
KSBvdmVycmlkZTsKICAgICB2b2lkIGJpbmRWZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybUdMT2JqZWN0
KSBvdmVycmlkZTsKLSAgICB2b2lkIGRyYXdCdWZmZXJzRVhUKEdDR0xzaXplaSwgY29uc3QgR0NH
TGVudW0qKSBvdmVycmlkZTsKKyAgICB2b2lkIGRyYXdCdWZmZXJzRVhUKEdDR0xTcGFuPGNvbnN0
IEdDR0xlbnVtPikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGRyYXdBcnJheXNJbnN0YW5jZWQoR0NH
TGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHNpemVpIGNvdW50LCBHQ0dMc2l6ZWkgcHJp
bWNvdW50KSBvdmVycmlkZTsKICAgICB2b2lkIGRyYXdFbGVtZW50c0luc3RhbmNlZChHQ0dMZW51
bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIGxvbmcgbG9uZyBvZmZzZXQs
IEdDR0xzaXplaSBwcmltY291bnQpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0wuaAppbmRleCAwOTkyNjc4YjhkYzFlMTgzZDk4MjU5Yjc3MzE1YzM2MTIxNzAxMzBmLi41
NDEzNDZmZDFmODUzZDQ1YmUzMjNhNzJmMmVmMjM3ODAzOTIwMTc5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0wuaApAQCAtMTE5LDkgKzExOSw2IEBAIHB1YmxpYzoKICAgICAvLyBX
aXRoIG11bHRpc2FtcGxpbmcgb24sIGJsaXQgZnJvbSBtdWx0aXNhbXBsZUZCTyB0byByZWd1bGFy
IEZCTy4KICAgICB2b2lkIHByZXBhcmVUZXh0dXJlKCk7CiAKLSAgICAvLyBFcXVpdmFsZW50IHRv
IDo6Z2xUZXhJbWFnZTJEKCkuIEFsbG93cyBwaXhlbHM9PTAgd2l0aCBubyBhbGxvY2F0aW9uLgot
ICAgIHZvaWQgdGV4SW1hZ2UyRERpcmVjdChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWws
IEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWln
aHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIGNvbnN0
IHZvaWQqIHBpeGVscyk7Ci0KICAgICAvLyBHZXQgYW4gYXR0cmlidXRlIGxvY2F0aW9uIHdpdGhv
dXQgY2hlY2tpbmcgdGhlIG5hbWUgLT4gbWFuZ2xlZG5hbWUgbWFwcGluZy4KICAgICBpbnQgZ2V0
QXR0cmliTG9jYXRpb25EaXJlY3QoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBjb25zdCBTdHJp
bmcmIG5hbWUpOwogCkBAIC0xMjksNiArMTI2LDkgQEAgcHVibGljOgogICAgIHZvaWQgY29tcGls
ZVNoYWRlckRpcmVjdChQbGF0Zm9ybUdMT2JqZWN0KTsKIAogI2lmICFVU0UoQU5HTEUpCisgICAg
Ly8gRXF1aXZhbGVudCB0byA6OmdsVGV4SW1hZ2UyRCgpLiBBbGxvd3MgcGl4ZWxzPT0wIHdpdGgg
bm8gYWxsb2NhdGlvbi4KKyAgICB2b2lkIHRleEltYWdlMkREaXJlY3QoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRo
LCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dM
ZW51bSB0eXBlLCBjb25zdCB2b2lkKiBwaXhlbHMpOworCiAgICAgLy8gSGVscGVyIHRvIHRleElt
YWdlMkQgd2l0aCBwaXhlbD09MCBjYXNlOiBwaXhlbHMgYXJlIGluaXRpYWxpemVkIHRvIDAuCiAg
ICAgLy8gUmV0dXJuIHRydWUgaWYgbm8gR0wgZXJyb3IgaXMgc3ludGhlc2l6ZWQuCiAgICAgLy8g
QnkgZGVmYXVsdCwgYWxpZ25tZW50IGlzIDQsIHRoZSBPcGVuR0wgZGVmYXVsdCBzZXR0aW5nLgpA
QCAtMTU1LDggKzE1NSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGJsZW5kRnVuY1NlcGFyYXRlKEdD
R0xlbnVtIHNyY1JHQiwgR0NHTGVudW0gZHN0UkdCLCBHQ0dMZW51bSBzcmNBbHBoYSwgR0NHTGVu
dW0gZHN0QWxwaGEpIGZpbmFsOwogCiAgICAgdm9pZCBidWZmZXJEYXRhKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTHNpemVpcHRyIHNpemUsIEdDR0xlbnVtIHVzYWdlKSBmaW5hbDsKLSAgICB2b2lkIGJ1
ZmZlckRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWlwdHIgc2l6ZSwgY29uc3Qgdm9pZCog
ZGF0YSwgR0NHTGVudW0gdXNhZ2UpIGZpbmFsOwotICAgIHZvaWQgYnVmZmVyU3ViRGF0YShHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xpbnRwdHIgb2Zmc2V0LCBHQ0dMc2l6ZWlwdHIgc2l6ZSwgY29uc3Qg
dm9pZCogZGF0YSkgZmluYWw7CisgICAgdm9pZCBidWZmZXJEYXRhKEdDR0xlbnVtIHRhcmdldCwg
R0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEsIEdDR0xlbnVtIHVzYWdlKSBmaW5hbDsKKyAg
ICB2b2lkIGJ1ZmZlclN1YkRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50cHRyIG9mZnNldCwg
R0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEpIGZpbmFsOwogCiAgICAgR0NHTGVudW0gY2hl
Y2tGcmFtZWJ1ZmZlclN0YXR1cyhHQ0dMZW51bSB0YXJnZXQpIGZpbmFsOwogICAgIHZvaWQgY2xl
YXIoR0NHTGJpdGZpZWxkIG1hc2spIGZpbmFsOwpAQCAtMjUzLDMwICsyNTMsMzAgQEAgcHVibGlj
OgogICAgIHZvaWQgc3RlbmNpbE9wKEdDR0xlbnVtIGZhaWwsIEdDR0xlbnVtIHpmYWlsLCBHQ0dM
ZW51bSB6cGFzcykgZmluYWw7CiAgICAgdm9pZCBzdGVuY2lsT3BTZXBhcmF0ZShHQ0dMZW51bSBm
YWNlLCBHQ0dMZW51bSBmYWlsLCBHQ0dMZW51bSB6ZmFpbCwgR0NHTGVudW0genBhc3MpIGZpbmFs
OwogCi0gICAgYm9vbCB0ZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwg
R0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdo
dCwgR0NHTGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgY29uc3Qg
dm9pZCogcGl4ZWxzKSBmaW5hbDsKKyAgICBib29sIHRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRo
LCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dM
ZW51bSB0eXBlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gcGl4ZWxzKSBmaW5hbDsKICAgICB2
b2lkIHRleFBhcmFtZXRlcmYoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGZs
b2F0IHBhcmFtKSBmaW5hbDsKICAgICB2b2lkIHRleFBhcmFtZXRlcmkoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCBwYXJhbSkgZmluYWw7Ci0gICAgdm9pZCB0ZXhTdWJJ
bWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBH
Q0dMaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVu
dW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBjb25zdCB2b2lkKiBwaXhlbHMpIGZpbmFsOworICAg
IHZvaWQgdGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xp
bnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBo
ZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48Y29uc3QgR0NH
THZvaWQ+IHBpeGVscykgZmluYWw7CiAKICAgICB2b2lkIHVuaWZvcm0xZihHQ0dMaW50IGxvY2F0
aW9uLCBHQ0dMZmxvYXQgeCkgZmluYWw7Ci0gICAgdm9pZCB1bmlmb3JtMWZ2KEdDR0xpbnQgbG9j
YXRpb24sIEdDR0xzaXplaSwgY29uc3QgR0NHTGZsb2F0KiB2KSBmaW5hbDsKKyAgICB2b2lkIHVu
aWZvcm0xZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiB2KSBm
aW5hbDsKICAgICB2b2lkIHVuaWZvcm0xaShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMaW50IHgpIGZp
bmFsOwotICAgIHZvaWQgdW5pZm9ybTFpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWksIGNv
bnN0IEdDR0xpbnQqIHYpIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybTFpdihHQ0dMaW50IGxvY2F0
aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50PiB2KSBmaW5hbDsKICAgICB2b2lkIHVuaWZvcm0y
ZihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMZmxvYXQgeCwgR0NHTGZsb2F0IHkpIGZpbmFsOwotICAg
IHZvaWQgdW5pZm9ybTJmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWksIGNvbnN0IEdDR0xm
bG9hdCogdikgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtMmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdD
R0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gdikgZmluYWw7CiAgICAgdm9pZCB1bmlmb3JtMmkoR0NH
TGludCBsb2NhdGlvbiwgR0NHTGludCB4LCBHQ0dMaW50IHkpIGZpbmFsOwotICAgIHZvaWQgdW5p
Zm9ybTJpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWksIGNvbnN0IEdDR0xpbnQqIHYpIGZp
bmFsOworICAgIHZvaWQgdW5pZm9ybTJpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25z
dCBHQ0dMaW50PiB2KSBmaW5hbDsKICAgICB2b2lkIHVuaWZvcm0zZihHQ0dMaW50IGxvY2F0aW9u
LCBHQ0dMZmxvYXQgeCwgR0NHTGZsb2F0IHksIEdDR0xmbG9hdCB6KSBmaW5hbDsKLSAgICB2b2lk
IHVuaWZvcm0zZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpLCBjb25zdCBHQ0dMZmxvYXQq
IHYpIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybTNmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bh
bjxjb25zdCBHQ0dMZmxvYXQ+IHYpIGZpbmFsOwogICAgIHZvaWQgdW5pZm9ybTNpKEdDR0xpbnQg
bG9jYXRpb24sIEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMaW50IHopIGZpbmFsOwotICAgIHZv
aWQgdW5pZm9ybTNpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWksIGNvbnN0IEdDR0xpbnQq
IHYpIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybTNpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bh
bjxjb25zdCBHQ0dMaW50PiB2KSBmaW5hbDsKICAgICB2b2lkIHVuaWZvcm00ZihHQ0dMaW50IGxv
Y2F0aW9uLCBHQ0dMZmxvYXQgeCwgR0NHTGZsb2F0IHksIEdDR0xmbG9hdCB6LCBHQ0dMZmxvYXQg
dykgZmluYWw7Ci0gICAgdm9pZCB1bmlmb3JtNGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXpl
aSwgY29uc3QgR0NHTGZsb2F0KiB2KSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm00ZnYoR0NHTGlu
dCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiB2KSBmaW5hbDsKICAgICB2b2lk
IHVuaWZvcm00aShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTGlu
dCB6LCBHQ0dMaW50IHcpIGZpbmFsOwotICAgIHZvaWQgdW5pZm9ybTRpdihHQ0dMaW50IGxvY2F0
aW9uLCBHQ0dMc2l6ZWksIGNvbnN0IEdDR0xpbnQqIHYpIGZpbmFsOwotICAgIHZvaWQgdW5pZm9y
bU1hdHJpeDJmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWksIEdDR0xib29sZWFuIHRyYW5z
cG9zZSwgY29uc3QgR0NHTGZsb2F0KiB2YWx1ZSkgZmluYWw7Ci0gICAgdm9pZCB1bmlmb3JtTWF0
cml4M2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSwgR0NHTGJvb2xlYW4gdHJhbnNwb3Nl
LCBjb25zdCBHQ0dMZmxvYXQqIHZhbHVlKSBmaW5hbDsKLSAgICB2b2lkIHVuaWZvcm1NYXRyaXg0
ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNv
bnN0IEdDR0xmbG9hdCogdmFsdWUpIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybTRpdihHQ0dMaW50
IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50PiB2KSBmaW5hbDsKKyAgICB2b2lkIHVu
aWZvcm1NYXRyaXgyZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBH
Q0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IHZhbHVlKSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm1N
YXRyaXgzZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bh
bjxjb25zdCBHQ0dMZmxvYXQ+IHZhbHVlKSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm1NYXRyaXg0
ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25z
dCBHQ0dMZmxvYXQ+IHZhbHVlKSBmaW5hbDsKIAogICAgIHZvaWQgdXNlUHJvZ3JhbShQbGF0Zm9y
bUdMT2JqZWN0KSBmaW5hbDsKICAgICB2b2lkIHZhbGlkYXRlUHJvZ3JhbShQbGF0Zm9ybUdMT2Jq
ZWN0KSBmaW5hbDsKQEAgLTI4NiwxMyArMjg2LDEzIEBAIHB1YmxpYzoKICNlbmRpZgogCiAgICAg
dm9pZCB2ZXJ0ZXhBdHRyaWIxZihHQ0dMdWludCBpbmRleCwgR0NHTGZsb2F0IHgpIGZpbmFsOwot
ICAgIHZvaWQgdmVydGV4QXR0cmliMWZ2KEdDR0x1aW50IGluZGV4LCBjb25zdCBHQ0dMZmxvYXQq
IHZhbHVlcykgZmluYWw7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWIxZnYoR0NHTHVpbnQgaW5kZXgs
IEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdCwgMT4gdmFsdWVzKSBmaW5hbDsKICAgICB2b2lkIHZl
cnRleEF0dHJpYjJmKEdDR0x1aW50IGluZGV4LCBHQ0dMZmxvYXQgeCwgR0NHTGZsb2F0IHkpIGZp
bmFsOwotICAgIHZvaWQgdmVydGV4QXR0cmliMmZ2KEdDR0x1aW50IGluZGV4LCBjb25zdCBHQ0dM
ZmxvYXQqIHZhbHVlcykgZmluYWw7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWIyZnYoR0NHTHVpbnQg
aW5kZXgsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdCwgMj4gdmFsdWVzKSBmaW5hbDsKICAgICB2
b2lkIHZlcnRleEF0dHJpYjNmKEdDR0x1aW50IGluZGV4LCBHQ0dMZmxvYXQgeCwgR0NHTGZsb2F0
IHksIEdDR0xmbG9hdCB6KSBmaW5hbDsKLSAgICB2b2lkIHZlcnRleEF0dHJpYjNmdihHQ0dMdWlu
dCBpbmRleCwgY29uc3QgR0NHTGZsb2F0KiB2YWx1ZXMpIGZpbmFsOworICAgIHZvaWQgdmVydGV4
QXR0cmliM2Z2KEdDR0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQsIDM+IHZh
bHVlcykgZmluYWw7CiAgICAgdm9pZCB2ZXJ0ZXhBdHRyaWI0ZihHQ0dMdWludCBpbmRleCwgR0NH
TGZsb2F0IHgsIEdDR0xmbG9hdCB5LCBHQ0dMZmxvYXQgeiwgR0NHTGZsb2F0IHcpIGZpbmFsOwot
ICAgIHZvaWQgdmVydGV4QXR0cmliNGZ2KEdDR0x1aW50IGluZGV4LCBjb25zdCBHQ0dMZmxvYXQq
IHZhbHVlcykgZmluYWw7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWI0ZnYoR0NHTHVpbnQgaW5kZXgs
IEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdCwgND4gdmFsdWVzKSBmaW5hbDsKICAgICB2b2lkIHZl
cnRleEF0dHJpYlBvaW50ZXIoR0NHTHVpbnQgaW5kZXgsIEdDR0xpbnQgc2l6ZSwgR0NHTGVudW0g
dHlwZSwgR0NHTGJvb2xlYW4gbm9ybWFsaXplZCwgR0NHTHNpemVpIHN0cmlkZSwgR0NHTGludHB0
ciBvZmZzZXQpIGZpbmFsOwogCiAgICAgdm9pZCB2aWV3cG9ydChHQ0dMaW50IHgsIEdDR0xpbnQg
eSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KSBmaW5hbDsKQEAgLTMyMyw4ICsz
MjMsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGJsaXRGcmFtZWJ1ZmZlcihHQ0dMaW50IHNyY1gw
LCBHQ0dMaW50IHNyY1kwLCBHQ0dMaW50IHNyY1gxLCBHQ0dMaW50IHNyY1kxLCBHQ0dMaW50IGRz
dFgwLCBHQ0dMaW50IGRzdFkwLCBHQ0dMaW50IGRzdFgxLCBHQ0dMaW50IGRzdFkxLCBHQ0dMYml0
ZmllbGQgbWFzaywgR0NHTGVudW0gZmlsdGVyKSBmaW5hbDsKICAgICB2b2lkIGZyYW1lYnVmZmVy
VGV4dHVyZUxheWVyKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gYXR0YWNobWVudCwgUGxhdGZv
cm1HTE9iamVjdCB0ZXh0dXJlLCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IGxheWVyKSBmaW5hbDsK
LSAgICB2b2lkIGludmFsaWRhdGVGcmFtZWJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXpl
aSBudW1BdHRhY2htZW50cywgY29uc3QgR0NHTGVudW0qIGF0dGFjaG1lbnRzKSBmaW5hbDsKLSAg
ICB2b2lkIGludmFsaWRhdGVTdWJGcmFtZWJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXpl
aSBudW1BdHRhY2htZW50cywgY29uc3QgR0NHTGVudW0qIGF0dGFjaG1lbnRzLCBHQ0dMaW50IHgs
IEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KSBmaW5hbDsKKyAg
ICB2b2lkIGludmFsaWRhdGVGcmFtZWJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQsIEdDR0xTcGFuPGNv
bnN0IEdDR0xlbnVtPiBhdHRhY2htZW50cykgZmluYWw7CisgICAgdm9pZCBpbnZhbGlkYXRlU3Vi
RnJhbWVidWZmZXIoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4gYXR0
YWNobWVudHMsIEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXpl
aSBoZWlnaHQpIGZpbmFsOwogICAgIHZvaWQgcmVhZEJ1ZmZlcihHQ0dMZW51bSBzcmMpIGZpbmFs
OwogCiAgICAgLy8gZ2V0SW50ZXJuYWxGb3JtYXRQYXJhbWV0ZXIKQEAgLTM0MiwyOCArMzQyLDI4
IEBAIHB1YmxpYzoKICAgICB2b2lkIHVuaWZvcm0ydWkoR0NHTGludCBsb2NhdGlvbiwgR0NHTHVp
bnQgdjAsIEdDR0x1aW50IHYxKSBmaW5hbDsKICAgICB2b2lkIHVuaWZvcm0zdWkoR0NHTGludCBs
b2NhdGlvbiwgR0NHTHVpbnQgdjAsIEdDR0x1aW50IHYxLCBHQ0dMdWludCB2MikgZmluYWw7CiAg
ICAgdm9pZCB1bmlmb3JtNHVpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0x1aW50IHYwLCBHQ0dMdWlu
dCB2MSwgR0NHTHVpbnQgdjIsIEdDR0x1aW50IHYzKSBmaW5hbDsKLSAgICB2b2lkIHVuaWZvcm0x
dWl2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0x1aW50KiBkYXRhLCBHQ0dMdWludCBzcmNP
ZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkgZmluYWw7Ci0gICAgdm9pZCB1bmlmb3JtMnVpdihH
Q0dMaW50IGxvY2F0aW9uLCBjb25zdCBHQ0dMdWludCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0
LCBHQ0dMdWludCBzcmNMZW5ndGgpIGZpbmFsOwotICAgIHZvaWQgdW5pZm9ybTN1aXYoR0NHTGlu
dCBsb2NhdGlvbiwgY29uc3QgR0NHTHVpbnQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NH
THVpbnQgc3JjTGVuZ3RoKSBmaW5hbDsKLSAgICB2b2lkIHVuaWZvcm00dWl2KEdDR0xpbnQgbG9j
YXRpb24sIGNvbnN0IEdDR0x1aW50KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50
IHNyY0xlbmd0aCkgZmluYWw7Ci0gICAgdm9pZCB1bmlmb3JtTWF0cml4MngzZnYoR0NHTGludCBs
b2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdD
R0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKSBmaW5hbDsKLSAgICB2b2lkIHVu
aWZvcm1NYXRyaXgzeDJmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2Us
IGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNM
ZW5ndGgpIGZpbmFsOwotICAgIHZvaWQgdW5pZm9ybU1hdHJpeDJ4NGZ2KEdDR0xpbnQgbG9jYXRp
b24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWlu
dCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkgZmluYWw7Ci0gICAgdm9pZCB1bmlmb3Jt
TWF0cml4NHgyZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25z
dCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3Ro
KSBmaW5hbDsKLSAgICB2b2lkIHVuaWZvcm1NYXRyaXgzeDRmdihHQ0dMaW50IGxvY2F0aW9uLCBH
Q0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3Jj
T2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpIGZpbmFsOwotICAgIHZvaWQgdW5pZm9ybU1hdHJp
eDR4M2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NH
TGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkgZmlu
YWw7CisgICAgdm9pZCB1bmlmb3JtMXVpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25z
dCBHQ0dMdWludD4pIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybTJ1aXYoR0NHTGludCBsb2NhdGlv
biwgR0NHTFNwYW48Y29uc3QgR0NHTHVpbnQ+KSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm0zdWl2
KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0x1aW50PikgZmluYWw7CisgICAg
dm9pZCB1bmlmb3JtNHVpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdWlu
dD4pIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybU1hdHJpeDJ4M2Z2KEdDR0xpbnQgbG9jYXRpb24s
IEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiBkYXRhKSBm
aW5hbDsKKyAgICB2b2lkIHVuaWZvcm1NYXRyaXgzeDJmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dM
Ym9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gZGF0YSkgZmluYWw7
CisgICAgdm9pZCB1bmlmb3JtTWF0cml4Mng0ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xl
YW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEpIGZpbmFsOworICAg
IHZvaWQgdW5pZm9ybU1hdHJpeDR4MmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRy
YW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiBkYXRhKSBmaW5hbDsKKyAgICB2b2lk
IHVuaWZvcm1NYXRyaXgzeDRmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bv
c2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gZGF0YSkgZmluYWw7CisgICAgdm9pZCB1bmlm
b3JtTWF0cml4NHgzZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBH
Q0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEpIGZpbmFsOwogICAgIHZvaWQgdmVydGV4QXR0
cmliSTRpKEdDR0x1aW50IGluZGV4LCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTGludCB6LCBH
Q0dMaW50IHcpIGZpbmFsOwotICAgIHZvaWQgdmVydGV4QXR0cmliSTRpdihHQ0dMdWludCBpbmRl
eCwgY29uc3QgR0NHTGludCogdmFsdWVzKSBmaW5hbDsKKyAgICB2b2lkIHZlcnRleEF0dHJpYkk0
aXYoR0NHTHVpbnQgaW5kZXgsIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQsIDQ+IHZhbHVlcykgZmlu
YWw7CiAgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJJNHVpKEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCB4
LCBHQ0dMdWludCB5LCBHQ0dMdWludCB6LCBHQ0dMdWludCB3KSBmaW5hbDsKLSAgICB2b2lkIHZl
cnRleEF0dHJpYkk0dWl2KEdDR0x1aW50IGluZGV4LCBjb25zdCBHQ0dMdWludCogdmFsdWVzKSBm
aW5hbDsKKyAgICB2b2lkIHZlcnRleEF0dHJpYkk0dWl2KEdDR0x1aW50IGluZGV4LCBHQ0dMU3Bh
bjxjb25zdCBHQ0dMdWludCwgND4gdmFsdWVzKSBmaW5hbDsKICAgICB2b2lkIHZlcnRleEF0dHJp
YklQb2ludGVyKEdDR0x1aW50IGluZGV4LCBHQ0dMaW50IHNpemUsIEdDR0xlbnVtIHR5cGUsIEdD
R0xzaXplaSBzdHJpZGUsIEdDR0xpbnRwdHIgb2Zmc2V0KSBmaW5hbDsKIAogICAgIHZvaWQgZHJh
d1JhbmdlRWxlbWVudHMoR0NHTGVudW0gbW9kZSwgR0NHTHVpbnQgc3RhcnQsIEdDR0x1aW50IGVu
ZCwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCkgZmlu
YWw7CiAKLSAgICB2b2lkIGRyYXdCdWZmZXJzKEdDR0xzaXplaSBuLCBjb25zdCBHQ0dMZW51bSog
YnVmcykgZmluYWw7Ci0gICAgdm9pZCBjbGVhckJ1ZmZlcml2KEdDR0xlbnVtIGJ1ZmZlciwgR0NH
TGludCBkcmF3YnVmZmVyLCBjb25zdCBHQ0dMaW50KiB2YWx1ZXMsIEdDR0x1aW50IHNyY09mZnNl
dCkgZmluYWw7Ci0gICAgdm9pZCBjbGVhckJ1ZmZlcnVpdihHQ0dMZW51bSBidWZmZXIsIEdDR0xp
bnQgZHJhd2J1ZmZlciwgY29uc3QgR0NHTHVpbnQqIHZhbHVlcywgR0NHTHVpbnQgc3JjT2Zmc2V0
KSBmaW5hbDsKLSAgICB2b2lkIGNsZWFyQnVmZmVyZnYoR0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50
IGRyYXdidWZmZXIsIGNvbnN0IEdDR0xmbG9hdCogdmFsdWVzLCBHQ0dMdWludCBzcmNPZmZzZXQp
IGZpbmFsOworICAgIHZvaWQgZHJhd0J1ZmZlcnMoR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+IGJ1
ZnMpIGZpbmFsOworICAgIHZvaWQgY2xlYXJCdWZmZXJpdihHQ0dMZW51bSBidWZmZXIsIEdDR0xp
bnQgZHJhd2J1ZmZlciwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gdmFsdWVzKSBmaW5hbDsKKyAg
ICB2b2lkIGNsZWFyQnVmZmVydWl2KEdDR0xlbnVtIGJ1ZmZlciwgR0NHTGludCBkcmF3YnVmZmVy
LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdWludD4gdmFsdWVzKSBmaW5hbDsKKyAgICB2b2lkIGNsZWFy
QnVmZmVyZnYoR0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50IGRyYXdidWZmZXIsIEdDR0xTcGFuPGNv
bnN0IEdDR0xmbG9hdD4gdmFsdWVzKSBmaW5hbDsKICAgICB2b2lkIGNsZWFyQnVmZmVyZmkoR0NH
TGVudW0gYnVmZmVyLCBHQ0dMaW50IGRyYXdidWZmZXIsIEdDR0xmbG9hdCBkZXB0aCwgR0NHTGlu
dCBzdGVuY2lsKSBmaW5hbDsKIAogICAgIFBsYXRmb3JtR0xPYmplY3QgY3JlYXRlUXVlcnkoKSBm
aW5hbDsKQEAgLTQyNCwxOSArNDI0LDYgQEAgcHVibGljOgogICAgIHZvaWQgY29tcHJlc3NlZFRl
eFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZz
ZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBH
Q0dMZW51bSBmb3JtYXQsIGNvbnN0IHZvaWQqIHNyY0RhdGEsIEdDR0x1aW50IHNyY09mZnNldCwg
R0NHTHVpbnQgc3JjTGVuZ3RoT3ZlcnJpZGUpOwogI2VuZGlmCiAKLSAgICB2b2lkIHVuaWZvcm0x
ZnYoR0NHTGludCBsb2NhdGlvbiwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNP
ZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkgZmluYWw7Ci0gICAgdm9pZCB1bmlmb3JtMmZ2KEdD
R0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0
LCBHQ0dMdWludCBzcmNMZW5ndGgpIGZpbmFsOwotICAgIHZvaWQgdW5pZm9ybTNmdihHQ0dMaW50
IGxvY2F0aW9uLCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NH
THVpbnQgc3JjTGVuZ3RoKSBmaW5hbDsKLSAgICB2b2lkIHVuaWZvcm00ZnYoR0NHTGludCBsb2Nh
dGlvbiwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50
IHNyY0xlbmd0aCkgZmluYWw7Ci0KLSAgICB2b2lkIHVuaWZvcm0xaXYoR0NHTGludCBsb2NhdGlv
biwgY29uc3QgR0NHTGludCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNM
ZW5ndGgpIGZpbmFsOwotICAgIHZvaWQgdW5pZm9ybTJpdihHQ0dMaW50IGxvY2F0aW9uLCBjb25z
dCBHQ0dMaW50KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkg
ZmluYWw7Ci0gICAgdm9pZCB1bmlmb3JtM2l2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0xp
bnQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKSBmaW5hbDsK
LSAgICB2b2lkIHVuaWZvcm00aXYoR0NHTGludCBsb2NhdGlvbiwgY29uc3QgR0NHTGludCogZGF0
YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpIGZpbmFsOwotCi0gICAg
dm9pZCB1bmlmb3JtTWF0cml4MmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5z
cG9zZSwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50
IHNyY0xlbmd0aCkgZmluYWw7Ci0gICAgdm9pZCB1bmlmb3JtTWF0cml4M2Z2KEdDR0xpbnQgbG9j
YXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dM
dWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkgZmluYWw7Ci0gICAgdm9pZCB1bmlm
b3JtTWF0cml4NGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29u
c3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0
aCkgZmluYWw7CiAgICAgdm9pZCBnZXRBY3RpdmVVbmlmb3JtQmxvY2tpdihHQ0dMdWludCBwcm9n
cmFtLCBHQ0dMdWludCB1bmlmb3JtQmxvY2tJbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFu
PEdDR0xpbnQ+IHBhcmFtcykgZmluYWw7CiAKICNpZiAhVVNFKEFOR0xFKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdM
T3BlbkdMQ29tbW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5n
bC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvbW1vbi5jcHAKaW5kZXggYWJiN2UyNWEwNmYwODVj
Y2VhY2ZmNWFiNmU4MjA0NTdjZTlhMmQ5My4uMTM0YjY2OTNjZjUzYzg3YzYyMmQ5YTM2ZDk2NDcz
MWVhYWFmZjc5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29tbW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb21t
b24uY3BwCkBAIC01NTIsMjAgKzU1MiwyMCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpidWZmZXJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpcHRyIHNpemUsIEdDRwogICAg
IDo6Z2xCdWZmZXJEYXRhKHRhcmdldCwgc2l6ZSwgMCwgdXNhZ2UpOwogfQogCi12b2lkIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpidWZmZXJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVp
cHRyIHNpemUsIGNvbnN0IHZvaWQqIGRhdGEsIEdDR0xlbnVtIHVzYWdlKQordm9pZCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6YnVmZmVyRGF0YShHQ0dMZW51bSB0YXJnZXQsIEdDR0xTcGFuPGNv
bnN0IHZvaWQ+IGRhdGEsIEdDR0xlbnVtIHVzYWdlKQogewogICAgIGlmICghbWFrZUNvbnRleHRD
dXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIDo6Z2xCdWZmZXJEYXRhKHRhcmdldCwg
c2l6ZSwgZGF0YSwgdXNhZ2UpOworICAgIDo6Z2xCdWZmZXJEYXRhKHRhcmdldCwgZGF0YS5idWZT
aXplLCBkYXRhLmRhdGEsIHVzYWdlKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6YnVmZmVyU3ViRGF0YShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnRwdHIgb2Zmc2V0LCBHQ0dM
c2l6ZWlwdHIgc2l6ZSwgY29uc3Qgdm9pZCogZGF0YSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OmJ1ZmZlclN1YkRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50cHRyIG9mZnNldCwg
R0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEpCiB7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1
cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgOjpnbEJ1ZmZlclN1YkRhdGEodGFyZ2V0
LCBvZmZzZXQsIHNpemUsIGRhdGEpOworICAgIDo6Z2xCdWZmZXJTdWJEYXRhKHRhcmdldCwgb2Zm
c2V0LCBkYXRhLmJ1ZlNpemUsIGRhdGEuZGF0YSk7CiB9CiAKIEdDR0xlbnVtIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpjaGVja0ZyYW1lYnVmZmVyU3RhdHVzKEdDR0xlbnVtIHRhcmdldCkKQEAg
LTE0MTUsMTIgKzE0MTUsMTIgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9y
bTFmKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xmbG9hdCB2MCkKICAgICA6OmdsVW5pZm9ybTFmKGxv
Y2F0aW9uLCB2MCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0x
ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIHNpemUsIGNvbnN0IEdDR0xmbG9hdCogYXJy
YXkpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMWZ2KEdDR0xpbnQgbG9j
YXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gYXJyYXkpCiB7CiAgICAgaWYgKCFtYWtl
Q29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgOjpnbFVuaWZvcm0xZnYo
bG9jYXRpb24sIHNpemUsIGFycmF5KTsKKyAgICA6OmdsVW5pZm9ybTFmdihsb2NhdGlvbiwgYXJy
YXkuYnVmU2l6ZSwgYXJyYXkuZGF0YSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OnVuaWZvcm0yZihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMZmxvYXQgdjAsIEdDR0xmbG9hdCB2
MSkKQEAgLTE0MzEsMTMgKzE0MzEsMTMgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
dW5pZm9ybTJmKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xmbG9hdCB2MCwgR0NHTGZsb2EKICAgICA6
OmdsVW5pZm9ybTJmKGxvY2F0aW9uLCB2MCwgdjEpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjp1bmlmb3JtMmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBzaXplLCBj
b25zdCBHQ0dMZmxvYXQqIGFycmF5KQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5p
Zm9ybTJmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGFycmF5
KQogewotICAgIC8vIEZJWE1FOiBsZW5ndGggbmVlZHMgdG8gYmUgYSBtdWx0aXBsZSBvZiAyLgor
ICAgIEFTU0VSVCghKGFycmF5LmJ1ZlNpemUgJSAyKSk7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1
cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgOjpnbFVuaWZvcm0yZnYobG9jYXRpb24s
IHNpemUsIGFycmF5KTsKKyAgICA6OmdsVW5pZm9ybTJmdihsb2NhdGlvbiwgYXJyYXkuYnVmU2l6
ZSAvIDIsIGFycmF5LmRhdGEpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1
bmlmb3JtM2YoR0NHTGludCBsb2NhdGlvbiwgR0NHTGZsb2F0IHYwLCBHQ0dMZmxvYXQgdjEsIEdD
R0xmbG9hdCB2MikKQEAgLTE0NDgsMTMgKzE0NDgsMTMgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6dW5pZm9ybTNmKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xmbG9hdCB2MCwgR0NHTGZs
b2EKICAgICA6OmdsVW5pZm9ybTNmKGxvY2F0aW9uLCB2MCwgdjEsIHYyKTsKIH0KIAotdm9pZCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTNmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dM
c2l6ZWkgc2l6ZSwgY29uc3QgR0NHTGZsb2F0KiBhcnJheSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OnVuaWZvcm0zZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NH
TGZsb2F0PiBhcnJheSkKIHsKLSAgICAvLyBGSVhNRTogbGVuZ3RoIG5lZWRzIHRvIGJlIGEgbXVs
dGlwbGUgb2YgMy4KKyAgICBBU1NFUlQoIShhcnJheS5idWZTaXplICUgMykpOwogICAgIGlmICgh
bWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIDo6Z2xVbmlmb3Jt
M2Z2KGxvY2F0aW9uLCBzaXplLCBhcnJheSk7CisgICAgOjpnbFVuaWZvcm0zZnYobG9jYXRpb24s
IGFycmF5LmJ1ZlNpemUgLyAzLCBhcnJheS5kYXRhKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6dW5pZm9ybTRmKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xmbG9hdCB2MCwgR0NH
TGZsb2F0IHYxLCBHQ0dMZmxvYXQgdjIsIEdDR0xmbG9hdCB2MykKQEAgLTE0NjUsMTMgKzE0NjUs
MTMgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTRmKEdDR0xpbnQgbG9j
YXRpb24sIEdDR0xmbG9hdCB2MCwgR0NHTGZsb2EKICAgICA6OmdsVW5pZm9ybTRmKGxvY2F0aW9u
LCB2MCwgdjEsIHYyLCB2Myk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVu
aWZvcm00ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIHNpemUsIGNvbnN0IEdDR0xmbG9h
dCogYXJyYXkpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtNGZ2KEdDR0xp
bnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gYXJyYXkpCiB7Ci0gICAgLy8g
RklYTUU6IGxlbmd0aCBuZWVkcyB0byBiZSBhIG11bHRpcGxlIG9mIDQuCisgICAgQVNTRVJUKCEo
YXJyYXkuYnVmU2l6ZSAlIDQpKTsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICA6OmdsVW5pZm9ybTRmdihsb2NhdGlvbiwgc2l6ZSwgYXJyYXkp
OworICAgIDo6Z2xVbmlmb3JtNGZ2KGxvY2F0aW9uLCBhcnJheS5idWZTaXplIC8gNCwgYXJyYXku
ZGF0YSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0xaShHQ0dM
aW50IGxvY2F0aW9uLCBHQ0dMaW50IHYwKQpAQCAtMTQ4MiwxMiArMTQ4MiwxMiBAQCB2b2lkIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMWkoR0NHTGludCBsb2NhdGlvbiwgR0NHTGlu
dCB2MCkKICAgICA6OmdsVW5pZm9ybTFpKGxvY2F0aW9uLCB2MCk7CiB9CiAKLXZvaWQgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0xaXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVp
IHNpemUsIGNvbnN0IEdDR0xpbnQqIGFycmF5KQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6dW5pZm9ybTFpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50PiBh
cnJheSkKIHsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47
CiAKLSAgICA6OmdsVW5pZm9ybTFpdihsb2NhdGlvbiwgc2l6ZSwgYXJyYXkpOworICAgIDo6Z2xV
bmlmb3JtMWl2KGxvY2F0aW9uLCBhcnJheS5idWZTaXplLCBhcnJheS5kYXRhKTsKIH0KIAogdm9p
ZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTJpKEdDR0xpbnQgbG9jYXRpb24sIEdD
R0xpbnQgdjAsIEdDR0xpbnQgdjEpCkBAIC0xNDk4LDEzICsxNDk4LDEzIEBAIHZvaWQgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0yaShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMaW50IHYw
LCBHQ0dMaW50IHYxCiAgICAgOjpnbFVuaWZvcm0yaShsb2NhdGlvbiwgdjAsIHYxKTsKIH0KIAot
dm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTJpdihHQ0dMaW50IGxvY2F0aW9u
LCBHQ0dMc2l6ZWkgc2l6ZSwgY29uc3QgR0NHTGludCogYXJyYXkpCit2b2lkIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjp1bmlmb3JtMml2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0
IEdDR0xpbnQ+IGFycmF5KQogewotICAgIC8vIEZJWE1FOiBsZW5ndGggbmVlZHMgdG8gYmUgYSBt
dWx0aXBsZSBvZiAyLgorICAgIEFTU0VSVCghKGFycmF5LmJ1ZlNpemUgJSAyKSk7CiAgICAgaWYg
KCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgOjpnbFVuaWZv
cm0yaXYobG9jYXRpb24sIHNpemUsIGFycmF5KTsKKyAgICA6OmdsVW5pZm9ybTJpdihsb2NhdGlv
biwgYXJyYXkuYnVmU2l6ZSAvIDIsIGFycmF5LmRhdGEpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjp1bmlmb3JtM2koR0NHTGludCBsb2NhdGlvbiwgR0NHTGludCB2MCwgR0NH
TGludCB2MSwgR0NHTGludCB2MikKQEAgLTE1MTUsMTMgKzE1MTUsMTMgQEAgdm9pZCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTNpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xpbnQgdjAs
IEdDR0xpbnQgdjEKICAgICA6OmdsVW5pZm9ybTNpKGxvY2F0aW9uLCB2MCwgdjEsIHYyKTsKIH0K
IAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTNpdihHQ0dMaW50IGxvY2F0
aW9uLCBHQ0dMc2l6ZWkgc2l6ZSwgY29uc3QgR0NHTGludCogYXJyYXkpCit2b2lkIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjp1bmlmb3JtM2l2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNv
bnN0IEdDR0xpbnQ+IGFycmF5KQogewotICAgIC8vIEZJWE1FOiBsZW5ndGggbmVlZHMgdG8gYmUg
YSBtdWx0aXBsZSBvZiAzLgorICAgIEFTU0VSVCghKGFycmF5LmJ1ZlNpemUgJSAzKSk7CiAgICAg
aWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgOjpnbFVu
aWZvcm0zaXYobG9jYXRpb24sIHNpemUsIGFycmF5KTsKKyAgICA6OmdsVW5pZm9ybTNpdihsb2Nh
dGlvbiwgYXJyYXkuYnVmU2l6ZSAvIDMsIGFycmF5LmRhdGEpOwogfQogCiB2b2lkIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjp1bmlmb3JtNGkoR0NHTGludCBsb2NhdGlvbiwgR0NHTGludCB2MCwg
R0NHTGludCB2MSwgR0NHTGludCB2MiwgR0NHTGludCB2MykKQEAgLTE1MzIsNDAgKzE1MzIsNDAg
QEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTRpKEdDR0xpbnQgbG9jYXRp
b24sIEdDR0xpbnQgdjAsIEdDR0xpbnQgdjEKICAgICA6OmdsVW5pZm9ybTRpKGxvY2F0aW9uLCB2
MCwgdjEsIHYyLCB2Myk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZv
cm00aXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIHNpemUsIGNvbnN0IEdDR0xpbnQqIGFy
cmF5KQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTRpdihHQ0dMaW50IGxv
Y2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50PiBhcnJheSkKIHsKLSAgICAvLyBGSVhNRTog
bGVuZ3RoIG5lZWRzIHRvIGJlIGEgbXVsdGlwbGUgb2YgNC4KKyAgICBBU1NFUlQoIShhcnJheS5i
dWZTaXplICUgNCkpOwogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIDo6Z2xVbmlmb3JtNGl2KGxvY2F0aW9uLCBzaXplLCBhcnJheSk7CisgICAg
OjpnbFVuaWZvcm00aXYobG9jYXRpb24sIGFycmF5LmJ1ZlNpemUgLyA0LCBhcnJheS5kYXRhKTsK
IH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybU1hdHJpeDJmdihHQ0dM
aW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgc2l6ZSwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25z
dCBHQ0dMZmxvYXQqIGFycmF5KQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9y
bU1hdHJpeDJmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xT
cGFuPGNvbnN0IEdDR0xmbG9hdD4gYXJyYXkpCiB7Ci0gICAgLy8gRklYTUU6IGxlbmd0aCBuZWVk
cyB0byBiZSBhIG11bHRpcGxlIG9mIDQuCisgICAgQVNTRVJUKCEoYXJyYXkuYnVmU2l6ZSAlIDQp
KTsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAg
ICA6OmdsVW5pZm9ybU1hdHJpeDJmdihsb2NhdGlvbiwgc2l6ZSwgdHJhbnNwb3NlLCBhcnJheSk7
CisgICAgOjpnbFVuaWZvcm1NYXRyaXgyZnYobG9jYXRpb24sIGFycmF5LmJ1ZlNpemUgLyA0LCB0
cmFuc3Bvc2UsIGFycmF5LmRhdGEpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
Ojp1bmlmb3JtTWF0cml4M2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBzaXplLCBHQ0dM
Ym9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogYXJyYXkpCit2b2lkIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4M2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xi
b29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiBhcnJheSkKIHsKLSAg
ICAvLyBGSVhNRTogbGVuZ3RoIG5lZWRzIHRvIGJlIGEgbXVsdGlwbGUgb2YgOS4KKyAgICBBU1NF
UlQoIShhcnJheS5idWZTaXplICUgOSkpOwogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkp
CiAgICAgICAgIHJldHVybjsKIAotICAgIDo6Z2xVbmlmb3JtTWF0cml4M2Z2KGxvY2F0aW9uLCBz
aXplLCB0cmFuc3Bvc2UsIGFycmF5KTsKKyAgICA6OmdsVW5pZm9ybU1hdHJpeDNmdihsb2NhdGlv
biwgYXJyYXkuYnVmU2l6ZSAvIDksIHRyYW5zcG9zZSwgYXJyYXkuZGF0YSk7CiB9CiAKLXZvaWQg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXg0ZnYoR0NHTGludCBsb2NhdGlv
biwgR0NHTHNpemVpIHNpemUsIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0
KiBhcnJheSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXg0ZnYo
R0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBH
Q0dMZmxvYXQ+IGFycmF5KQogewotICAgIC8vIEZJWE1FOiBsZW5ndGggbmVlZHMgdG8gYmUgYSBt
dWx0aXBsZSBvZiAxNi4KKyAgICBBU1NFUlQoIShhcnJheS5idWZTaXplICUgMTYpKTsKICAgICBp
ZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICA6OmdsVW5p
Zm9ybU1hdHJpeDRmdihsb2NhdGlvbiwgc2l6ZSwgdHJhbnNwb3NlLCBhcnJheSk7CisgICAgOjpn
bFVuaWZvcm1NYXRyaXg0ZnYobG9jYXRpb24sIGFycmF5LmJ1ZlNpemUgLyAxNiwgdHJhbnNwb3Nl
LCBhcnJheS5kYXRhKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dXNlUHJv
Z3JhbShQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0pCkBAIC0xNTk0LDEyICsxNTk0LDEyIEBAIHZv
aWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYjFmKEdDR0x1aW50IGluZGV4
LCBHQ0dMZmxvYXQgdjApCiAgICAgOjpnbFZlcnRleEF0dHJpYjFmKGluZGV4LCB2MCk7CiB9CiAK
LXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYjFmdihHQ0dMdWludCBp
bmRleCwgY29uc3QgR0NHTGZsb2F0KiBhcnJheSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OnZlcnRleEF0dHJpYjFmdihHQ0dMdWludCBpbmRleCwgR0NHTFNwYW48Y29uc3QgR0NHTGZs
b2F0LCAxPiBhcnJheSkKIHsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICA6OmdsVmVydGV4QXR0cmliMWZ2KGluZGV4LCBhcnJheSk7CisgICAg
OjpnbFZlcnRleEF0dHJpYjFmdihpbmRleCwgYXJyYXkuZGF0YSk7CiB9CiAKIHZvaWQgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYjJmKEdDR0x1aW50IGluZGV4LCBHQ0dMZmxv
YXQgdjAsIEdDR0xmbG9hdCB2MSkKQEAgLTE2MTAsMTIgKzE2MTAsMTIgQEAgdm9pZCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliMmYoR0NHTHVpbnQgaW5kZXgsIEdDR0xmbG9h
dCB2MCwgR0NHTGYKICAgICA6OmdsVmVydGV4QXR0cmliMmYoaW5kZXgsIHYwLCB2MSk7CiB9CiAK
LXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYjJmdihHQ0dMdWludCBp
bmRleCwgY29uc3QgR0NHTGZsb2F0KiBhcnJheSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OnZlcnRleEF0dHJpYjJmdihHQ0dMdWludCBpbmRleCwgR0NHTFNwYW48Y29uc3QgR0NHTGZs
b2F0LCAyPiBhcnJheSkKIHsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICA6OmdsVmVydGV4QXR0cmliMmZ2KGluZGV4LCBhcnJheSk7CisgICAg
OjpnbFZlcnRleEF0dHJpYjJmdihpbmRleCwgYXJyYXkuZGF0YSk7CiB9CiAKIHZvaWQgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYjNmKEdDR0x1aW50IGluZGV4LCBHQ0dMZmxv
YXQgdjAsIEdDR0xmbG9hdCB2MSwgR0NHTGZsb2F0IHYyKQpAQCAtMTYyNiwxMiArMTYyNiwxMiBA
QCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2ZXJ0ZXhBdHRyaWIzZihHQ0dMdWludCBp
bmRleCwgR0NHTGZsb2F0IHYwLCBHQ0dMZgogICAgIDo6Z2xWZXJ0ZXhBdHRyaWIzZihpbmRleCwg
djAsIHYxLCB2Mik7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZlcnRleEF0
dHJpYjNmdihHQ0dMdWludCBpbmRleCwgY29uc3QgR0NHTGZsb2F0KiBhcnJheSkKK3ZvaWQgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYjNmdihHQ0dMdWludCBpbmRleCwgR0NH
TFNwYW48Y29uc3QgR0NHTGZsb2F0LCAzPiBhcnJheSkKIHsKICAgICBpZiAoIW1ha2VDb250ZXh0
Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICA6OmdsVmVydGV4QXR0cmliM2Z2KGlu
ZGV4LCBhcnJheSk7CisgICAgOjpnbFZlcnRleEF0dHJpYjNmdihpbmRleCwgYXJyYXkuZGF0YSk7
CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYjRmKEdDR0x1
aW50IGluZGV4LCBHQ0dMZmxvYXQgdjAsIEdDR0xmbG9hdCB2MSwgR0NHTGZsb2F0IHYyLCBHQ0dM
ZmxvYXQgdjMpCkBAIC0xNjQyLDEyICsxNjQyLDEyIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OnZlcnRleEF0dHJpYjRmKEdDR0x1aW50IGluZGV4LCBHQ0dMZmxvYXQgdjAsIEdDR0xm
CiAgICAgOjpnbFZlcnRleEF0dHJpYjRmKGluZGV4LCB2MCwgdjEsIHYyLCB2Myk7CiB9CiAKLXZv
aWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYjRmdihHQ0dMdWludCBpbmRl
eCwgY29uc3QgR0NHTGZsb2F0KiBhcnJheSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OnZlcnRleEF0dHJpYjRmdihHQ0dMdWludCBpbmRleCwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0
LCA0PiBhcnJheSkKIHsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICA6OmdsVmVydGV4QXR0cmliNGZ2KGluZGV4LCBhcnJheSk7CisgICAgOjpn
bFZlcnRleEF0dHJpYjRmdihpbmRleCwgYXJyYXkuZGF0YSk7CiB9CiAKIHZvaWQgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYlBvaW50ZXIoR0NHTHVpbnQgaW5kZXgsIEdDR0xp
bnQgc2l6ZSwgR0NHTGVudW0gdHlwZSwgR0NHTGJvb2xlYW4gbm9ybWFsaXplZCwgR0NHTHNpemVp
IHN0cmlkZSwgR0NHTGludHB0ciBvZmZzZXQpCkBAIC0yMDU1LDcgKzIwNTUsNyBAQCBHQ0dMc2l6
ZWlwdHIgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFZlcnRleEF0dHJpYk9mZnNldChHQ0dM
dWludCBpbmRleCwgR0NHTAogICAgIHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMc2l6ZWlwdHI+KHJl
aW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KHBvaW50ZXIpKTsKIH0KIAotdm9pZCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6dGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2
ZWwsIEdDR0xpbnQgeG9mZiwgR0NHTGludCB5b2ZmLCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXpl
aSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgY29uc3Qgdm9pZCogcGl4
ZWxzKQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dGV4U3ViSW1hZ2UyRChHQ0dMZW51
bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZiwgR0NHTGludCB5b2ZmLCBHQ0dM
c2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0g
dHlwZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IHBpeGVscykKIHsKICAgICBpZiAoIW1ha2VD
b250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CkBAIC0yMDgzLDcgKzIwODMsNyBAQCB2
b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp0ZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTGludCBsZXZlbCwgR0NHTAogICAgIH0KIAogICAgIC8vIEZJWE1FOiB3ZSB3aWxsIG5l
ZWQgdG8gZGVhbCB3aXRoIFBpeGVsU3RvcmUgcGFyYW1zIHdoZW4gZGVhbGluZyB3aXRoIGltYWdl
IGJ1ZmZlcnMgdGhhdCBkaWZmZXIgZnJvbSB0aGUgc3ViaW1hZ2Ugc2l6ZS4KLSAgICA6OmdsVGV4
U3ViSW1hZ2UyRCh0YXJnZXQsIGxldmVsLCB4b2ZmLCB5b2ZmLCB3aWR0aCwgaGVpZ2h0LCBmb3Jt
YXQsIHR5cGUsIHBpeGVscyk7CisgICAgOjpnbFRleFN1YkltYWdlMkQodGFyZ2V0LCBsZXZlbCwg
eG9mZiwgeW9mZiwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBwaXhlbHMuZGF0YSk7CiAg
ICAgbV9zdGF0ZS50ZXh0dXJlU2VlZENvdW50LmFkZChtX3N0YXRlLmN1cnJlbnRCb3VuZFRleHR1
cmUoKSk7CiB9CiAKQEAgLTIzOTUsMTcgKzIzOTUsMTUgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6ZnJhbWVidWZmZXJUZXh0dXJlTGF5ZXIoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51
bQogICAgIFVOVVNFRF9QQVJBTShsYXllcik7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OmludmFsaWRhdGVGcmFtZWJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaSBu
dW1BdHRhY2htZW50cywgY29uc3QgR0NHTGVudW0qIGF0dGFjaG1lbnRzKQordm9pZCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6aW52YWxpZGF0ZUZyYW1lYnVmZmVyKEdDR0xlbnVtIHRhcmdldCwg
R0NHTFNwYW48Y29uc3QgR0NHTGVudW0+IGF0dGFjaG1lbnRzKQogewogICAgIFVOVVNFRF9QQVJB
TSh0YXJnZXQpOwotICAgIFVOVVNFRF9QQVJBTShudW1BdHRhY2htZW50cyk7CiAgICAgVU5VU0VE
X1BBUkFNKGF0dGFjaG1lbnRzKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
aW52YWxpZGF0ZVN1YkZyYW1lYnVmZmVyKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpIG51bUF0
dGFjaG1lbnRzLCBjb25zdCBHQ0dMZW51bSogYXR0YWNobWVudHMsIEdDR0xpbnQgeCwgR0NHTGlu
dCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpCit2b2lkIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjppbnZhbGlkYXRlU3ViRnJhbWVidWZmZXIoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4gYXR0YWNobWVudHMsIEdDR0xpbnQgeCwgR0NHTGludCB5
LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpCiB7CiAgICAgVU5VU0VEX1BBUkFN
KHRhcmdldCk7Ci0gICAgVU5VU0VEX1BBUkFNKG51bUF0dGFjaG1lbnRzKTsKICAgICBVTlVTRURf
UEFSQU0oYXR0YWNobWVudHMpOwogICAgIFVOVVNFRF9QQVJBTSh4KTsKICAgICBVTlVTRURfUEFS
QU0oeSk7CkBAIC0yNTI5LDkwICsyNTI3LDcwIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OnVuaWZvcm00dWkoR0NHTGludCBsb2NhdGlvbiwgR0NHTHVpbnQgdjAsIEdDR0x1aW50CiAg
ICAgVU5VU0VEX1BBUkFNKHYzKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
dW5pZm9ybTF1aXYoR0NHTGludCBsb2NhdGlvbiwgY29uc3QgR0NHTHVpbnQqIGRhdGEsIEdDR0x1
aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQordm9pZCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6dW5pZm9ybTF1aXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NH
THVpbnQ+IGRhdGEpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGxvY2F0aW9uKTsKICAgICBVTlVTRURf
UEFSQU0oZGF0YSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY09mZnNldCk7Ci0gICAgVU5VU0VEX1BB
UkFNKHNyY0xlbmd0aCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZv
cm0ydWl2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0x1aW50KiBkYXRhLCBHQ0dMdWludCBz
cmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OnVuaWZvcm0ydWl2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0x1aW50
PiBkYXRhKQogewogICAgIFVOVVNFRF9QQVJBTShsb2NhdGlvbik7CiAgICAgVU5VU0VEX1BBUkFN
KGRhdGEpOwotICAgIFVOVVNFRF9QQVJBTShzcmNPZmZzZXQpOwotICAgIFVOVVNFRF9QQVJBTShz
cmNMZW5ndGgpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtM3Vp
dihHQ0dMaW50IGxvY2F0aW9uLCBjb25zdCBHQ0dMdWludCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zm
c2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1
bmlmb3JtM3VpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdWludD4gZGF0
YSkKIHsKICAgICBVTlVTRURfUEFSQU0obG9jYXRpb24pOwogICAgIFVOVVNFRF9QQVJBTShkYXRh
KTsKLSAgICBVTlVTRURfUEFSQU0oc3JjT2Zmc2V0KTsKLSAgICBVTlVTRURfUEFSQU0oc3JjTGVu
Z3RoKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTR1aXYoR0NH
TGludCBsb2NhdGlvbiwgY29uc3QgR0NHTHVpbnQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwg
R0NHTHVpbnQgc3JjTGVuZ3RoKQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9y
bTR1aXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTHVpbnQ+IGRhdGEpCiB7
CiAgICAgVU5VU0VEX1BBUkFNKGxvY2F0aW9uKTsKICAgICBVTlVTRURfUEFSQU0oZGF0YSk7Ci0g
ICAgVU5VU0VEX1BBUkFNKHNyY09mZnNldCk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY0xlbmd0aCk7
CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXgyeDNmdihH
Q0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCog
ZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCit2b2lkIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4MngzZnYoR0NHTGludCBsb2NhdGlvbiwg
R0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEpCiB7
CiAgICAgVU5VU0VEX1BBUkFNKGxvY2F0aW9uKTsKICAgICBVTlVTRURfUEFSQU0odHJhbnNwb3Nl
KTsKICAgICBVTlVTRURfUEFSQU0oZGF0YSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY09mZnNldCk7
Ci0gICAgVU5VU0VEX1BBUkFNKHNyY0xlbmd0aCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXgzeDJmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVh
biB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBH
Q0dMdWludCBzcmNMZW5ndGgpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3Jt
TWF0cml4M3gyZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dM
U3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGxvY2F0aW9u
KTsKICAgICBVTlVTRURfUEFSQU0odHJhbnNwb3NlKTsKICAgICBVTlVTRURfUEFSQU0oZGF0YSk7
Ci0gICAgVU5VU0VEX1BBUkFNKHNyY09mZnNldCk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY0xlbmd0
aCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXgyeDRm
dihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9h
dCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCit2b2lkIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4Mng0ZnYoR0NHTGludCBsb2NhdGlv
biwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEp
CiB7CiAgICAgVU5VU0VEX1BBUkFNKGxvY2F0aW9uKTsKICAgICBVTlVTRURfUEFSQU0odHJhbnNw
b3NlKTsKICAgICBVTlVTRURfUEFSQU0oZGF0YSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY09mZnNl
dCk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY0xlbmd0aCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXg0eDJmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9v
bGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0
LCBHQ0dMdWludCBzcmNMZW5ndGgpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlm
b3JtTWF0cml4NHgyZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBH
Q0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGxvY2F0
aW9uKTsKICAgICBVTlVTRURfUEFSQU0odHJhbnNwb3NlKTsKICAgICBVTlVTRURfUEFSQU0oZGF0
YSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY09mZnNldCk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY0xl
bmd0aCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXgz
eDRmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xm
bG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCit2b2lk
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4M3g0ZnYoR0NHTGludCBsb2Nh
dGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRh
dGEpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGxvY2F0aW9uKTsKICAgICBVTlVTRURfUEFSQU0odHJh
bnNwb3NlKTsKICAgICBVTlVTRURfUEFSQU0oZGF0YSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY09m
ZnNldCk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY0xlbmd0aCk7CiB9CiAKLXZvaWQgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXg0eDNmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dM
Ym9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zm
c2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1
bmlmb3JtTWF0cml4NHgzZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3Nl
LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGxv
Y2F0aW9uKTsKICAgICBVTlVTRURfUEFSQU0odHJhbnNwb3NlKTsKICAgICBVTlVTRURfUEFSQU0o
ZGF0YSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY09mZnNldCk7Ci0gICAgVU5VU0VEX1BBUkFNKHNy
Y0xlbmd0aCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJp
Ykk0aShHQ0dMdWludCBpbmRleCwgR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xpbnQgeiwgR0NH
TGludCB3KQpAQCAtMjYyNCw3ICsyNjAyLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6dmVydGV4QXR0cmliSTRpKEdDR0x1aW50IGluZGV4LCBHQ0dMaW50IHgsIEdDR0xpbnQKICAg
ICBVTlVTRURfUEFSQU0odyk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZl
cnRleEF0dHJpYkk0aXYoR0NHTHVpbnQgaW5kZXgsIGNvbnN0IEdDR0xpbnQqIHZhbHVlcykKK3Zv
aWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYkk0aXYoR0NHTHVpbnQgaW5k
ZXgsIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQsIDQ+IHZhbHVlcykKIHsKICAgICBVTlVTRURfUEFS
QU0oaW5kZXgpOwogICAgIFVOVVNFRF9QQVJBTSh2YWx1ZXMpOwpAQCAtMjYzOSw3ICsyNjE3LDcg
QEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliSTR1aShHQ0dMdWlu
dCBpbmRleCwgR0NHTHVpbnQgeCwgR0NHTHUKICAgICBVTlVTRURfUEFSQU0odyk7CiB9CiAKLXZv
aWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYkk0dWl2KEdDR0x1aW50IGlu
ZGV4LCBjb25zdCBHQ0dMdWludCogdmFsdWVzKQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6dmVydGV4QXR0cmliSTR1aXYoR0NHTHVpbnQgaW5kZXgsIEdDR0xTcGFuPGNvbnN0IEdDR0x1
aW50LCA0PiB2YWx1ZXMpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGluZGV4KTsKICAgICBVTlVTRURf
UEFSQU0odmFsdWVzKTsKQEAgLTI2NjQsMzQgKzI2NDIsMzAgQEAgdm9pZCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6ZHJhd1JhbmdlRWxlbWVudHMoR0NHTGVudW0gbW9kZSwgR0NHTHVpbnQgc3Rh
cnQsIEcKICAgICBVTlVTRURfUEFSQU0ob2Zmc2V0KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6ZHJhd0J1ZmZlcnMoR0NHTHNpemVpIG4sIGNvbnN0IEdDR0xlbnVtKiBidWZz
KQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6ZHJhd0J1ZmZlcnMoR0NHTFNwYW48Y29u
c3QgR0NHTGVudW0+IGJ1ZnMpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKG4pOwogICAgIFVOVVNFRF9Q
QVJBTShidWZzKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y2xlYXJCdWZm
ZXJpdihHQ0dMZW51bSBidWZmZXIsIEdDR0xpbnQgZHJhd2J1ZmZlciwgY29uc3QgR0NHTGludCog
dmFsdWVzLCBHQ0dMdWludCBzcmNPZmZzZXQpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpjbGVhckJ1ZmZlcml2KEdDR0xlbnVtIGJ1ZmZlciwgR0NHTGludCBkcmF3YnVmZmVyLCBHQ0dM
U3Bhbjxjb25zdCBHQ0dMaW50PiB2YWx1ZXMpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGJ1ZmZlcik7
CiAgICAgVU5VU0VEX1BBUkFNKGRyYXdidWZmZXIpOwogICAgIFVOVVNFRF9QQVJBTSh2YWx1ZXMp
OwotICAgIFVOVVNFRF9QQVJBTShzcmNPZmZzZXQpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpjbGVhckJ1ZmZlcnVpdihHQ0dMZW51bSBidWZmZXIsIEdDR0xpbnQgZHJhd2J1
ZmZlciwgY29uc3QgR0NHTHVpbnQqIHZhbHVlcywgR0NHTHVpbnQgc3JjT2Zmc2V0KQordm9pZCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y2xlYXJCdWZmZXJ1aXYoR0NHTGVudW0gYnVmZmVyLCBH
Q0dMaW50IGRyYXdidWZmZXIsIEdDR0xTcGFuPGNvbnN0IEdDR0x1aW50PiB2YWx1ZXMpCiB7CiAg
ICAgVU5VU0VEX1BBUkFNKGJ1ZmZlcik7CiAgICAgVU5VU0VEX1BBUkFNKGRyYXdidWZmZXIpOwog
ICAgIFVOVVNFRF9QQVJBTSh2YWx1ZXMpOwotICAgIFVOVVNFRF9QQVJBTShzcmNPZmZzZXQpOwog
fQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjbGVhckJ1ZmZlcmZ2KEdDR0xlbnVt
IGJ1ZmZlciwgR0NHTGludCBkcmF3YnVmZmVyLCBjb25zdCBHQ0dMZmxvYXQqIHZhbHVlcywgR0NH
THVpbnQgc3JjT2Zmc2V0KQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y2xlYXJCdWZm
ZXJmdihHQ0dMZW51bSBidWZmZXIsIEdDR0xpbnQgZHJhd2J1ZmZlciwgR0NHTFNwYW48Y29uc3Qg
R0NHTGZsb2F0PiB2YWx1ZXMpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGJ1ZmZlcik7CiAgICAgVU5V
U0VEX1BBUkFNKGRyYXdidWZmZXIpOwogICAgIFVOVVNFRF9QQVJBTSh2YWx1ZXMpOwotICAgIFVO
VVNFRF9QQVJBTShzcmNPZmZzZXQpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpjbGVhckJ1ZmZlcmZpKEdDR0xlbnVtIGJ1ZmZlciwgR0NHTGludCBkcmF3YnVmZmVyLCBHQ0dM
ZmxvYXQgZGVwdGgsIEdDR0xpbnQgc3RlbmNpbCkKQEAgLTMwMjEsOTYgKzI5OTUsNiBAQCB2b2lk
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChHQ0dMZW51
bSB0YXJnZXQsIEdDR0xpbnQgbAogICAgIFVOVVNFRF9QQVJBTShzcmNMZW5ndGhPdmVycmlkZSk7
CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0xZnYoR0NHTGludCBs
b2NhdGlvbiwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1
aW50IHNyY0xlbmd0aCkKLXsKLSAgICBVTlVTRURfUEFSQU0obG9jYXRpb24pOwotICAgIFVOVVNF
RF9QQVJBTShkYXRhKTsKLSAgICBVTlVTRURfUEFSQU0oc3JjT2Zmc2V0KTsKLSAgICBVTlVTRURf
UEFSQU0oc3JjTGVuZ3RoKTsKLX0KLQotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5p
Zm9ybTJmdihHQ0dMaW50IGxvY2F0aW9uLCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50
IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQotewotICAgIFVOVVNFRF9QQVJBTShsb2Nh
dGlvbik7Ci0gICAgVU5VU0VEX1BBUkFNKGRhdGEpOwotICAgIFVOVVNFRF9QQVJBTShzcmNPZmZz
ZXQpOwotICAgIFVOVVNFRF9QQVJBTShzcmNMZW5ndGgpOwotfQotCi12b2lkIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjp1bmlmb3JtM2Z2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0xmbG9h
dCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCi17Ci0gICAg
VU5VU0VEX1BBUkFNKGxvY2F0aW9uKTsKLSAgICBVTlVTRURfUEFSQU0oZGF0YSk7Ci0gICAgVU5V
U0VEX1BBUkFNKHNyY09mZnNldCk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY0xlbmd0aCk7Ci19Ci0K
LXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm00ZnYoR0NHTGludCBsb2NhdGlv
biwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNy
Y0xlbmd0aCkKLXsKLSAgICBVTlVTRURfUEFSQU0obG9jYXRpb24pOwotICAgIFVOVVNFRF9QQVJB
TShkYXRhKTsKLSAgICBVTlVTRURfUEFSQU0oc3JjT2Zmc2V0KTsKLSAgICBVTlVTRURfUEFSQU0o
c3JjTGVuZ3RoKTsKLX0KLQotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTFp
dihHQ0dMaW50IGxvY2F0aW9uLCBjb25zdCBHQ0dMaW50KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZz
ZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKLXsKLSAgICBVTlVTRURfUEFSQU0obG9jYXRpb24pOwot
ICAgIFVOVVNFRF9QQVJBTShkYXRhKTsKLSAgICBVTlVTRURfUEFSQU0oc3JjT2Zmc2V0KTsKLSAg
ICBVTlVTRURfUEFSQU0oc3JjTGVuZ3RoKTsKLX0KLQotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6dW5pZm9ybTJpdihHQ0dMaW50IGxvY2F0aW9uLCBjb25zdCBHQ0dMaW50KiBkYXRhLCBH
Q0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKLXsKLSAgICBVTlVTRURfUEFS
QU0obG9jYXRpb24pOwotICAgIFVOVVNFRF9QQVJBTShkYXRhKTsKLSAgICBVTlVTRURfUEFSQU0o
c3JjT2Zmc2V0KTsKLSAgICBVTlVTRURfUEFSQU0oc3JjTGVuZ3RoKTsKLX0KLQotdm9pZCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTNpdihHQ0dMaW50IGxvY2F0aW9uLCBjb25zdCBH
Q0dMaW50KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKLXsK
LSAgICBVTlVTRURfUEFSQU0obG9jYXRpb24pOwotICAgIFVOVVNFRF9QQVJBTShkYXRhKTsKLSAg
ICBVTlVTRURfUEFSQU0oc3JjT2Zmc2V0KTsKLSAgICBVTlVTRURfUEFSQU0oc3JjTGVuZ3RoKTsK
LX0KLQotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTRpdihHQ0dMaW50IGxv
Y2F0aW9uLCBjb25zdCBHQ0dMaW50KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50
IHNyY0xlbmd0aCkKLXsKLSAgICBVTlVTRURfUEFSQU0obG9jYXRpb24pOwotICAgIFVOVVNFRF9Q
QVJBTShkYXRhKTsKLSAgICBVTlVTRURfUEFSQU0oc3JjT2Zmc2V0KTsKLSAgICBVTlVTRURfUEFS
QU0oc3JjTGVuZ3RoKTsKLX0KLQotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9y
bU1hdHJpeDJmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0
IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgp
Ci17Ci0gICAgVU5VU0VEX1BBUkFNKGxvY2F0aW9uKTsKLSAgICBVTlVTRURfUEFSQU0odHJhbnNw
b3NlKTsKLSAgICBVTlVTRURfUEFSQU0oZGF0YSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY09mZnNl
dCk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY0xlbmd0aCk7Ci19Ci0KLXZvaWQgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXgzZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xl
YW4gdHJhbnNwb3NlLCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwg
R0NHTHVpbnQgc3JjTGVuZ3RoKQotewotICAgIFVOVVNFRF9QQVJBTShsb2NhdGlvbik7Ci0gICAg
VU5VU0VEX1BBUkFNKHRyYW5zcG9zZSk7Ci0gICAgVU5VU0VEX1BBUkFNKGRhdGEpOwotICAgIFVO
VVNFRF9QQVJBTShzcmNPZmZzZXQpOwotICAgIFVOVVNFRF9QQVJBTShzcmNMZW5ndGgpOwotfQot
Ci12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4NGZ2KEdDR0xpbnQg
bG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBH
Q0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKLXsKLSAgICBVTlVTRURfUEFS
QU0obG9jYXRpb24pOwotICAgIFVOVVNFRF9QQVJBTSh0cmFuc3Bvc2UpOwotICAgIFVOVVNFRF9Q
QVJBTShkYXRhKTsKLSAgICBVTlVTRURfUEFSQU0oc3JjT2Zmc2V0KTsKLSAgICBVTlVTRURfUEFS
QU0oc3JjTGVuZ3RoKTsKLX0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZFBp
eGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVp
Z2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KQog
ewo=
</data>
<flag name="commit-queue"
          id="431834"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>414839</attachid>
            <date>2020-11-24 07:09:13 -0800</date>
            <delta_ts>2020-11-24 07:17:31 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219256-20201124170910.patch</filename>
            <type>text/plain</type>
            <size>192153</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwMTY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzIzYWI2YjRlNmM0NDFj
MDYzZWM1Mzg0YzZmOTA5NDdiZDFhNDY5ZC4uYWFhZmZkMjEwZWViMzliNDA4ZGEzNTYyNWY4MDFm
OTM1ZTg3ZDk2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyNiBAQAorMjAyMC0xMS0yMyAgS2lt
bW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIEdyYXBoaWNzQ29u
dGV4dEdMIHNob3VsZCBoYXZlIHJvYnVzdCBtdWx0aXZhbHVlIHNldHRlcnMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxOTI1NgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlcGxhY2UgYnVmU2l6ZSwgcG9p
bnRlciBwYWlycyBhbmQgcGxhaW4gcG9pbnRlcnMgaW4gR3JhcGhpY3NDb250ZXh0R0wKKyAgICAg
ICAgd2l0aCBHQ0dMU3Bhbi4gVGhpcyBtYWtlcyBpdCBlYXNpZXIgdG8gdW5kZXJzdGFuZCBob3cg
bWFueSB2YWx1ZXMgdGhlcmUKKyAgICAgICAgYXJlIHBvaW50ZWQgYnkgdGhlIHBvaW50ZXIuIFRo
aXMgaXMgbmVlZGVkIGZvciBzaW1wbGVyIGltcGxlbWVudGF0aW9uIG9mIEdQVQorICAgICAgICBw
cm9jZXNzIElQQywgd2hlcmUgdGhlIElQQyBsYXllciBkb2VzIG5vdCBuZWVkIHRvIGludGVycHJl
dCB0aGUgT3BlbkdMCisgICAgICAgIHByb3BlcnRpZXMuCisKKyAgICAgICAgSW4gV2ViR0wgaW1w
bGVtZW50YXRpb24sIGNoYW5nZXMgdGhlIHZhbGlkYXRpb24gZnVuY3Rpb25zIHRvIHJldHVybgor
ICAgICAgICB0aGUgbWVtb3J5IHJlZmVyZW5jZSB0aGF0IHdpbGwgYmUgdG91Y2hlZCBieSB0aGUg
dmFsaWQgZnVuY3Rpb24gY2FsbC4KKyAgICAgICAgT24gdmFsaWRhdGlvbiBmYWlsdXJlLCBudWxs
b3B0IHdpbGwgYmUgcmV0dXJuZWQuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBhIHJlZmFjdG9y
LgorCisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjppbnZhbGlkYXRlRnJhbWVi
dWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6aW52YWxp
ZGF0ZVN1YkZyYW1lYnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0Nv
bnRleHQ6OnVuaWZvcm0xdWl2KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0Nv
bnRleHQ6OnVuaWZvcm0ydWl2KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0Nv
bnRleHQ6OnVuaWZvcm0zdWl2KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0Nv
bnRleHQ6OnVuaWZvcm00dWl2KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0Nv
bnRleHQ6OnVuaWZvcm1NYXRyaXgyeDNmdik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5k
ZXJpbmdDb250ZXh0Ojp1bmlmb3JtTWF0cml4M3gyZnYpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
R0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybU1hdHJpeDJ4NGZ2KToKKyAgICAgICAgKFdlYkNv
cmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm1NYXRyaXg0eDJmdik6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtTWF0cml4M3g0ZnYpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybU1hdHJpeDR4
M2Z2KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnZlcnRleEF0
dHJpYkk0aXYpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dmVy
dGV4QXR0cmliSTR1aXYpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4
dDo6ZHJhd0J1ZmZlcnMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4
dDo6Y2xlYXJCdWZmZXJpdik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250
ZXh0OjpjbGVhckJ1ZmZlcnVpdik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdD
b250ZXh0OjpjbGVhckJ1ZmZlcmZ2KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmlu
Z0NvbnRleHQ6OnZhbGlkYXRlQ2xlYXJCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wy
UmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTFmdik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJS
ZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtMmZ2KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJl
bmRlcmluZ0NvbnRleHQ6OnVuaWZvcm0zZnYpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVu
ZGVyaW5nQ29udGV4dDo6dW5pZm9ybTRmdik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5k
ZXJpbmdDb250ZXh0Ojp1bmlmb3JtMWl2KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRl
cmluZ0NvbnRleHQ6OnVuaWZvcm0yaXYpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVy
aW5nQ29udGV4dDo6dW5pZm9ybTNpdik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJp
bmdDb250ZXh0Ojp1bmlmb3JtNGl2KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmlu
Z0NvbnRleHQ6OnVuaWZvcm1NYXRyaXgyZnYpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVu
ZGVyaW5nQ29udGV4dDo6dW5pZm9ybU1hdHJpeDNmdik6CisgICAgICAgIChXZWJDb3JlOjpXZWJH
TDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtTWF0cml4NGZ2KToKKyAgICAgICAgKiBodG1sL2Nh
bnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0Lmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2Vi
R0xEcmF3QnVmZmVycy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTERyYXdCdWZmZXJzOjpk
cmF3QnVmZmVyc1dFQkdMKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTEZyYW1lYnVmZmVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMRnJhbWVidWZmZXI6OmRyYXdCdWZmZXJzSWZO
ZWNlc3NhcnkpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6YnVm
ZmVyRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpi
dWZmZXJTdWJEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U6OnVuaWZvcm0xZnYpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZTo6dW5pZm9ybTJmdik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlOjp1bmlmb3JtM2Z2KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OnVuaWZvcm00ZnYpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6dW5pZm9ybTFpdik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlOjp1bmlmb3JtMml2KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2U6OnVuaWZvcm0zaXYpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybTRpdik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtTWF0cml4MmZ2KToKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm1NYXRyaXgzZnYpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybU1hdHJpeDRmdik6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZVVuaWZv
cm1NYXRyaXhQYXJhbWV0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OnZlcnRleEF0dHJpYmZ2SW1wbCk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6dmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycyk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvRXh0ZW5zaW9uc0dMLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0R0wuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc1R5cGVzR0wuaDoKKyAgICAgICAgKEdDR0xTcGFuOjpHQ0dMU3Bhbik6CisgICAgICAgIChz
dGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCk6CisgICAgICAgIChtYWtlR0NHTFNwYW4p
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpkcmF3QnVmZmVyc0VYVCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xF
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpidWZmZXJE
YXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpidWZmZXJT
dWJEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlm
b3JtMWZ2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlm
b3JtMmZ2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlm
b3JtM2Z2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlm
b3JtNGZ2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlm
b3JtMWl2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlm
b3JtMml2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlm
b3JtM2l2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlm
b3JtNGl2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlm
b3JtTWF0cml4MmZ2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
Ojp1bmlmb3JtTWF0cml4M2Z2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjp1bmlmb3JtTWF0cml4NGZ2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjp2ZXJ0ZXhBdHRyaWIxZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYjJmdik6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliM2Z2KToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2ZXJ0ZXhBdHRyaWI0ZnYpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmludmFsaWRhdGVGcmFtZWJ1ZmZlcik6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6aW52YWxpZGF0ZVN1
YkZyYW1lYnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
Ojp1bmlmb3JtMXVpdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6dW5pZm9ybTJ1aXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OnVuaWZvcm0zdWl2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjp1bmlmb3JtNHVpdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6dW5pZm9ybU1hdHJpeDJ4M2Z2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4M3gyZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXgyeDRmdik6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybU1hdHJpeDR4MmZ2KToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4M3g0ZnYp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRy
aXg0eDNmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVy
dGV4QXR0cmliSTRpdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6dmVydGV4QXR0cmliSTR1aXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmRyYXdCdWZmZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpjbGVhckJ1ZmZlcml2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpjbGVhckJ1ZmZlcnVpdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6Y2xlYXJCdWZmZXJmdik6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY3YvR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMQ1ZBTkdMRTo6aW5pdGlhbGl6ZVVWQ29udGV4dE9iamVjdHMpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFOjpjb3B5UGl4ZWxCdWZm
ZXJUb1RleHR1cmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGlj
c0NvbnRleHRHTE9wZW5HTC5oOgorCiAyMDIwLTExLTIyICBBbnR0aSBLb2l2aXN0byAgPGFudHRp
QGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXVtJbnRlZ3JhdGlvbl0gQ29udmVydCBzb21lIHJl
bWFpbmluZyBJbmxpbmVCb3ggYWNjZXNzIHRvIHVzZSBpbmxpbmUgaXRlcmF0b3IKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHAK
aW5kZXggNTViYzFmOGRiMjQ5ZDMzODIyZTc4ODljYTc4M2Y1YmVjMDI1YTI5OS4uZTc5ZmU0ZWRi
ZmY4NDBkZGNkNTRlNjcxYTE0YTU3OThhNTBiZGJmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTY3Niw3ICs2
NzYsNyBAQCB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldEJ1ZmZlclN1YkRhdGEoR0NH
TGVudW0gdGFyZ2V0LCBsb25nIGxvbmcgc3JjQnl0ZQogICAgICAgICBzeW50aGVzaXplR0xFcnJv
cihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9WQUxVRSwgImdldEJ1ZmZlclN1YkRhdGEiLCAi
UGFyYW1ldGVycyB3b3VsZCByZWFkIG91dHNpZGUgdGhlIGJvdW5kcyBvZiB0aGUgc291cmNlIGJ1
ZmZlciIpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIAorCiAgICAgaWYgKCFjb3B5TGVu
Z3RoKQogICAgICAgICByZXR1cm47CiAKQEAgLTg5NSw3ICs4OTUsNyBAQCB2b2lkIFdlYkdMMlJl
bmRlcmluZ0NvbnRleHQ6OmludmFsaWRhdGVGcmFtZWJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQsIGNv
bnN0IFZlY3RvcgogICAgIFZlY3RvcjxHQ0dMZW51bT4gdHJhbnNsYXRlZEF0dGFjaG1lbnRzID0g
YXR0YWNobWVudHM7CiAgICAgaWYgKCFjaGVja0FuZFRyYW5zbGF0ZUF0dGFjaG1lbnRzKCJpbnZh
bGlkYXRlRnJhbWVidWZmZXIiLCB0YXJnZXQsIHRyYW5zbGF0ZWRBdHRhY2htZW50cykpCiAgICAg
ICAgIHJldHVybjsKLSAgICBtX2NvbnRleHQtPmludmFsaWRhdGVGcmFtZWJ1ZmZlcih0YXJnZXQs
IHRyYW5zbGF0ZWRBdHRhY2htZW50cy5zaXplKCksIHRyYW5zbGF0ZWRBdHRhY2htZW50cy5kYXRh
KCkpOworICAgIG1fY29udGV4dC0+aW52YWxpZGF0ZUZyYW1lYnVmZmVyKHRhcmdldCwgdHJhbnNs
YXRlZEF0dGFjaG1lbnRzKTsKIH0KIAogdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjppbnZh
bGlkYXRlU3ViRnJhbWVidWZmZXIoR0NHTGVudW0gdGFyZ2V0LCBjb25zdCBWZWN0b3I8R0NHTGVu
dW0+JiBhdHRhY2htZW50cywgR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwg
R0NHTHNpemVpIGhlaWdodCkKQEAgLTkwNiw3ICs5MDYsNyBAQCB2b2lkIFdlYkdMMlJlbmRlcmlu
Z0NvbnRleHQ6OmludmFsaWRhdGVTdWJGcmFtZWJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQsIGNvbnN0
IFZlYwogICAgIFZlY3RvcjxHQ0dMZW51bT4gdHJhbnNsYXRlZEF0dGFjaG1lbnRzID0gYXR0YWNo
bWVudHM7CiAgICAgaWYgKCFjaGVja0FuZFRyYW5zbGF0ZUF0dGFjaG1lbnRzKCJpbnZhbGlkYXRl
U3ViRnJhbWVidWZmZXIiLCB0YXJnZXQsIHRyYW5zbGF0ZWRBdHRhY2htZW50cykpCiAgICAgICAg
IHJldHVybjsKLSAgICBtX2NvbnRleHQtPmludmFsaWRhdGVTdWJGcmFtZWJ1ZmZlcih0YXJnZXQs
IHRyYW5zbGF0ZWRBdHRhY2htZW50cy5zaXplKCksIHRyYW5zbGF0ZWRBdHRhY2htZW50cy5kYXRh
KCksIHgsIHksIHdpZHRoLCBoZWlnaHQpOworICAgIG1fY29udGV4dC0+aW52YWxpZGF0ZVN1YkZy
YW1lYnVmZmVyKHRhcmdldCwgdHJhbnNsYXRlZEF0dGFjaG1lbnRzLCB4LCB5LCB3aWR0aCwgaGVp
Z2h0KTsKIH0KIAogdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpyZWFkQnVmZmVyKEdDR0xl
bnVtIHNyYykKQEAgLTExMjksNyArMTEyOSw3IEBAIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4
dDo6dGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQKICAg
ICBpZiAoIXZhbGlkYXRlVGV4RnVuYygidGV4SW1hZ2UyRCIsIFRleEltYWdlRnVuY3Rpb25UeXBl
OjpUZXhJbWFnZSwgU291cmNlVW5wYWNrQnVmZmVyLCB0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZv
cm1hdCwgd2lkdGgsIGhlaWdodCwgMSwgYm9yZGVyLCBmb3JtYXQsIHR5cGUsIDAsIDAsIDApKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS50ZXhJbWFn
ZTJEUm9idXN0QU5HTEUodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWln
aHQsIGJvcmRlciwgZm9ybWF0LCB0eXBlLCAwLCByZWludGVycHJldF9jYXN0PHZvaWQqPihvZmZz
ZXQpKTsKKyAgICBtX2NvbnRleHQtPnRleEltYWdlMkQodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxm
b3JtYXQsIHdpZHRoLCBoZWlnaHQsIGJvcmRlciwgZm9ybWF0LCB0eXBlLCBvZmZzZXQpOwogfQog
CiBFeGNlcHRpb25Pcjx2b2lkPiBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp0ZXhJbWFnZTJEKEdD
R0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCBpbnRlcm5hbGZvcm1hdCwgR0NH
THNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTGVudW0g
Zm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBUZXhJbWFnZVNvdXJjZSYmIHNvdXJjZSkKQEAgLTExNzMs
NyArMTE3Myw3IEBAIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dGV4SW1hZ2UzRChHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQKICAgICBpZiAoIXZhbGlkYXRlVGV4
RnVuYygidGV4SW1hZ2UzRCIsIFRleEltYWdlRnVuY3Rpb25UeXBlOjpUZXhJbWFnZSwgU291cmNl
VW5wYWNrQnVmZmVyLCB0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdo
dCwgZGVwdGgsIGJvcmRlciwgZm9ybWF0LCB0eXBlLCAwLCAwLCAwKSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkudGV4SW1hZ2UzRFJvYnVzdEFOR0xF
KHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgYm9y
ZGVyLCBmb3JtYXQsIHR5cGUsIDAsIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KG9mZnNldCkpOwor
ICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnRleEltYWdlM0RSb2J1c3RBTkdMRSh0YXJn
ZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGJvcmRlciwg
Zm9ybWF0LCB0eXBlLCAgc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KG9mZnNldCkpOwogfQogCiBFeGNl
cHRpb25Pcjx2b2lkPiBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp0ZXhJbWFnZTNEKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVp
IHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xpbnQgYm9yZGVy
LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIFRleEltYWdlU291cmNlJiYgc291cmNl
KQpAQCAtMTI1OSw3ICsxMjU5LDcgQEAgdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp0ZXhT
dWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGkKICAgICBpZiAo
IXZhbGlkYXRlVGV4RnVuYygidGV4U3ViSW1hZ2UyRCIsIFRleEltYWdlRnVuY3Rpb25UeXBlOjpU
ZXhTdWJJbWFnZSwgU291cmNlVW5wYWNrQnVmZmVyLCB0YXJnZXQsIGxldmVsLCAwLCB3aWR0aCwg
aGVpZ2h0LCAxLCAwLCBmb3JtYXQsIHR5cGUsIHhvZmZzZXQsIHlvZmZzZXQsIDApKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS50ZXhTdWJJbWFnZTJE
Um9idXN0QU5HTEUodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdo
dCwgZm9ybWF0LCB0eXBlLCAwLCByZWludGVycHJldF9jYXN0PHZvaWQqPihvZmZzZXQpKTsKKyAg
ICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS50ZXhTdWJJbWFnZTJEUm9idXN0QU5HTEUodGFy
Z2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBl
LCBvZmZzZXQpOwogfQogCiBFeGNlcHRpb25Pcjx2b2lkPiBXZWJHTDJSZW5kZXJpbmdDb250ZXh0
Ojp0ZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4
b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdo
dCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBUZXhJbWFnZVNvdXJjZSYmIHNvdXJj
ZSkKQEAgLTEzMDMsNyArMTMwMyw3IEBAIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dGV4
U3ViSW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpCiAgICAgaWYg
KCF2YWxpZGF0ZVRleEZ1bmMoInRleFN1YkltYWdlM0QiLCBUZXhJbWFnZUZ1bmN0aW9uVHlwZTo6
VGV4U3ViSW1hZ2UsIFNvdXJjZVVucGFja0J1ZmZlciwgdGFyZ2V0LCBsZXZlbCwgMCwgd2lkdGgs
IGhlaWdodCwgZGVwdGgsIDAsIGZvcm1hdCwgdHlwZSwgeG9mZnNldCwgeW9mZnNldCwgem9mZnNl
dCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnRl
eFN1YkltYWdlM0RSb2J1c3RBTkdMRSh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB6
b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgZm9ybWF0LCB0eXBlLCAwLCByZWludGVycHJl
dF9jYXN0PHZvaWQqPihvZmZzZXQpKTsKKyAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS50
ZXhTdWJJbWFnZTNEUm9idXN0QU5HTEUodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwg
em9mZnNldCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGZvcm1hdCwgdHlwZSwgc3RhdGljX2Nhc3Q8
aW50cHRyX3Q+KG9mZnNldCkpOwogfQogCiB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnRl
eFN1YkltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZz
ZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTGludCB6b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdD
R0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51
bSB0eXBlLCBSZWZQdHI8QXJyYXlCdWZmZXJWaWV3PiYmIHNyY0RhdGEsIEdDR0x1aW50IHNyY09m
ZnNldCkKQEAgLTEzNzIsNyArMTM3Miw3IEBAIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6
Y29tcHJlc3NlZFRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsCiAgICAg
bV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuY29tcHJlc3NlZFRleEltYWdlMkRSb2J1c3RBTkdM
RSgKICAgICAgICAgdGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLAogICAgICAg
ICBoZWlnaHQsIGJvcmRlciwgaW1hZ2VTaXplLAotICAgICAgICAwLCByZWludGVycHJldF9jYXN0
PHVpbnQ4X3QqPihvZmZzZXQpKTsKKyAgICAgICAgc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KG9mZnNl
dCkpOwogfQogCiB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmNvbXByZXNzZWRUZXhJbWFn
ZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3Jt
YXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEFy
cmF5QnVmZmVyVmlldyYgc3JjRGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNM
ZW5ndGhPdmVycmlkZSkKQEAgLTEzOTMsNyArMTM5Myw3IEBAIHZvaWQgV2ViR0wyUmVuZGVyaW5n
Q29udGV4dDo6Y29tcHJlc3NlZFRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxl
dmVsCiAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuY29tcHJlc3NlZFRleEltYWdlMkRS
b2J1c3RBTkdMRSgKICAgICAgICAgdGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRo
LCBoZWlnaHQsCiAgICAgICAgIGJvcmRlciwgc2xpY2UtPmJ5dGVMZW5ndGgoKSwKLSAgICAgICAg
c2xpY2UtPmJ5dGVMZW5ndGgoKSwgc2xpY2UtPmJhc2VBZGRyZXNzKCkpOworICAgICAgICBtYWtl
R0NHTFNwYW4oc2xpY2UtPmJhc2VBZGRyZXNzKCksIHNsaWNlLT5ieXRlTGVuZ3RoKCkpKTsKIH0K
IAogdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojpjb21wcmVzc2VkVGV4SW1hZ2UzRChHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dM
c2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGludCBi
b3JkZXIsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xpbnQ2NCBvZmZzZXQpCkBAIC0xNDExLDcg
KzE0MTEsNyBAQCB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmNvbXByZXNzZWRUZXhJbWFn
ZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbAogICAgIG1fY29udGV4dC0+Z2V0RXh0
ZW5zaW9ucygpLmNvbXByZXNzZWRUZXhJbWFnZTNEUm9idXN0QU5HTEUoCiAgICAgICAgIHRhcmdl
dCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwKICAgICAgICAgaGVpZ2h0LCBkZXB0aCwg
Ym9yZGVyLCBpbWFnZVNpemUsCi0gICAgICAgIDAsIHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+
KG9mZnNldCkpOworICAgICAgICBzdGF0aWNfY2FzdDxpbnRwdHJfdD4ob2Zmc2V0KSk7CiB9CiAK
IHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Y29tcHJlc3NlZFRleEltYWdlM0QoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNp
emVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xpbnQgYm9y
ZGVyLCBBcnJheUJ1ZmZlclZpZXcmIHNyY0RhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVp
bnQgc3JjTGVuZ3RoT3ZlcnJpZGUpCkBAIC0xNDMyLDcgKzE0MzIsNyBAQCB2b2lkIFdlYkdMMlJl
bmRlcmluZ0NvbnRleHQ6OmNvbXByZXNzZWRUZXhJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NH
TGludCBsZXZlbAogICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmNvbXByZXNzZWRUZXhJ
bWFnZTNEUm9idXN0QU5HTEUoCiAgICAgICAgIHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0
LCB3aWR0aCwgaGVpZ2h0LAogICAgICAgICBkZXB0aCwgYm9yZGVyLCBzbGljZS0+Ynl0ZUxlbmd0
aCgpLAotICAgICAgICBzbGljZS0+Ynl0ZUxlbmd0aCgpLCBzbGljZS0+YmFzZUFkZHJlc3MoKSk7
CisgICAgICAgIG1ha2VHQ0dMU3BhbihzbGljZS0+YmFzZUFkZHJlc3MoKSwgc2xpY2UtPmJ5dGVM
ZW5ndGgoKSkpOwogfQogCiB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmNvbXByZXNzZWRU
ZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zm
c2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwg
R0NHTGVudW0gZm9ybWF0LCBBcnJheUJ1ZmZlclZpZXcmIHNyY0RhdGEpCkBAIC0xNDYzLDcgKzE0
NjMsNyBAQCB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmNvbXByZXNzZWRUZXhTdWJJbWFn
ZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZQogICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5z
aW9ucygpLmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEUm9idXN0QU5HTEUoCiAgICAgICAgIHRhcmdl
dCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsCiAgICAgICAgIHdpZHRoLCBoZWlnaHQsIGZvcm1h
dCwgaW1hZ2VTaXplLAotICAgICAgICAwLCByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihvZmZz
ZXQpKTsKKyAgICAgICAgb2Zmc2V0KTsKIH0KIAogdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0
Ojpjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWws
IEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xz
aXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgQXJyYXlCdWZmZXJWaWV3JiBzcmNEYXRhLCBH
Q0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aE92ZXJyaWRlKQpAQCAtMTQ4NCw3
ICsxNDg0LDcgQEAgdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojpjb21wcmVzc2VkVGV4U3Vi
SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGUKICAgICBtX2NvbnRleHQtPmdldEV4
dGVuc2lvbnMoKS5jb21wcmVzc2VkVGV4U3ViSW1hZ2UyRFJvYnVzdEFOR0xFKAogICAgICAgICB0
YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LAogICAgICAgICB3aWR0aCwgaGVpZ2h0LCBm
b3JtYXQsIHNsaWNlLT5ieXRlTGVuZ3RoKCksCi0gICAgICAgIHNsaWNlLT5ieXRlTGVuZ3RoKCks
IHNsaWNlLT5iYXNlQWRkcmVzcygpKTsKKyAgICAgICAgbWFrZUdDR0xTcGFuKHNsaWNlLT5iYXNl
QWRkcmVzcygpLCBzbGljZS0+Ynl0ZUxlbmd0aCgpKSk7CiB9CiAKIHZvaWQgV2ViR0wyUmVuZGVy
aW5nQ29udGV4dDo6Y29tcHJlc3NlZFRleFN1YkltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
aW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTGludCB6b2Zm
c2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwg
R0NHTGVudW0gZm9ybWF0LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMaW50NjQgb2Zmc2V0KQpA
QCAtMTUwMiw3ICsxNTAyLDcgQEAgdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojpjb21wcmVz
c2VkVGV4U3ViSW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGUKICAgICBtX2NvbnRl
eHQtPmdldEV4dGVuc2lvbnMoKS5jb21wcmVzc2VkVGV4U3ViSW1hZ2UzRFJvYnVzdEFOR0xFKAog
ICAgICAgICB0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB6b2Zmc2V0LAogICAgICAg
ICB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgZm9ybWF0LCBpbWFnZVNpemUsCi0gICAgICAgIDAsIHJl
aW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KG9mZnNldCkpOworICAgICAgICBzdGF0aWNfY2FzdDxp
bnRwdHJfdD4ob2Zmc2V0KSk7CiB9CiAKIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Y29t
cHJlc3NlZFRleFN1YkltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dM
aW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTGludCB6b2Zmc2V0LCBHQ0dMc2l6ZWkg
d2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGVudW0gZm9ybWF0
LCBBcnJheUJ1ZmZlclZpZXcmIHNyY0RhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQg
c3JjTGVuZ3RoT3ZlcnJpZGUpCkBAIC0xNTIzLDcgKzE1MjMsNyBAQCB2b2lkIFdlYkdMMlJlbmRl
cmluZ0NvbnRleHQ6OmNvbXByZXNzZWRUZXhTdWJJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NH
TGludCBsZQogICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmNvbXByZXNzZWRUZXhTdWJJ
bWFnZTNEUm9idXN0QU5HTEUoCiAgICAgICAgIHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZz
ZXQsIHpvZmZzZXQsCiAgICAgICAgIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBmb3JtYXQsIHNsaWNl
LT5ieXRlTGVuZ3RoKCksCi0gICAgICAgIHNsaWNlLT5ieXRlTGVuZ3RoKCksIHNsaWNlLT5iYXNl
QWRkcmVzcygpKTsKKyAgICAgICAgbWFrZUdDR0xTcGFuKHNsaWNlLT5iYXNlQWRkcmVzcygpLCBz
bGljZS0+Ynl0ZUxlbmd0aCgpKSk7CiB9CiAKIEdDR0xpbnQgV2ViR0wyUmVuZGVyaW5nQ29udGV4
dDo6Z2V0RnJhZ0RhdGFMb2NhdGlvbihXZWJHTFByb2dyYW0mIHByb2dyYW0sIGNvbnN0IFN0cmlu
ZyYgbmFtZSkKQEAgLTE1NjMsNzIgKzE1NjMsMTAyIEBAIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29u
dGV4dDo6dW5pZm9ybTR1aShXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEdDR0x1aW50
CiAKIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTF1aXYoV2ViR0xVbmlmb3Jt
TG9jYXRpb24qIGxvY2F0aW9uLCBVaW50MzJMaXN0JiYgdmFsdWUsIEdDR0x1aW50IHNyY09mZnNl
dCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQogewotICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5n
KCkgfHwgIXZhbGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMoInVuaWZvcm0xdWl2IiwgbG9jYXRpb24s
IHZhbHVlLCAxLCBzcmNPZmZzZXQsIHNyY0xlbmd0aCkpCisgICAgaWYgKGlzQ29udGV4dExvc3RP
clBlbmRpbmcoKSkKKyAgICAgICAgcmV0dXJuOworICAgIGF1dG8gZGF0YSA9IHZhbGlkYXRlVW5p
Zm9ybVBhcmFtZXRlcnMoInVuaWZvcm0xdWl2IiwgbG9jYXRpb24sIHZhbHVlLCAxLCBzcmNPZmZz
ZXQsIHNyY0xlbmd0aCk7CisgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm47Ci0gICAgbV9j
b250ZXh0LT51bmlmb3JtMXVpdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgdmFsdWUuZGF0YSgpLCBz
cmNPZmZzZXQsIHNyY0xlbmd0aCA/IHNyY0xlbmd0aCA6ICh2YWx1ZS5sZW5ndGgoKSAtIHNyY09m
ZnNldCkpOworICAgIG1fY29udGV4dC0+dW5pZm9ybTF1aXYobG9jYXRpb24tPmxvY2F0aW9uKCks
IGRhdGEudmFsdWUoKSk7CiB9CiAKIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9y
bTJ1aXYoV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBVaW50MzJMaXN0JiYgdmFsdWUs
IEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQogewotICAgIGlmIChpc0Nv
bnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMoInVuaWZv
cm0ydWl2IiwgbG9jYXRpb24sIHZhbHVlLCAyLCBzcmNPZmZzZXQsIHNyY0xlbmd0aCkpCisgICAg
aWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSkKKyAgICAgICAgcmV0dXJuOworICAgIGF1dG8g
ZGF0YSA9IHZhbGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMoInVuaWZvcm0ydWl2IiwgbG9jYXRpb24s
IHZhbHVlLCAyLCBzcmNPZmZzZXQsIHNyY0xlbmd0aCk7CisgICAgaWYgKCFkYXRhKQogICAgICAg
ICByZXR1cm47Ci0gICAgbV9jb250ZXh0LT51bmlmb3JtMnVpdihsb2NhdGlvbi0+bG9jYXRpb24o
KSwgdmFsdWUuZGF0YSgpLCBzcmNPZmZzZXQsIChzcmNMZW5ndGggPyBzcmNMZW5ndGggOiB2YWx1
ZS5sZW5ndGgoKSAtIHNyY09mZnNldCkgLyAyKTsKKyAgICBtX2NvbnRleHQtPnVuaWZvcm0ydWl2
KGxvY2F0aW9uLT5sb2NhdGlvbigpLCBkYXRhLnZhbHVlKCkpOwogfQogCiB2b2lkIFdlYkdMMlJl
bmRlcmluZ0NvbnRleHQ6OnVuaWZvcm0zdWl2KFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlv
biwgVWludDMyTGlzdCYmIHZhbHVlLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xl
bmd0aCkKIHsKLSAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVVu
aWZvcm1QYXJhbWV0ZXJzKCJ1bmlmb3JtM3VpdiIsIGxvY2F0aW9uLCB2YWx1ZSwgMywgc3JjT2Zm
c2V0LCBzcmNMZW5ndGgpKQorICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCisgICAg
ICAgIHJldHVybjsKKyAgICBhdXRvIGRhdGEgPSB2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKCJ1
bmlmb3JtM3VpdiIsIGxvY2F0aW9uLCB2YWx1ZSwgMywgc3JjT2Zmc2V0LCBzcmNMZW5ndGgpOwor
ICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuOwotICAgIG1fY29udGV4dC0+dW5pZm9ybTN1
aXYobG9jYXRpb24tPmxvY2F0aW9uKCksIHZhbHVlLmRhdGEoKSwgc3JjT2Zmc2V0LCAoc3JjTGVu
Z3RoID8gc3JjTGVuZ3RoIDogdmFsdWUubGVuZ3RoKCkgLSBzcmNPZmZzZXQpIC8gMyk7CisgICAg
bV9jb250ZXh0LT51bmlmb3JtM3Vpdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgZGF0YS52YWx1ZSgp
KTsKIH0KIAogdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtNHVpdihXZWJHTFVu
aWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIFVpbnQzMkxpc3QmJiB2YWx1ZSwgR0NHTHVpbnQgc3Jj
T2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCiB7Ci0gICAgaWYgKGlzQ29udGV4dExvc3RPclBl
bmRpbmcoKSB8fCAhdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycygidW5pZm9ybTR1aXYiLCBsb2Nh
dGlvbiwgdmFsdWUsIDQsIHNyY09mZnNldCwgc3JjTGVuZ3RoKSkKKyAgICBpZiAoaXNDb250ZXh0
TG9zdE9yUGVuZGluZygpKQorICAgICAgICByZXR1cm47CisgICAgYXV0byBkYXRhID0gdmFsaWRh
dGVVbmlmb3JtUGFyYW1ldGVycygidW5pZm9ybTR1aXYiLCBsb2NhdGlvbiwgdmFsdWUsIDQsIHNy
Y09mZnNldCwgc3JjTGVuZ3RoKTsKKyAgICBpZiAoIWRhdGEpCiAgICAgICAgIHJldHVybjsKLSAg
ICBtX2NvbnRleHQtPnVuaWZvcm00dWl2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCB2YWx1ZS5kYXRh
KCksIHNyY09mZnNldCwgKHNyY0xlbmd0aCA/IHNyY0xlbmd0aCA6IHZhbHVlLmxlbmd0aCgpIC0g
c3JjT2Zmc2V0KSAvIDQpOworICAgIG1fY29udGV4dC0+dW5pZm9ybTR1aXYobG9jYXRpb24tPmxv
Y2F0aW9uKCksIGRhdGEudmFsdWUoKSk7CiB9CiAKIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4
dDo6dW5pZm9ybU1hdHJpeDJ4M2Z2KFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgR0NH
TGJvb2xlYW4gdHJhbnNwb3NlLCBGbG9hdDMyTGlzdCYmIHYsIEdDR0x1aW50IHNyY09mZnNldCwg
R0NHTHVpbnQgc3JjTGVuZ3RoKQogewotICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkg
fHwgIXZhbGlkYXRlVW5pZm9ybU1hdHJpeFBhcmFtZXRlcnMoInVuaWZvcm1NYXRyaXgyeDNmdiIs
IGxvY2F0aW9uLCB0cmFuc3Bvc2UsIHYsIDYsIHNyY09mZnNldCwgc3JjTGVuZ3RoKSkKKyAgICBp
ZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpKQorICAgICAgICByZXR1cm47CisgICAgYXV0byBk
YXRhID0gdmFsaWRhdGVVbmlmb3JtTWF0cml4UGFyYW1ldGVycygidW5pZm9ybU1hdHJpeDJ4M2Z2
IiwgbG9jYXRpb24sIHRyYW5zcG9zZSwgdiwgNiwgc3JjT2Zmc2V0LCBzcmNMZW5ndGgpOworICAg
IGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuOwotICAgIG1fY29udGV4dC0+dW5pZm9ybU1hdHJp
eDJ4M2Z2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCB0cmFuc3Bvc2UsIHYuZGF0YSgpLCBzcmNPZmZz
ZXQsIChzcmNMZW5ndGggPyBzcmNMZW5ndGggOiB2Lmxlbmd0aCgpIC0gc3JjT2Zmc2V0KSAvIDYp
OworICAgIG1fY29udGV4dC0+dW5pZm9ybU1hdHJpeDJ4M2Z2KGxvY2F0aW9uLT5sb2NhdGlvbigp
LCB0cmFuc3Bvc2UsIGRhdGEudmFsdWUoKSk7CiB9CiAKIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29u
dGV4dDo6dW5pZm9ybU1hdHJpeDN4MmZ2KFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwg
R0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBGbG9hdDMyTGlzdCYmIHYsIEdDR0x1aW50IHNyY09mZnNl
dCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQogewotICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5n
KCkgfHwgIXZhbGlkYXRlVW5pZm9ybU1hdHJpeFBhcmFtZXRlcnMoInVuaWZvcm1NYXRyaXgzeDJm
diIsIGxvY2F0aW9uLCB0cmFuc3Bvc2UsIHYsIDYsIHNyY09mZnNldCwgc3JjTGVuZ3RoKSkKKyAg
ICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpKQogICAgICAgICByZXR1cm47Ci0gICAgbV9j
b250ZXh0LT51bmlmb3JtTWF0cml4M3gyZnYobG9jYXRpb24tPmxvY2F0aW9uKCksIHRyYW5zcG9z
ZSwgdi5kYXRhKCksIHNyY09mZnNldCwgKHNyY0xlbmd0aCA/IHNyY0xlbmd0aCA6IHYubGVuZ3Ro
KCkgLSBzcmNPZmZzZXQpIC8gNik7CisgICAgYXV0byBkYXRhID0gdmFsaWRhdGVVbmlmb3JtTWF0
cml4UGFyYW1ldGVycygidW5pZm9ybU1hdHJpeDN4MmZ2IiwgbG9jYXRpb24sIHRyYW5zcG9zZSwg
diwgNiwgc3JjT2Zmc2V0LCBzcmNMZW5ndGgpOworICAgIGlmICghZGF0YSkKKyAgICAgICAgcmV0
dXJuOworICAgIG1fY29udGV4dC0+dW5pZm9ybU1hdHJpeDN4MmZ2KGxvY2F0aW9uLT5sb2NhdGlv
bigpLCB0cmFuc3Bvc2UsIGRhdGEudmFsdWUoKSk7CiB9CiAKIHZvaWQgV2ViR0wyUmVuZGVyaW5n
Q29udGV4dDo6dW5pZm9ybU1hdHJpeDJ4NGZ2KFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlv
biwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBGbG9hdDMyTGlzdCYmIHYsIEdDR0x1aW50IHNyY09m
ZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQogewotICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5k
aW5nKCkgfHwgIXZhbGlkYXRlVW5pZm9ybU1hdHJpeFBhcmFtZXRlcnMoInVuaWZvcm1NYXRyaXgy
eDRmdiIsIGxvY2F0aW9uLCB0cmFuc3Bvc2UsIHYsIDgsIHNyY09mZnNldCwgc3JjTGVuZ3RoKSkK
KyAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpKQogICAgICAgICByZXR1cm47Ci0gICAg
bV9jb250ZXh0LT51bmlmb3JtTWF0cml4Mng0ZnYobG9jYXRpb24tPmxvY2F0aW9uKCksIHRyYW5z
cG9zZSwgdi5kYXRhKCksIHNyY09mZnNldCwgKHNyY0xlbmd0aCA/IHNyY0xlbmd0aCA6IHYubGVu
Z3RoKCkgLSBzcmNPZmZzZXQpIC8gOCk7CisgICAgYXV0byBkYXRhID0gdmFsaWRhdGVVbmlmb3Jt
TWF0cml4UGFyYW1ldGVycygidW5pZm9ybU1hdHJpeDJ4NGZ2IiwgbG9jYXRpb24sIHRyYW5zcG9z
ZSwgdiwgOCwgc3JjT2Zmc2V0LCBzcmNMZW5ndGgpOworICAgIGlmICghZGF0YSkKKyAgICAgICAg
cmV0dXJuOworICAgIG1fY29udGV4dC0+dW5pZm9ybU1hdHJpeDJ4NGZ2KGxvY2F0aW9uLT5sb2Nh
dGlvbigpLCB0cmFuc3Bvc2UsIGRhdGEudmFsdWUoKSk7CiB9CiAKIHZvaWQgV2ViR0wyUmVuZGVy
aW5nQ29udGV4dDo6dW5pZm9ybU1hdHJpeDR4MmZ2KFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2Nh
dGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBGbG9hdDMyTGlzdCYmIHYsIEdDR0x1aW50IHNy
Y09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQogewotICAgIGlmIChpc0NvbnRleHRMb3N0T3JQ
ZW5kaW5nKCkgfHwgIXZhbGlkYXRlVW5pZm9ybU1hdHJpeFBhcmFtZXRlcnMoInVuaWZvcm1NYXRy
aXg0eDJmdiIsIGxvY2F0aW9uLCB0cmFuc3Bvc2UsIHYsIDgsIHNyY09mZnNldCwgc3JjTGVuZ3Ro
KSkKKyAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpKQogICAgICAgICByZXR1cm47Ci0g
ICAgbV9jb250ZXh0LT51bmlmb3JtTWF0cml4NHgyZnYobG9jYXRpb24tPmxvY2F0aW9uKCksIHRy
YW5zcG9zZSwgdi5kYXRhKCksIHNyY09mZnNldCwgKHNyY0xlbmd0aCA/IHNyY0xlbmd0aCA6IHYu
bGVuZ3RoKCkgLSBzcmNPZmZzZXQpIC8gOCk7CisgICAgYXV0byBkYXRhID0gdmFsaWRhdGVVbmlm
b3JtTWF0cml4UGFyYW1ldGVycygidW5pZm9ybU1hdHJpeDR4MmZ2IiwgbG9jYXRpb24sIHRyYW5z
cG9zZSwgdiwgOCwgc3JjT2Zmc2V0LCBzcmNMZW5ndGgpOworICAgIGlmICghZGF0YSkKKyAgICAg
ICAgcmV0dXJuOworICAgIG1fY29udGV4dC0+dW5pZm9ybU1hdHJpeDR4MmZ2KGxvY2F0aW9uLT5s
b2NhdGlvbigpLCB0cmFuc3Bvc2UsIGRhdGEudmFsdWUoKSk7CiB9CiAKIHZvaWQgV2ViR0wyUmVu
ZGVyaW5nQ29udGV4dDo6dW5pZm9ybU1hdHJpeDN4NGZ2KFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBs
b2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBGbG9hdDMyTGlzdCYmIHYsIEdDR0x1aW50
IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQogewotICAgIGlmIChpc0NvbnRleHRMb3N0
T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlVW5pZm9ybU1hdHJpeFBhcmFtZXRlcnMoInVuaWZvcm1N
YXRyaXgzeDRmdiIsIGxvY2F0aW9uLCB0cmFuc3Bvc2UsIHYsIDEyLCBzcmNPZmZzZXQsIHNyY0xl
bmd0aCkpCisgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSkKICAgICAgICAgcmV0dXJu
OwotICAgIG1fY29udGV4dC0+dW5pZm9ybU1hdHJpeDN4NGZ2KGxvY2F0aW9uLT5sb2NhdGlvbigp
LCB0cmFuc3Bvc2UsIHYuZGF0YSgpLCBzcmNPZmZzZXQsIChzcmNMZW5ndGggPyBzcmNMZW5ndGgg
OiB2Lmxlbmd0aCgpIC0gc3JjT2Zmc2V0KSAvIDEyKTsKKyAgICBhdXRvIGRhdGEgPSB2YWxpZGF0
ZVVuaWZvcm1NYXRyaXhQYXJhbWV0ZXJzKCJ1bmlmb3JtTWF0cml4M3g0ZnYiLCBsb2NhdGlvbiwg
dHJhbnNwb3NlLCB2LCAxMiwgc3JjT2Zmc2V0LCBzcmNMZW5ndGgpOworICAgIGlmICghZGF0YSkK
KyAgICAgICAgcmV0dXJuOworICAgIG1fY29udGV4dC0+dW5pZm9ybU1hdHJpeDN4NGZ2KGxvY2F0
aW9uLT5sb2NhdGlvbigpLCB0cmFuc3Bvc2UsIGRhdGEudmFsdWUoKSk7CiB9CiAKIHZvaWQgV2Vi
R0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybU1hdHJpeDR4M2Z2KFdlYkdMVW5pZm9ybUxvY2F0
aW9uKiBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBGbG9hdDMyTGlzdCYmIHYsIEdD
R0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQogewotICAgIGlmIChpc0NvbnRl
eHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlVW5pZm9ybU1hdHJpeFBhcmFtZXRlcnMoInVu
aWZvcm1NYXRyaXg0eDNmdiIsIGxvY2F0aW9uLCB0cmFuc3Bvc2UsIHYsIDEyLCBzcmNPZmZzZXQs
IHNyY0xlbmd0aCkpCisgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSkKKyAgICAgICAg
cmV0dXJuOworICAgIGF1dG8gZGF0YSA9IHZhbGlkYXRlVW5pZm9ybU1hdHJpeFBhcmFtZXRlcnMo
InVuaWZvcm1NYXRyaXg0eDNmdiIsIGxvY2F0aW9uLCB0cmFuc3Bvc2UsIHYsIDEyLCBzcmNPZmZz
ZXQsIHNyY0xlbmd0aCk7CisgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm47Ci0gICAgbV9j
b250ZXh0LT51bmlmb3JtTWF0cml4NHgzZnYobG9jYXRpb24tPmxvY2F0aW9uKCksIHRyYW5zcG9z
ZSwgdi5kYXRhKCksIHNyY09mZnNldCwgKHNyY0xlbmd0aCA/IHNyY0xlbmd0aCA6IHYubGVuZ3Ro
KCkgLSBzcmNPZmZzZXQpIC8gMTIpOworICAgIG1fY29udGV4dC0+dW5pZm9ybU1hdHJpeDR4M2Z2
KGxvY2F0aW9uLT5sb2NhdGlvbigpLCB0cmFuc3Bvc2UsIGRhdGEudmFsdWUoKSk7CiB9CiAKIHZv
aWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dmVydGV4QXR0cmliSTRpKEdDR0x1aW50IGluZGV4
LCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTGludCB6LCBHQ0dMaW50IHcpCkBAIC0xNjY0LDcg
KzE2OTQsNyBAQCB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnZlcnRleEF0dHJpYkk0aXYo
R0NHTHVpbnQgaW5kZXgsIEludDMyTGlzdCYmIGxpc3QpCiAgICAgICAgIHN5bnRoZXNpemVHTEVy
cm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX1ZBTFVFLCAidmVydGV4QXR0cmliSTRpdiIs
ICJpbmRleCBvdXQgb2YgcmFuZ2UiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBtX2Nv
bnRleHQtPnZlcnRleEF0dHJpYkk0aXYoaW5kZXgsIGRhdGEpOworICAgIG1fY29udGV4dC0+dmVy
dGV4QXR0cmliSTRpdihpbmRleCwgbWFrZUdDR0xTcGFuPDQ+KGRhdGEpKTsKICAgICBtX3ZlcnRl
eEF0dHJpYlZhbHVlW2luZGV4XS50eXBlID0gR3JhcGhpY3NDb250ZXh0R0w6OklOVDsKICAgICBt
ZW1jcHkobV92ZXJ0ZXhBdHRyaWJWYWx1ZVtpbmRleF0uaVZhbHVlLCBkYXRhLCBzaXplb2YobV92
ZXJ0ZXhBdHRyaWJWYWx1ZVtpbmRleF0uaVZhbHVlKSk7CiB9CkBAIC0xNjkyLDcgKzE3MjIsNyBA
QCB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnZlcnRleEF0dHJpYkk0dWl2KEdDR0x1aW50
IGluZGV4LCBVaW50MzJMaXN0JiYgbGlzdAogICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFw
aGljc0NvbnRleHRHTDo6SU5WQUxJRF9WQUxVRSwgInZlcnRleEF0dHJpYkk0dWl2IiwgIm5vIGFy
cmF5Iik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgCisKICAgICBpbnQgc2l6ZSA9IGxp
c3QubGVuZ3RoKCk7CiAgICAgaWYgKHNpemUgPCA0KSB7CiAgICAgICAgIHN5bnRoZXNpemVHTEVy
cm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX1ZBTFVFLCAidmVydGV4QXR0cmliSTR1aXYi
LCAiYXJyYXkgdG9vIHNtYWxsIik7CkBAIC0xNzAyLDcgKzE3MzIsNyBAQCB2b2lkIFdlYkdMMlJl
bmRlcmluZ0NvbnRleHQ6OnZlcnRleEF0dHJpYkk0dWl2KEdDR0x1aW50IGluZGV4LCBVaW50MzJM
aXN0JiYgbGlzdAogICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6
SU5WQUxJRF9WQUxVRSwgInZlcnRleEF0dHJpYkk0dWl2IiwgImluZGV4IG91dCBvZiByYW5nZSIp
OwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIG1fY29udGV4dC0+dmVydGV4QXR0cmliSTR1
aXYoaW5kZXgsIGRhdGEpOworICAgIG1fY29udGV4dC0+dmVydGV4QXR0cmliSTR1aXYoaW5kZXgs
IG1ha2VHQ0dMU3Bhbjw0PihkYXRhKSk7CiAgICAgbV92ZXJ0ZXhBdHRyaWJWYWx1ZVtpbmRleF0u
dHlwZSA9IEdyYXBoaWNzQ29udGV4dEdMOjpVTlNJR05FRF9JTlQ7CiAgICAgbWVtY3B5KG1fdmVy
dGV4QXR0cmliVmFsdWVbaW5kZXhdLnVpVmFsdWUsIGRhdGEsIHNpemVvZihtX3ZlcnRleEF0dHJp
YlZhbHVlW2luZGV4XS51aVZhbHVlKSk7CiB9CkBAIC0xNzYzLDggKzE3OTMsOCBAQCB2b2lkIFdl
YkdMMlJlbmRlcmluZ0NvbnRleHQ6OmRyYXdCdWZmZXJzKGNvbnN0IFZlY3RvcjxHQ0dMZW51bT4m
IGJ1ZmZlcnMpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgLy8gQmVj
YXVzZSB0aGUgYmFja2J1ZmZlciBpcyBzaW11bGF0ZWQgb24gYWxsIGN1cnJlbnQgV2ViS2l0IHBv
cnRzLCB3ZSBuZWVkIHRvIGNoYW5nZSBCQUNLIHRvIENPTE9SX0FUVEFDSE1FTlQwLgotICAgICAg
ICBHQ0dMZW51bSB2YWx1ZSA9IChidWZzWzBdID09IEdyYXBoaWNzQ29udGV4dEdMOjpCQUNLKSA/
IEdyYXBoaWNzQ29udGV4dEdMOjpDT0xPUl9BVFRBQ0hNRU5UMCA6IEdyYXBoaWNzQ29udGV4dEdM
OjpOT05FOwotICAgICAgICBtX2NvbnRleHQtPmRyYXdCdWZmZXJzKDEsICZ2YWx1ZSk7CisgICAg
ICAgIEdDR0xlbnVtIHZhbHVlWzFdIHsgKGJ1ZnNbMF0gPT0gR3JhcGhpY3NDb250ZXh0R0w6OkJB
Q0spID8gR3JhcGhpY3NDb250ZXh0R0w6OkNPTE9SX0FUVEFDSE1FTlQwIDogR3JhcGhpY3NDb250
ZXh0R0w6Ok5PTkUgfTsKKyAgICAgICAgbV9jb250ZXh0LT5kcmF3QnVmZmVycyh2YWx1ZSk7CiAg
ICAgICAgIHNldEJhY2tEcmF3QnVmZmVyKGJ1ZnNbMF0pOwogICAgIH0gZWxzZSB7CiAgICAgICAg
IGlmIChuID4gZ2V0TWF4RHJhd0J1ZmZlcnMoKSkgewpAQCAtMTc4MywyOCArMTgxMywzNiBAQCB2
b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmRyYXdCdWZmZXJzKGNvbnN0IFZlY3RvcjxHQ0dM
ZW51bT4mIGJ1ZmZlcnMpCiAKIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Y2xlYXJCdWZm
ZXJpdihHQ0dMZW51bSBidWZmZXIsIEdDR0xpbnQgZHJhd2J1ZmZlciwgSW50MzJMaXN0JiYgdmFs
dWVzLCBHQ0dMdWludCBzcmNPZmZzZXQpCiB7Ci0gICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRp
bmcoKSB8fCAhdmFsaWRhdGVDbGVhckJ1ZmZlcigiY2xlYXJCdWZmZXJpdiIsIGJ1ZmZlciwgdmFs
dWVzLmxlbmd0aCgpLCBzcmNPZmZzZXQpKQorICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5n
KCkpCisgICAgICAgIHJldHVybjsKKyAgICBhdXRvIGRhdGEgPSB2YWxpZGF0ZUNsZWFyQnVmZmVy
KCJjbGVhckJ1ZmZlcml2IiwgYnVmZmVyLCB2YWx1ZXMsIHNyY09mZnNldCk7CisgICAgaWYgKCFk
YXRhKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2NvbnRleHQtPmNsZWFyQnVmZmVyaXYoYnVm
ZmVyLCBkcmF3YnVmZmVyLCB2YWx1ZXMuZGF0YSgpLCBzcmNPZmZzZXQpOworICAgIG1fY29udGV4
dC0+Y2xlYXJCdWZmZXJpdihidWZmZXIsIGRyYXdidWZmZXIsIGRhdGEudmFsdWUoKSk7CiAgICAg
dXBkYXRlQnVmZmVyc1RvQXV0b0NsZWFyKENsZWFyQnVmZmVyQ2FsbGVyOjpDbGVhckJ1ZmZlcml2
LCBidWZmZXIsIGRyYXdidWZmZXIpOwogfQogCiB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6
OmNsZWFyQnVmZmVydWl2KEdDR0xlbnVtIGJ1ZmZlciwgR0NHTGludCBkcmF3YnVmZmVyLCBVaW50
MzJMaXN0JiYgdmFsdWVzLCBHQ0dMdWludCBzcmNPZmZzZXQpCiB7Ci0gICAgaWYgKGlzQ29udGV4
dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVDbGVhckJ1ZmZlcigiY2xlYXJCdWZmZXJ1aXYi
LCBidWZmZXIsIHZhbHVlcy5sZW5ndGgoKSwgc3JjT2Zmc2V0KSkKKyAgICBpZiAoaXNDb250ZXh0
TG9zdE9yUGVuZGluZygpKQogICAgICAgICByZXR1cm47Ci0KLSAgICBtX2NvbnRleHQtPmNsZWFy
QnVmZmVydWl2KGJ1ZmZlciwgZHJhd2J1ZmZlciwgdmFsdWVzLmRhdGEoKSwgc3JjT2Zmc2V0KTsK
KyAgICBhdXRvIGRhdGEgPSB2YWxpZGF0ZUNsZWFyQnVmZmVyKCJjbGVhckJ1ZmZlcnVpdiIsIGJ1
ZmZlciwgdmFsdWVzLCBzcmNPZmZzZXQpOworICAgIGlmICghZGF0YSkKKyAgICAgICAgcmV0dXJu
OworICAgIG1fY29udGV4dC0+Y2xlYXJCdWZmZXJ1aXYoYnVmZmVyLCBkcmF3YnVmZmVyLCBkYXRh
LnZhbHVlKCkpOwogICAgIHVwZGF0ZUJ1ZmZlcnNUb0F1dG9DbGVhcihDbGVhckJ1ZmZlckNhbGxl
cjo6Q2xlYXJCdWZmZXJ1aXYsIGJ1ZmZlciwgZHJhd2J1ZmZlcik7CiB9CiAKIHZvaWQgV2ViR0wy
UmVuZGVyaW5nQ29udGV4dDo6Y2xlYXJCdWZmZXJmdihHQ0dMZW51bSBidWZmZXIsIEdDR0xpbnQg
ZHJhd2J1ZmZlciwgRmxvYXQzMkxpc3QmJiB2YWx1ZXMsIEdDR0x1aW50IHNyY09mZnNldCkKIHsK
LSAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZUNsZWFyQnVmZmVy
KCJjbGVhckJ1ZmZlcmZ2IiwgYnVmZmVyLCB2YWx1ZXMubGVuZ3RoKCksIHNyY09mZnNldCkpCisg
ICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSkKKyAgICAgICAgcmV0dXJuOworICAgIGF1
dG8gZGF0YSA9IHZhbGlkYXRlQ2xlYXJCdWZmZXIoImNsZWFyQnVmZmVyZnYiLCBidWZmZXIsIHZh
bHVlcywgc3JjT2Zmc2V0KTsKKyAgICBpZiAoIWRhdGEpCiAgICAgICAgIHJldHVybjsKIAotICAg
IG1fY29udGV4dC0+Y2xlYXJCdWZmZXJmdihidWZmZXIsIGRyYXdidWZmZXIsIHZhbHVlcy5kYXRh
KCksIHNyY09mZnNldCk7CisgICAgbV9jb250ZXh0LT5jbGVhckJ1ZmZlcmZ2KGJ1ZmZlciwgZHJh
d2J1ZmZlciwgZGF0YS52YWx1ZSgpKTsKICAgICAvLyBjbGVhckJ1ZmZlcml2IGFuZCBjbGVhckJ1
ZmZlcnVpdiB3aWxsIGN1cnJlbnRseSBnZW5lcmF0ZSBhbiBlcnJvcgogICAgIC8vIGlmIHRoZXkn
cmUgY2FsbGVkIGFnYWluc3QgdGhlIGRlZmF1bHQgYmFjayBidWZmZXIuIElmIHN1cHBvcnQgZm9y
CiAgICAgLy8gZXh0ZW5kZWQgY2FudmFzIGNvbG9yIHNwYWNlcyBpcyBhZGRlZCwgdGhpcyBjYWxs
IG1pZ2h0IG5lZWQgdG8gYmUKQEAgLTE5OTYsNyArMjAzNCw3IEBAIHZvaWQgV2ViR0wyUmVuZGVy
aW5nQ29udGV4dDo6YmluZFNhbXBsZXIoR0NHTHVpbnQgdW5pdCwgV2ViR0xTYW1wbGVyKiBzYW1w
bGVyKQogCiAgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSkKICAgICAgICAgcmV0dXJu
OwotICAgIAorCiAgICAgaWYgKHVuaXQgPj0gbV9ib3VuZFNhbXBsZXJzLnNpemUoKSkgewogICAg
ICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9WQUxVRSwg
ImJpbmRTYW1wbGVyIiwgImludmFsaWQgdGV4dHVyZSB1bml0Iik7CiAgICAgICAgIHJldHVybjsK
QEAgLTIxMDAsNyArMjEzOCw3IEBAIEdDR0xlbnVtIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmNs
aWVudFdhaXRTeW5jKFdlYkdMU3luYyYgc3luYywgR0NHTGJpdGZpZWxkIGZsCiAgICAgICAgIHN5
bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX09QRVJBVElPTiwgImNs
aWVudFdhaXRTeW5jIiwgInRpbWVvdXQgPiBNQVhfQ0xJRU5UX1dBSVRfVElNRU9VVF9XRUJHTCIp
OwogICAgICAgICByZXR1cm4gR3JhcGhpY3NDb250ZXh0R0w6OldBSVRfRkFJTEVEX1dFQkdMOwog
ICAgIH0KLSAgICAKKwogICAgIGlmIChmbGFncyAmJiBmbGFncyAhPSBHcmFwaGljc0NvbnRleHRH
TDo6U1lOQ19GTFVTSF9DT01NQU5EU19CSVQpIHsKICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3Io
R3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfVkFMVUUsICJjbGllbnRXYWl0U3luYyIsICJpbnZh
bGlkIGZsYWdzIik7CiAgICAgICAgIHJldHVybiBHcmFwaGljc0NvbnRleHRHTDo6V0FJVF9GQUlM
RURfV0VCR0w7CkBAIC0yMTYxLDkgKzIxOTksOSBAQCB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRl
eHQ6OmRlbGV0ZVRyYW5zZm9ybUZlZWRiYWNrKFdlYkdMVHJhbnNmb3JtRmVlZGJhY2sqIGZlZQog
CiAgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhZmVlZGJhY2tPYmplY3QgfHwg
ZmVlZGJhY2tPYmplY3QtPmlzRGVsZXRlZCgpIHx8ICF2YWxpZGF0ZVdlYkdMT2JqZWN0KCJkZWxl
dGVUcmFuc2Zvcm1GZWVkYmFjayIsIGZlZWRiYWNrT2JqZWN0KSkKICAgICAgICAgcmV0dXJuOwot
ICAgIAorCiAgICAgQVNTRVJUKGZlZWRiYWNrT2JqZWN0ICE9IG1fZGVmYXVsdFRyYW5zZm9ybUZl
ZWRiYWNrKTsKLSAgICAKKwogICAgIGlmIChmZWVkYmFja09iamVjdC0+aXNBY3RpdmUoKSkgewog
ICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9PUEVS
QVRJT04sICJkZWxldGVUcmFuc2Zvcm1GZWVkYmFjayIsICJhdHRlbXB0IHRvIGRlbGV0ZSBhbiBh
Y3RpdmUgdHJhbnNmb3JtIGZlZWRiYWNrIG9iamVjdCIpOwogICAgICAgICByZXR1cm47CkBAIC0y
MjMwLDcgKzIyNjgsNyBAQCB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmJlZ2luVHJhbnNm
b3JtRmVlZGJhY2soR0NHTGVudW0gcHJpbWl0aXZlTW9kZSkKIHsKICAgICBpZiAoaXNDb250ZXh0
TG9zdE9yUGVuZGluZygpKQogICAgICAgICByZXR1cm47Ci0gICAgCisKICAgICBpZiAoIVZhbGlk
YXRlVHJhbnNmb3JtRmVlZGJhY2tQcmltaXRpdmVNb2RlKHByaW1pdGl2ZU1vZGUpKSB7CiAgICAg
ICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX0VOVU0sICJi
ZWdpblRyYW5zZm9ybUZlZWRiYWNrIiwgImludmFsaWQgdHJhbnNmb3JtIGZlZWRiYWNrIHByaW1p
dGl2ZSBtb2RlIik7CiAgICAgICAgIHJldHVybjsKQEAgLTIyNzAsNyArMjMwOCw3IEBAIHZvaWQg
V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6ZW5kVHJhbnNmb3JtRmVlZGJhY2soKQogICAgICAgICBz
eW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9PUEVSQVRJT04sICJl
bmRUcmFuc2Zvcm1GZWVkYmFjayIsICJ0cmFuc2Zvcm0gZmVlZGJhY2sgaXMgbm90IGFjdGl2ZSIp
OwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIAorCiAgICAgbV9jb250ZXh0LT5lbmRUcmFu
c2Zvcm1GZWVkYmFjaygpOwogCiAgICAgbV9ib3VuZFRyYW5zZm9ybUZlZWRiYWNrLT5zZXRQYXVz
ZWQoZmFsc2UpOwpAQCAtMjI4MSw3ICsyMzE5LDcgQEAgdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250
ZXh0Ojp0cmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzKFdlYkdMUHJvZ3JhbSYgcHJvZ3JhbSwgY28K
IHsKICAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVdlYkdMUHJv
Z3JhbU9yU2hhZGVyKCJ0cmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzIiwgJnByb2dyYW0pKQogICAg
ICAgICByZXR1cm47Ci0gICAgCisKICAgICBzd2l0Y2ggKGJ1ZmZlck1vZGUpIHsKICAgICBjYXNl
IEdyYXBoaWNzQ29udGV4dEdMOjpTRVBBUkFURV9BVFRSSUJTOgogICAgICAgICBpZiAodmFyeWlu
Z3Muc2l6ZSgpID4gbV9tYXhUcmFuc2Zvcm1GZWVkYmFja1NlcGFyYXRlQXR0cmlicykgewpAQCAt
MjQ2OCw3ICsyNTA2LDcgQEAgV2ViR0xBbnkgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0QWN0
aXZlVW5pZm9ybXMoV2ViR0xQcm9ncmFtJiBwcm9ncmFtLCBjb25zdAogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAogICAgIFZlY3RvcjxHQ0dMaW50PiByZXN1bHQodW5pZm9ybUluZGljZXMuc2l6
ZSgpLCAwKTsKLSAgICAKKwogICAgIHN3aXRjaCAocG5hbWUpIHsKICAgICBjYXNlIEdyYXBoaWNz
Q29udGV4dEdMOjpVTklGT1JNX1RZUEU6CiAgICAgICAgIG1fY29udGV4dC0+Z2V0QWN0aXZlVW5p
Zm9ybXMocHJvZ3JhbS5vYmplY3QoKSwgdW5pZm9ybUluZGljZXMsIHBuYW1lLCByZXN1bHQpOwpA
QCAtMzM3MiwxMTAgKzM0MTAsMTQ0IEBAIGJvb2wgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dmFs
aWRhdGVDYXBhYmlsaXR5KGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgR0NHTGVuCiAgICAgfQog
fQogCi1ib29sIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnZhbGlkYXRlQ2xlYXJCdWZmZXIoY29u
c3QgY2hhciogZnVuY3Rpb25OYW1lLCBHQ0dMZW51bSBidWZmZXIsIHNpemVfdCBzaXplLCBHQ0dM
dWludCBzcmNPZmZzZXQpCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBUeXBlZEFycmF5
VHlwZT4KK09wdGlvbmFsPEdDR0xTcGFuPGNvbnN0IFQ+PiBXZWJHTDJSZW5kZXJpbmdDb250ZXh0
Ojp2YWxpZGF0ZUNsZWFyQnVmZmVyKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgR0NHTGVudW0g
YnVmZmVyLCBUeXBlZExpc3Q8VHlwZWRBcnJheVR5cGUsIFQ+JiB2YWx1ZXMsIEdDR0x1aW50IHNy
Y09mZnNldCkKIHsKLSAgICBDaGVja2VkPEdDR0xzaXplaSwgUmVjb3JkT3ZlcmZsb3c+IGNoZWNr
ZWRTaXplKHNpemUpOworICAgIENoZWNrZWQ8R0NHTHNpemVpLCBSZWNvcmRPdmVyZmxvdz4gY2hl
Y2tlZFNpemUodmFsdWVzLmxlbmd0aCgpKTsKICAgICBjaGVja2VkU2l6ZSAtPSBzcmNPZmZzZXQ7
CiAgICAgaWYgKGNoZWNrZWRTaXplLmhhc092ZXJmbG93ZWQoKSkgewogICAgICAgICBzeW50aGVz
aXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9WQUxVRSwgZnVuY3Rpb25OYW1l
LCAiaW52YWxpZCBhcnJheSBzaXplIC8gc3JjT2Zmc2V0Iik7Ci0gICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9CiAgICAgc3dpdGNoIChidWZmZXIpIHsKICAg
ICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT0xPUjoKICAgICAgICAgaWYgKGNoZWNrZWRTaXpl
LnVuc2FmZUdldCgpIDwgNCkgewogICAgICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhp
Y3NDb250ZXh0R0w6OklOVkFMSURfVkFMVUUsIGZ1bmN0aW9uTmFtZSwgImludmFsaWQgYXJyYXkg
c2l6ZSAvIHNyY09mZnNldCIpOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAg
ICAgcmV0dXJuIHsgfTsKICAgICAgICAgfQotICAgICAgICBicmVhazsKKyAgICAgICAgcmV0dXJu
IG1ha2VHQ0dMU3Bhbih2YWx1ZXMuZGF0YSgpICsgc3JjT2Zmc2V0LCA0KTsKICAgICBjYXNlIEdy
YXBoaWNzQ29udGV4dEdMOjpERVBUSDoKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpTVEVO
Q0lMOgogICAgICAgICBpZiAoY2hlY2tlZFNpemUudW5zYWZlR2V0KCkgPCAxKSB7CiAgICAgICAg
ICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9WQUxVRSwg
ZnVuY3Rpb25OYW1lLCAiaW52YWxpZCBhcnJheSBzaXplIC8gc3JjT2Zmc2V0Iik7Ci0gICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICByZXR1cm4geyB9OwogICAgICAgICB9Ci0g
ICAgICAgIGJyZWFrOworICAgICAgICByZXR1cm4gbWFrZUdDR0xTcGFuKHZhbHVlcy5kYXRhKCkg
KyBzcmNPZmZzZXQsIDEpOworCiAgICAgZGVmYXVsdDoKICAgICAgICAgc3ludGhlc2l6ZUdMRXJy
b3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfRU5VTSwgZnVuY3Rpb25OYW1lLCAiaW52YWxp
ZCBidWZmZXIiKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4geyB9Owog
ICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsKIH0KIAogdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0
Ojp1bmlmb3JtMWZ2KFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgRmxvYXQzMkxpc3Qg
ZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCiB7Ci0gICAgaWYg
KGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycygi
dW5pZm9ybTFmdiIsIGxvY2F0aW9uLCBkYXRhLCAxLCBzcmNPZmZzZXQsIHNyY0xlbmd0aCkpCisg
ICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSkKICAgICAgICAgcmV0dXJuOwotICAgIG1f
Y29udGV4dC0+dW5pZm9ybTFmdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgZGF0YS5kYXRhKCksIHNy
Y09mZnNldCwgc3JjTGVuZ3RoID8gc3JjTGVuZ3RoIDogKGRhdGEubGVuZ3RoKCkgLSBzcmNPZmZz
ZXQpKTsKKyAgICBhdXRvIHJlc3VsdCA9IHZhbGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMoInVuaWZv
cm0xZnYiLCBsb2NhdGlvbiwgZGF0YSwgMSwgc3JjT2Zmc2V0LCBzcmNMZW5ndGgpOworICAgIGlm
ICghcmVzdWx0KQorICAgICAgICByZXR1cm47CisgICAgbV9jb250ZXh0LT51bmlmb3JtMWZ2KGxv
Y2F0aW9uLT5sb2NhdGlvbigpLCByZXN1bHQudmFsdWUoKSk7CiB9CiAKIHZvaWQgV2ViR0wyUmVu
ZGVyaW5nQ29udGV4dDo6dW5pZm9ybTJmdihXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24s
IEZsb2F0MzJMaXN0IGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3Ro
KQogewotICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlVW5pZm9y
bVBhcmFtZXRlcnMoInVuaWZvcm0yZnYiLCBsb2NhdGlvbiwgZGF0YSwgMiwgc3JjT2Zmc2V0LCBz
cmNMZW5ndGgpKQorICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCiAgICAgICAgIHJl
dHVybjsKLSAgICBtX2NvbnRleHQtPnVuaWZvcm0yZnYobG9jYXRpb24tPmxvY2F0aW9uKCksIGRh
dGEuZGF0YSgpLCBzcmNPZmZzZXQsIChzcmNMZW5ndGggPyBzcmNMZW5ndGggOiBkYXRhLmxlbmd0
aCgpIC0gc3JjT2Zmc2V0KSAvIDIpOworICAgIGF1dG8gcmVzdWx0ID0gdmFsaWRhdGVVbmlmb3Jt
UGFyYW1ldGVycygidW5pZm9ybTJmdiIsIGxvY2F0aW9uLCBkYXRhLCAyLCBzcmNPZmZzZXQsIHNy
Y0xlbmd0aCk7CisgICAgaWYgKCFyZXN1bHQpCisgICAgICAgIHJldHVybjsKKyAgICBtX2NvbnRl
eHQtPnVuaWZvcm0yZnYobG9jYXRpb24tPmxvY2F0aW9uKCksIHJlc3VsdC52YWx1ZSgpKTsKIH0K
IAogdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtM2Z2KFdlYkdMVW5pZm9ybUxv
Y2F0aW9uKiBsb2NhdGlvbiwgRmxvYXQzMkxpc3QgZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBH
Q0dMdWludCBzcmNMZW5ndGgpCiB7Ci0gICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8
fCAhdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycygidW5pZm9ybTNmdiIsIGxvY2F0aW9uLCBkYXRh
LCAzLCBzcmNPZmZzZXQsIHNyY0xlbmd0aCkpCisgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRp
bmcoKSkKICAgICAgICAgcmV0dXJuOwotICAgIG1fY29udGV4dC0+dW5pZm9ybTNmdihsb2NhdGlv
bi0+bG9jYXRpb24oKSwgZGF0YS5kYXRhKCksIHNyY09mZnNldCwgKHNyY0xlbmd0aCA/IHNyY0xl
bmd0aCA6IGRhdGEubGVuZ3RoKCkgLSBzcmNPZmZzZXQpIC8gMyk7CisgICAgYXV0byByZXN1bHQg
PSB2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKCJ1bmlmb3JtM2Z2IiwgbG9jYXRpb24sIGRhdGEs
IDMsIHNyY09mZnNldCwgc3JjTGVuZ3RoKTsKKyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgcmV0
dXJuOworICAgIG1fY29udGV4dC0+dW5pZm9ybTNmdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgcmVz
dWx0LnZhbHVlKCkpOwogfQogCiB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm00
ZnYoV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBGbG9hdDMyTGlzdCBkYXRhLCBHQ0dM
dWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKIHsKLSAgICBpZiAoaXNDb250ZXh0
TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKCJ1bmlmb3JtNGZ2
IiwgbG9jYXRpb24sIGRhdGEsIDQsIHNyY09mZnNldCwgc3JjTGVuZ3RoKSkKKyAgICBpZiAoaXND
b250ZXh0TG9zdE9yUGVuZGluZygpKQorICAgICAgICByZXR1cm47CisgICAgYXV0byByZXN1bHQg
PSB2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKCJ1bmlmb3JtNGZ2IiwgbG9jYXRpb24sIGRhdGEs
IDQsIHNyY09mZnNldCwgc3JjTGVuZ3RoKTsKKyAgICBpZiAoIXJlc3VsdCkKICAgICAgICAgcmV0
dXJuOwotICAgIG1fY29udGV4dC0+dW5pZm9ybTRmdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgZGF0
YS5kYXRhKCksIHNyY09mZnNldCwgKHNyY0xlbmd0aCA/IHNyY0xlbmd0aCA6IGRhdGEubGVuZ3Ro
KCkgLSBzcmNPZmZzZXQpIC8gNCk7CisgICAgbV9jb250ZXh0LT51bmlmb3JtNGZ2KGxvY2F0aW9u
LT5sb2NhdGlvbigpLCByZXN1bHQudmFsdWUoKSk7CiB9CiAKIHZvaWQgV2ViR0wyUmVuZGVyaW5n
Q29udGV4dDo6dW5pZm9ybTFpdihXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEludDMy
TGlzdCBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKIHsKLSAg
ICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0
ZXJzKCJ1bmlmb3JtMWl2IiwgbG9jYXRpb24sIGRhdGEsIDEsIHNyY09mZnNldCwgc3JjTGVuZ3Ro
KSkKKyAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpKQorICAgICAgICByZXR1cm47Cisg
ICAgYXV0byByZXN1bHQgPSB2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKCJ1bmlmb3JtMWl2Iiwg
bG9jYXRpb24sIGRhdGEsIDEsIHNyY09mZnNldCwgc3JjTGVuZ3RoKTsKKyAgICBpZiAoIXJlc3Vs
dCkKICAgICAgICAgcmV0dXJuOwotICAgIG1fY29udGV4dC0+dW5pZm9ybTFpdihsb2NhdGlvbi0+
bG9jYXRpb24oKSwgZGF0YS5kYXRhKCksIHNyY09mZnNldCwgc3JjTGVuZ3RoID8gc3JjTGVuZ3Ro
IDogKGRhdGEubGVuZ3RoKCkgLSBzcmNPZmZzZXQpKTsKKyAgICBtX2NvbnRleHQtPnVuaWZvcm0x
aXYobG9jYXRpb24tPmxvY2F0aW9uKCksIHJlc3VsdC52YWx1ZSgpKTsKIH0KIAogdm9pZCBXZWJH
TDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtMml2KFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2Nh
dGlvbiwgSW50MzJMaXN0IGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVu
Z3RoKQogewotICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlVW5p
Zm9ybVBhcmFtZXRlcnMoInVuaWZvcm0yaXYiLCBsb2NhdGlvbiwgZGF0YSwgMiwgc3JjT2Zmc2V0
LCBzcmNMZW5ndGgpKQorICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCisgICAgICAg
IHJldHVybjsKKyAgICBhdXRvIHJlc3VsdCA9IHZhbGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMoInVu
aWZvcm0yaXYiLCBsb2NhdGlvbiwgZGF0YSwgMiwgc3JjT2Zmc2V0LCBzcmNMZW5ndGgpOworICAg
IGlmICghcmVzdWx0KQogICAgICAgICByZXR1cm47Ci0gICAgbV9jb250ZXh0LT51bmlmb3JtMml2
KGxvY2F0aW9uLT5sb2NhdGlvbigpLCBkYXRhLmRhdGEoKSwgc3JjT2Zmc2V0LCAoc3JjTGVuZ3Ro
ID8gc3JjTGVuZ3RoIDogZGF0YS5sZW5ndGgoKSAtIHNyY09mZnNldCkgLyAyKTsKKyAgICBtX2Nv
bnRleHQtPnVuaWZvcm0yaXYobG9jYXRpb24tPmxvY2F0aW9uKCksIHJlc3VsdC52YWx1ZSgpKTsK
IH0KIAogdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtM2l2KFdlYkdMVW5pZm9y
bUxvY2F0aW9uKiBsb2NhdGlvbiwgSW50MzJMaXN0IGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwg
R0NHTHVpbnQgc3JjTGVuZ3RoKQogewotICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkg
fHwgIXZhbGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMoInVuaWZvcm0zaXYiLCBsb2NhdGlvbiwgZGF0
YSwgMywgc3JjT2Zmc2V0LCBzcmNMZW5ndGgpKQorICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5k
aW5nKCkpCisgICAgICAgIHJldHVybjsKKyAgICBhdXRvIHJlc3VsdCA9IHZhbGlkYXRlVW5pZm9y
bVBhcmFtZXRlcnMoInVuaWZvcm0zaXYiLCBsb2NhdGlvbiwgZGF0YSwgMywgc3JjT2Zmc2V0LCBz
cmNMZW5ndGgpOworICAgIGlmICghcmVzdWx0KQogICAgICAgICByZXR1cm47Ci0gICAgbV9jb250
ZXh0LT51bmlmb3JtM2l2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCBkYXRhLmRhdGEoKSwgc3JjT2Zm
c2V0LCAoc3JjTGVuZ3RoID8gc3JjTGVuZ3RoIDogZGF0YS5sZW5ndGgoKSAtIHNyY09mZnNldCkg
LyAzKTsKKyAgICBtX2NvbnRleHQtPnVuaWZvcm0zaXYobG9jYXRpb24tPmxvY2F0aW9uKCksIHJl
c3VsdC52YWx1ZSgpKTsKIH0KIAogdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3Jt
NGl2KFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgSW50MzJMaXN0IGRhdGEsIEdDR0x1
aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQogewotICAgIGlmIChpc0NvbnRleHRM
b3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMoInVuaWZvcm00aXYi
LCBsb2NhdGlvbiwgZGF0YSwgNCwgc3JjT2Zmc2V0LCBzcmNMZW5ndGgpKQorICAgIGlmIChpc0Nv
bnRleHRMb3N0T3JQZW5kaW5nKCkpCisgICAgICAgIHJldHVybjsKKyAgICBhdXRvIHJlc3VsdCA9
IHZhbGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMoInVuaWZvcm00aXYiLCBsb2NhdGlvbiwgZGF0YSwg
NCwgc3JjT2Zmc2V0LCBzcmNMZW5ndGgpOworICAgIGlmICghcmVzdWx0KQogICAgICAgICByZXR1
cm47Ci0gICAgbV9jb250ZXh0LT51bmlmb3JtNGl2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCBkYXRh
LmRhdGEoKSwgc3JjT2Zmc2V0LCAoc3JjTGVuZ3RoID8gc3JjTGVuZ3RoIDogZGF0YS5sZW5ndGgo
KSAtIHNyY09mZnNldCkgLyA0KTsKKyAgICBtX2NvbnRleHQtPnVuaWZvcm00aXYobG9jYXRpb24t
PmxvY2F0aW9uKCksIHJlc3VsdC52YWx1ZSgpKTsKIH0KIAogdm9pZCBXZWJHTDJSZW5kZXJpbmdD
b250ZXh0Ojp1bmlmb3JtTWF0cml4MmZ2KFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwg
R0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBGbG9hdDMyTGlzdCBkYXRhLCBHQ0dMdWludCBzcmNPZmZz
ZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKIHsKLSAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGlu
ZygpIHx8ICF2YWxpZGF0ZVVuaWZvcm1NYXRyaXhQYXJhbWV0ZXJzKCJ1bmlmb3JtTWF0cml4MmZ2
IiwgbG9jYXRpb24sIHRyYW5zcG9zZSwgZGF0YSwgMioyLCBzcmNPZmZzZXQsIHNyY0xlbmd0aCkp
CisgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSkKKyAgICAgICAgcmV0dXJuOworICAg
IGF1dG8gcmVzdWx0ID0gdmFsaWRhdGVVbmlmb3JtTWF0cml4UGFyYW1ldGVycygidW5pZm9ybU1h
dHJpeDJmdiIsIGxvY2F0aW9uLCB0cmFuc3Bvc2UsIGRhdGEsIDIqMiwgc3JjT2Zmc2V0LCBzcmNM
ZW5ndGgpOworICAgIGlmICghcmVzdWx0KQogICAgICAgICByZXR1cm47Ci0gICAgbV9jb250ZXh0
LT51bmlmb3JtTWF0cml4MmZ2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCB0cmFuc3Bvc2UsIGRhdGEu
ZGF0YSgpLCBzcmNPZmZzZXQsIChzcmNMZW5ndGggPyBzcmNMZW5ndGggOiBkYXRhLmxlbmd0aCgp
IC0gc3JjT2Zmc2V0KSAvICgyKjIpKTsKKyAgICBtX2NvbnRleHQtPnVuaWZvcm1NYXRyaXgyZnYo
bG9jYXRpb24tPmxvY2F0aW9uKCksIHRyYW5zcG9zZSwgcmVzdWx0LnZhbHVlKCkpOwogfQogCiB2
b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm1NYXRyaXgzZnYoV2ViR0xVbmlmb3Jt
TG9jYXRpb24qIGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEZsb2F0MzJMaXN0IGRh
dGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQogewotICAgIGlmIChp
c0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlVW5pZm9ybU1hdHJpeFBhcmFtZXRl
cnMoInVuaWZvcm1NYXRyaXgzZnYiLCBsb2NhdGlvbiwgdHJhbnNwb3NlLCBkYXRhLCAzKjMsIHNy
Y09mZnNldCwgc3JjTGVuZ3RoKSkKKyAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpKQor
ICAgICAgICByZXR1cm47CisgICAgYXV0byByZXN1bHQgPSB2YWxpZGF0ZVVuaWZvcm1NYXRyaXhQ
YXJhbWV0ZXJzKCJ1bmlmb3JtTWF0cml4M2Z2IiwgbG9jYXRpb24sIHRyYW5zcG9zZSwgZGF0YSwg
MyozLCBzcmNPZmZzZXQsIHNyY0xlbmd0aCk7CisgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgIHJl
dHVybjsKLSAgICBtX2NvbnRleHQtPnVuaWZvcm1NYXRyaXgzZnYobG9jYXRpb24tPmxvY2F0aW9u
KCksIHRyYW5zcG9zZSwgZGF0YS5kYXRhKCksIHNyY09mZnNldCwgKHNyY0xlbmd0aCA/IHNyY0xl
bmd0aCA6IGRhdGEubGVuZ3RoKCkgLSBzcmNPZmZzZXQpIC8gKDMqMykpOworICAgIG1fY29udGV4
dC0+dW5pZm9ybU1hdHJpeDNmdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgdHJhbnNwb3NlLCByZXN1
bHQudmFsdWUoKSk7CiB9CiAKIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybU1h
dHJpeDRmdihXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5z
cG9zZSwgRmxvYXQzMkxpc3QgZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNM
ZW5ndGgpCiB7Ci0gICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVV
bmlmb3JtTWF0cml4UGFyYW1ldGVycygidW5pZm9ybU1hdHJpeDRmdiIsIGxvY2F0aW9uLCB0cmFu
c3Bvc2UsIGRhdGEsIDQqNCwgc3JjT2Zmc2V0LCBzcmNMZW5ndGgpKQorICAgIGlmIChpc0NvbnRl
eHRMb3N0T3JQZW5kaW5nKCkpCisgICAgICAgIHJldHVybjsKKyAgICBhdXRvIHJlc3VsdCA9IHZh
bGlkYXRlVW5pZm9ybU1hdHJpeFBhcmFtZXRlcnMoInVuaWZvcm1NYXRyaXg0ZnYiLCBsb2NhdGlv
biwgdHJhbnNwb3NlLCBkYXRhLCA0KjQsIHNyY09mZnNldCwgc3JjTGVuZ3RoKTsKKyAgICBpZiAo
IXJlc3VsdCkKICAgICAgICAgcmV0dXJuOwotICAgIG1fY29udGV4dC0+dW5pZm9ybU1hdHJpeDRm
dihsb2NhdGlvbi0+bG9jYXRpb24oKSwgdHJhbnNwb3NlLCBkYXRhLmRhdGEoKSwgc3JjT2Zmc2V0
LCAoc3JjTGVuZ3RoID8gc3JjTGVuZ3RoIDogZGF0YS5sZW5ndGgoKSAtIHNyY09mZnNldCkgLyAo
NCo0KSk7CisgICAgbV9jb250ZXh0LT51bmlmb3JtTWF0cml4NGZ2KGxvY2F0aW9uLT5sb2NhdGlv
bigpLCB0cmFuc3Bvc2UsIHJlc3VsdC52YWx1ZSgpKTsKIH0KIAogdm9pZCBXZWJHTDJSZW5kZXJp
bmdDb250ZXh0OjpyZWFkUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lk
dGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgQXJy
YXlCdWZmZXJWaWV3JiBwaXhlbHMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmgKaW5kZXggYjhiMDM2ZTQ0NzZhNGYxNWQ0ZTUwNjc1
OGM1NzU5MzVlMGEwNjI0Zi4uNWY0N2U2MWYwYTQ0NDRhMjg4YzFiNDYwZmI0ZTBmNzM2Njc0NjY3
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5n
Q29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmlu
Z0NvbnRleHQuaApAQCAtMjkyLDcgKzI5Miw4IEBAIHByaXZhdGU6CiAgICAgYm9vbCB2YWxpZGF0
ZUluZGV4QXJyYXlDb25zZXJ2YXRpdmUoR0NHTGVudW0gdHlwZSwgdW5zaWduZWQmIG51bUVsZW1l
bnRzUmVxdWlyZWQpIGZpbmFsOwogICAgIGJvb2wgdmFsaWRhdGVCbGVuZEVxdWF0aW9uKGNvbnN0
IGNoYXIqIGZ1bmN0aW9uTmFtZSwgR0NHTGVudW0gbW9kZSkgZmluYWw7CiAgICAgYm9vbCB2YWxp
ZGF0ZUNhcGFiaWxpdHkoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBHQ0dMZW51bSBjYXApIGZp
bmFsOwotICAgIGJvb2wgdmFsaWRhdGVDbGVhckJ1ZmZlcihjb25zdCBjaGFyKiBmdW5jdGlvbk5h
bWUsIEdDR0xlbnVtIGJ1ZmZlciwgc2l6ZV90LCBHQ0dMdWludCBzcmNPZmZzZXQpOworICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFR5cGVkQXJyYXlUeXBlPgorICAgIE9wdGlvbmFs
PEdDR0xTcGFuPGNvbnN0IFQ+PiB2YWxpZGF0ZUNsZWFyQnVmZmVyKGNvbnN0IGNoYXIqIGZ1bmN0
aW9uTmFtZSwgR0NHTGVudW0gYnVmZmVyLCBUeXBlZExpc3Q8VHlwZWRBcnJheVR5cGUsIFQ+JiB2
YWx1ZXMsIEdDR0x1aW50IHNyY09mZnNldCk7CiAgICAgYm9vbCB2YWxpZGF0ZUZyYW1lYnVmZmVy
VGFyZ2V0KEdDR0xlbnVtIHRhcmdldCkgZmluYWw7CiAgICAgV2ViR0xGcmFtZWJ1ZmZlciogZ2V0
RnJhbWVidWZmZXJCaW5kaW5nKEdDR0xlbnVtIHRhcmdldCkgZmluYWw7CiAgICAgV2ViR0xGcmFt
ZWJ1ZmZlciogZ2V0UmVhZEZyYW1lYnVmZmVyQmluZGluZygpIGZpbmFsOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xEcmF3QnVmZmVycy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTERyYXdCdWZmZXJzLmNwcAppbmRleCA0OTQxNTZlMWU2
NWI2MDI5MTkwZGI3YzFjMDI2YWRmODAzZGRhOGQyLi5lNWNlYjRiZGRjYzRjMDUxZGI4YjlhYTlj
ZTAyMDgxYmYyMjMwNTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTERyYXdCdWZmZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TERyYXdCdWZmZXJzLmNwcApAQCAtNzQsOCArNzQsOCBAQCB2b2lkIFdlYkdMRHJhd0J1ZmZlcnM6
OmRyYXdCdWZmZXJzV0VCR0woY29uc3QgVmVjdG9yPEdDR0xlbnVtPiYgYnVmZmVycykKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICAvLyBCZWNhdXNlIHRoZSBiYWNrYnVm
ZmVyIGlzIHNpbXVsYXRlZCBvbiBhbGwgY3VycmVudCBXZWJLaXQgcG9ydHMsIHdlIG5lZWQgdG8g
Y2hhbmdlIEJBQ0sgdG8gQ09MT1JfQVRUQUNITUVOVDAuCi0gICAgICAgIEdDR0xlbnVtIHZhbHVl
ID0gKGJ1ZnNbMF0gPT0gR3JhcGhpY3NDb250ZXh0R0w6OkJBQ0spID8gR3JhcGhpY3NDb250ZXh0
R0w6OkNPTE9SX0FUVEFDSE1FTlQwIDogR3JhcGhpY3NDb250ZXh0R0w6Ok5PTkU7Ci0gICAgICAg
IG1fY29udGV4dC0+Z3JhcGhpY3NDb250ZXh0R0woKS0+Z2V0RXh0ZW5zaW9ucygpLmRyYXdCdWZm
ZXJzRVhUKDEsICZ2YWx1ZSk7CisgICAgICAgIEdDR0xlbnVtIHZhbHVlWzFdIHsgKGJ1ZnNbMF0g
PT0gR3JhcGhpY3NDb250ZXh0R0w6OkJBQ0spID8gR3JhcGhpY3NDb250ZXh0R0w6OkNPTE9SX0FU
VEFDSE1FTlQwIDogR3JhcGhpY3NDb250ZXh0R0w6Ok5PTkUgfTsKKyAgICAgICAgbV9jb250ZXh0
LT5ncmFwaGljc0NvbnRleHRHTCgpLT5nZXRFeHRlbnNpb25zKCkuZHJhd0J1ZmZlcnNFWFQodmFs
dWUpOwogICAgICAgICBtX2NvbnRleHQtPnNldEJhY2tEcmF3QnVmZmVyKGJ1ZnNbMF0pOwogICAg
IH0gZWxzZSB7CiAgICAgICAgIGlmIChuID4gbV9jb250ZXh0LT5nZXRNYXhEcmF3QnVmZmVycygp
KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEZyYW1lYnVm
ZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRnJhbWVidWZmZXIuY3Bw
CmluZGV4IDM2NThlZThlYWFmN2YwZGJiODg2M2NlZDUwMjQyNWY0ZmI0ZTIzYTUuLmIxOThiMzY2
YjExZjE1YjFiODAzYmQwNjNjNzZjNGYyY2Q4ZDExNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMRnJhbWVidWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMRnJhbWVidWZmZXIuY3BwCkBAIC03MDIsMTMgKzcwMiwxMCBAQCB2
b2lkIFdlYkdMRnJhbWVidWZmZXI6OmRyYXdCdWZmZXJzSWZOZWNlc3NhcnkoYm9vbCBmb3JjZSkK
ICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBpZiAocmVzZXQpIHsKLSAgICAgICAg
ICAgIGlmIChjb250ZXh0KCktPmlzV2ViR0wyKCkpIHsKLSAgICAgICAgICAgICAgICBjb250ZXh0
KCktPmdyYXBoaWNzQ29udGV4dEdMKCktPmRyYXdCdWZmZXJzKAotICAgICAgICAgICAgICAgICAg
ICBtX2ZpbHRlcmVkRHJhd0J1ZmZlcnMuc2l6ZSgpLCBtX2ZpbHRlcmVkRHJhd0J1ZmZlcnMuZGF0
YSgpKTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgY29udGV4dCgpLT5n
cmFwaGljc0NvbnRleHRHTCgpLT5nZXRFeHRlbnNpb25zKCkuZHJhd0J1ZmZlcnNFWFQoCi0gICAg
ICAgICAgICAgICAgICAgIG1fZmlsdGVyZWREcmF3QnVmZmVycy5zaXplKCksIG1fZmlsdGVyZWRE
cmF3QnVmZmVycy5kYXRhKCkpOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGNvbnRl
eHQoKS0+aXNXZWJHTDIoKSkKKyAgICAgICAgICAgICAgICBjb250ZXh0KCktPmdyYXBoaWNzQ29u
dGV4dEdMKCktPmRyYXdCdWZmZXJzKG1fZmlsdGVyZWREcmF3QnVmZmVycyk7CisgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgY29udGV4dCgpLT5ncmFwaGljc0NvbnRleHRHTCgpLT5n
ZXRFeHRlbnNpb25zKCkuZHJhd0J1ZmZlcnNFWFQobV9maWx0ZXJlZERyYXdCdWZmZXJzKTsKICAg
ICAgICAgfQogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKaW5kZXggMTg1ZThjNjJlNmZiZTMxZjMx
Mzg4YzBjOWY4MGQ4MWNlZTI0YTNiMS4uNGM4NGVmY2U0OTQwY2FmMGU0ZjkwZmY1MWExNDEyYTBj
M2U4NGE2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKQEAgLTE2MDMsNyArMTYwMyw3IEBAIHZvaWQgV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6YnVmZmVyRGF0YShHQ0dMZW51bSB0YXJnZXQsIE9wdGlv
bmFsPEJ1ZmZlckRhdGFTCiAgICAgICAgIH0KIAogICAgICAgICBtX2NvbnRleHQtPm1vdmVFcnJv
cnNUb1N5bnRoZXRpY0Vycm9yTGlzdCgpOwotICAgICAgICBtX2NvbnRleHQtPmJ1ZmZlckRhdGEo
dGFyZ2V0LCBkYXRhLT5ieXRlTGVuZ3RoKCksIGRhdGEtPmRhdGEoKSwgdXNhZ2UpOworICAgICAg
ICBtX2NvbnRleHQtPmJ1ZmZlckRhdGEodGFyZ2V0LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4o
ZGF0YS0+ZGF0YSgpLCBkYXRhLT5ieXRlTGVuZ3RoKCkpLCB1c2FnZSk7CiAgICAgICAgIGlmICht
X2NvbnRleHQtPm1vdmVFcnJvcnNUb1N5bnRoZXRpY0Vycm9yTGlzdCgpKSB7CiAgICAgICAgICAg
ICAvLyBUaGUgYnVmZmVyRGF0YSBmdW5jdGlvbiBmYWlsZWQuIFRlbGwgdGhlIGJ1ZmZlciBpdCBk
b2Vzbid0IGhhdmUgdGhlIGRhdGEgaXQgdGhpbmtzIGl0IGRvZXMuCiAgICAgICAgICAgICBidWZm
ZXItPmRpc2Fzc29jaWF0ZUJ1ZmZlckRhdGEoKTsKQEAgLTE2MzAsNyArMTYzMCw3IEBAIHZvaWQg
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6YnVmZmVyU3ViRGF0YShHQ0dMZW51bSB0YXJnZXQs
IGxvbmcgbG9uZyBvZmZzZXQsCiAgICAgICAgIH0KIAogICAgICAgICBtX2NvbnRleHQtPm1vdmVF
cnJvcnNUb1N5bnRoZXRpY0Vycm9yTGlzdCgpOwotICAgICAgICBtX2NvbnRleHQtPmJ1ZmZlclN1
YkRhdGEodGFyZ2V0LCBzdGF0aWNfY2FzdDxHQ0dMaW50cHRyPihvZmZzZXQpLCBkYXRhLT5ieXRl
TGVuZ3RoKCksIGRhdGEtPmRhdGEoKSk7CisgICAgICAgIG1fY29udGV4dC0+YnVmZmVyU3ViRGF0
YSh0YXJnZXQsIHN0YXRpY19jYXN0PEdDR0xpbnRwdHI+KG9mZnNldCksIEdDR0xTcGFuPGNvbnN0
IEdDR0x2b2lkPihkYXRhLT5kYXRhKCksIGRhdGEtPmJ5dGVMZW5ndGgoKSkpOwogICAgICAgICBp
ZiAobV9jb250ZXh0LT5tb3ZlRXJyb3JzVG9TeW50aGV0aWNFcnJvckxpc3QoKSkgewogICAgICAg
ICAgICAgLy8gVGhlIGJ1ZmZlclN1YkRhdGEgZnVuY3Rpb24gZmFpbGVkLiBUZWxsIHRoZSBidWZm
ZXIgaXQgZG9lc24ndCBoYXZlIHRoZSBkYXRhIGl0IHRoaW5rcyBpdCBkb2VzLgogICAgICAgICAg
ICAgYnVmZmVyLT5kaXNhc3NvY2lhdGVCdWZmZXJEYXRhKCk7CkBAIC0xNzU3LDcgKzE3NTcsNyBA
QCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmNvbXByZXNzZWRUZXhJbWFnZTJEKEdD
R0xlbnVtIHRhcmdldCwgR0NHTGludCBsZQogICAgIGlmICghdmFsaWRhdGVUZXh0dXJlMkRCaW5k
aW5nKCJjb21wcmVzc2VkVGV4SW1hZ2UyRCIsIHRhcmdldCkpCiAgICAgICAgIHJldHVybjsKICAg
ICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5jb21wcmVzc2VkVGV4SW1hZ2UyRFJvYnVzdEFO
R0xFKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LAotICAgICAg
ICBib3JkZXIsIGRhdGEuYnl0ZUxlbmd0aCgpLCBkYXRhLmJ5dGVMZW5ndGgoKSwgZGF0YS5iYXNl
QWRkcmVzcygpKTsKKyAgICAgICAgYm9yZGVyLCBkYXRhLmJ5dGVMZW5ndGgoKSwgbWFrZUdDR0xT
cGFuKGRhdGEuYmFzZUFkZHJlc3MoKSwgZGF0YS5ieXRlTGVuZ3RoKCkpKTsKICNlbHNlCiAgICAg
aWYgKCF2YWxpZGF0ZVRleEZ1bmNMZXZlbCgiY29tcHJlc3NlZFRleEltYWdlMkQiLCB0YXJnZXQs
IGxldmVsKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTgwMSw3ICsxODAxLDcgQEAgdm9pZCBXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlOjpjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0
YXJnZXQsIEdDR0xpbnQKICNpZiBVU0UoQU5HTEUpCiAgICAgaWYgKCF2YWxpZGF0ZVRleHR1cmUy
REJpbmRpbmcoImNvbXByZXNzZWRUZXhTdWJJbWFnZTJEIiwgdGFyZ2V0KSkKICAgICAgICAgcmV0
dXJuOwotICAgIGdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5jb21wcmVzc2Vk
VGV4U3ViSW1hZ2UyRFJvYnVzdEFOR0xFKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQs
IHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgZGF0YS5ieXRlTGVuZ3RoKCksIGRhdGEuYnl0ZUxlbmd0
aCgpLCBkYXRhLmJhc2VBZGRyZXNzKCkpOworICAgIGdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4
dGVuc2lvbnMoKS5jb21wcmVzc2VkVGV4U3ViSW1hZ2UyRFJvYnVzdEFOR0xFKHRhcmdldCwgbGV2
ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgZGF0YS5ieXRlTGVu
Z3RoKCksIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPihkYXRhLmJhc2VBZGRyZXNzKCksIGRhdGEu
Ynl0ZUxlbmd0aCgpKSk7CiAjZWxzZQogICAgIGlmICghdmFsaWRhdGVUZXhGdW5jTGV2ZWwoImNv
bXByZXNzZWRUZXhTdWJJbWFnZTJEIiwgdGFyZ2V0LCBsZXZlbCkpCiAgICAgICAgIHJldHVybjsK
QEAgLTE5MDAsOCArMTkwMCw4IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Y29w
eVRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsCiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgVW5pcXVlQXJyYXk8dW5zaWduZWQgY2hhcj4g
emVybzsKKyAgICAgICAgdW5zaWduZWQgc2l6ZSA9IDA7CiAgICAgICAgIGlmICh3aWR0aCAmJiBo
ZWlnaHQpIHsKLSAgICAgICAgICAgIHVuc2lnbmVkIHNpemU7CiAgICAgICAgICAgICBHQ0dMZW51
bSBlcnJvciA9IG1fY29udGV4dC0+Y29tcHV0ZUltYWdlU2l6ZUluQnl0ZXMoZm9ybWF0LCB0eXBl
LCB3aWR0aCwgaGVpZ2h0LCAxLCBnZXRVbnBhY2tQaXhlbFN0b3JlUGFyYW1zKFRleEltYWdlRGlt
ZW5zaW9uOjpUZXgyRCksICZzaXplLCBudWxscHRyLCBudWxscHRyKTsKICAgICAgICAgICAgIGlm
IChlcnJvciAhPSBHcmFwaGljc0NvbnRleHRHTDo6Tk9fRVJST1IpIHsKICAgICAgICAgICAgICAg
ICBzeW50aGVzaXplR0xFcnJvcihlcnJvciwgImNvcHlUZXhTdWJJbWFnZTJEIiwgImJhZCBkaW1l
bnNpb25zIik7CkBAIC0xOTE0LDcgKzE5MTQsNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2U6OmNvcHlUZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbAog
ICAgICAgICAgICAgfQogICAgICAgICAgICAgbWVtc2V0KHplcm8uZ2V0KCksIDAsIHNpemUpOwog
ICAgICAgICB9Ci0gICAgICAgIG1fY29udGV4dC0+dGV4U3ViSW1hZ2UyRCh0YXJnZXQsIGxldmVs
LCB4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIHplcm8uZ2V0
KCkpOworICAgICAgICBtX2NvbnRleHQtPnRleFN1YkltYWdlMkQodGFyZ2V0LCBsZXZlbCwgeG9m
ZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBtYWtlR0NHTFNwYW4o
emVyby5nZXQoKSwgc2l6ZSkpOwogICAgICAgICBpZiAoY2xpcHBlZFdpZHRoID4gMCAmJiBjbGlw
cGVkSGVpZ2h0ID4gMCkKICAgICAgICAgICAgIG1fY29udGV4dC0+Y29weVRleFN1YkltYWdlMkQo
dGFyZ2V0LCBsZXZlbCwgeG9mZnNldCArIGNsaXBwZWRYIC0geCwgeW9mZnNldCArIGNsaXBwZWRZ
IC0geSwgY2xpcHBlZFgsIGNsaXBwZWRZLCBjbGlwcGVkV2lkdGgsIGNsaXBwZWRIZWlnaHQpOwog
ICAgIH0gZWxzZQpAQCAtNDcwOSwxMiArNDcwOSwxMiBAQCBFeGNlcHRpb25Pcjx2b2lkPiBXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlOjp0ZXhJbWFnZVNvdXJjZUhlbHBlcihUZXhJbWFnZUZ1bmN0
aQogICAgICAgICAgICAgaWYgKGZ1bmN0aW9uSUQgPT0gVGV4SW1hZ2VGdW5jdGlvbklEOjpUZXhJ
bWFnZTNEKSB7CiAgICAgICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkudGV4
SW1hZ2UzRFJvYnVzdEFOR0xFKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LAogICAgICAg
ICAgICAgICAgICAgICBhZGp1c3RlZFNvdXJjZUltYWdlUmVjdC53aWR0aCgpLCBhZGp1c3RlZFNv
dXJjZUltYWdlUmVjdC5oZWlnaHQoKSwgZGVwdGgsIDAsCi0gICAgICAgICAgICAgICAgICAgIGZv
cm1hdCwgdHlwZSwgYnl0ZUxlbmd0aCwgbmVlZENvbnZlcnNpb24gPyBkYXRhLmRhdGEoKSA6IHBp
eGVscy0+ZGF0YSgpLT5kYXRhKCkpOworICAgICAgICAgICAgICAgICAgICBmb3JtYXQsIHR5cGUs
IG1ha2VHQ0dMU3BhbihuZWVkQ29udmVyc2lvbiA/IGRhdGEuZGF0YSgpIDogcGl4ZWxzLT5kYXRh
KCktPmRhdGEoKSwgYnl0ZUxlbmd0aCkpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAg
ICAgICAgICBBU1NFUlQoZnVuY3Rpb25JRCA9PSBUZXhJbWFnZUZ1bmN0aW9uSUQ6OlRleFN1Yklt
YWdlM0QpOwogICAgICAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnRleFN1
YkltYWdlM0RSb2J1c3RBTkdMRSh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB6b2Zm
c2V0LAogICAgICAgICAgICAgICAgICAgICBhZGp1c3RlZFNvdXJjZUltYWdlUmVjdC53aWR0aCgp
LCBhZGp1c3RlZFNvdXJjZUltYWdlUmVjdC5oZWlnaHQoKSwgZGVwdGgsCi0gICAgICAgICAgICAg
ICAgICAgIGZvcm1hdCwgdHlwZSwgYnl0ZUxlbmd0aCwgbmVlZENvbnZlcnNpb24gPyBkYXRhLmRh
dGEoKSA6IHBpeGVscy0+ZGF0YSgpLT5kYXRhKCkpOworICAgICAgICAgICAgICAgICAgICBmb3Jt
YXQsIHR5cGUsIG1ha2VHQ0dMU3BhbihuZWVkQ29udmVyc2lvbiA/IGRhdGEuZGF0YSgpIDogcGl4
ZWxzLT5kYXRhKCktPmRhdGEoKSwgYnl0ZUxlbmd0aCkpOwogICAgICAgICAgICAgfQogI2Vsc2UK
ICAgICAgICAgICAgIC8vIFdlYkdMIDIuMCBpcyBvbmx5IHN1cHBvcnRlZCB3aXRoIHRoZSBBTkdM
RSBiYWNrZW5kLgpAQCAtNDg5NCwxMSArNDg5NCwxMSBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OnRleEltYWdlQXJyYXlCdWZmZXJWaWV3SGVscGVyKFRleEltYWdlRnVuY3Rpb25J
RAogICAgIH0KICNpZiBVU0UoQU5HTEUpCiAgICAgaWYgKGZ1bmN0aW9uSUQgPT0gVGV4SW1hZ2VG
dW5jdGlvbklEOjpUZXhJbWFnZTNEKSB7Ci0gICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9u
cygpLnRleEltYWdlM0RSb2J1c3RBTkdMRSh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwg
d2lkdGgsIGhlaWdodCwgZGVwdGgsIGJvcmRlciwgZm9ybWF0LCB0eXBlLCBieXRlTGVuZ3RoLCBk
YXRhKTsKKyAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkudGV4SW1hZ2UzRFJvYnVz
dEFOR0xFKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0
aCwgYm9yZGVyLCBmb3JtYXQsIHR5cGUsIG1ha2VHQ0dMU3BhbihkYXRhLCBieXRlTGVuZ3RoKSk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgaWYgKGZ1bmN0aW9uSUQgPT0gVGV4SW1hZ2VG
dW5jdGlvbklEOjpUZXhTdWJJbWFnZTNEKSB7Ci0gICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5z
aW9ucygpLnRleFN1YkltYWdlM0RSb2J1c3RBTkdMRSh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5
b2Zmc2V0LCB6b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgZm9ybWF0LCB0eXBlLCBieXRl
TGVuZ3RoLCBkYXRhKTsKKyAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkudGV4U3Vi
SW1hZ2UzRFJvYnVzdEFOR0xFKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHpvZmZz
ZXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBmb3JtYXQsIHR5cGUsIG1ha2VHQ0dMU3BhbihkYXRh
LCBieXRlTGVuZ3RoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAjZW5kaWYgLy8gVVNFKEFO
R0xFKQpAQCAtNDk3NSwxMiArNDk3NSwxMiBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U6OnRleEltYWdlSW1wbChUZXhJbWFnZUZ1bmN0aW9uSUQgZnVuY3Rpb25JRCwgR0NHTAogICAg
ICAgICBpZiAoZnVuY3Rpb25JRCA9PSBUZXhJbWFnZUZ1bmN0aW9uSUQ6OlRleEltYWdlM0QpIHsK
ICAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnRleEltYWdlM0RSb2J1c3RB
TkdMRSh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwKICAgICAgICAgICAgICAgICBhZGp1
c3RlZFNvdXJjZUltYWdlUmVjdC53aWR0aCgpLCBhZGp1c3RlZFNvdXJjZUltYWdlUmVjdC5oZWln
aHQoKSwgZGVwdGgsIDAsCi0gICAgICAgICAgICAgICAgZm9ybWF0LCB0eXBlLCBieXRlTGVuZ3Ro
LCBuZWVkQ29udmVyc2lvbiA/IGRhdGEuZGF0YSgpIDogaW1hZ2VQaXhlbERhdGEpOworICAgICAg
ICAgICAgICAgIGZvcm1hdCwgdHlwZSwgbWFrZUdDR0xTcGFuKG5lZWRDb252ZXJzaW9uID8gZGF0
YS5kYXRhKCkgOiBpbWFnZVBpeGVsRGF0YSwgYnl0ZUxlbmd0aCkpOwogICAgICAgICB9IGVsc2Ug
ewogICAgICAgICAgICAgQVNTRVJUKGZ1bmN0aW9uSUQgPT0gVGV4SW1hZ2VGdW5jdGlvbklEOjpU
ZXhTdWJJbWFnZTNEKTsKICAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnRl
eFN1YkltYWdlM0RSb2J1c3RBTkdMRSh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB6
b2Zmc2V0LAogICAgICAgICAgICAgICAgIGFkanVzdGVkU291cmNlSW1hZ2VSZWN0LndpZHRoKCks
IGFkanVzdGVkU291cmNlSW1hZ2VSZWN0LmhlaWdodCgpLCBkZXB0aCwKLSAgICAgICAgICAgICAg
ICBmb3JtYXQsIHR5cGUsIGJ5dGVMZW5ndGgsIG5lZWRDb252ZXJzaW9uID8gZGF0YS5kYXRhKCkg
OiBpbWFnZVBpeGVsRGF0YSk7CisgICAgICAgICAgICAgICAgZm9ybWF0LCB0eXBlLCBtYWtlR0NH
TFNwYW4obmVlZENvbnZlcnNpb24gPyBkYXRhLmRhdGEoKSA6IGltYWdlUGl4ZWxEYXRhLCBieXRl
TGVuZ3RoKSk7CiAgICAgICAgIH0KICNlbHNlCiAgICAgICAgIFVOVVNFRF9QQVJBTSh6b2Zmc2V0
KTsKQEAgLTQ5OTMsNyArNDk5Myw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6
dGV4SW1hZ2VJbXBsKFRleEltYWdlRnVuY3Rpb25JRCBmdW5jdGlvbklELCBHQ0dMCiB2b2lkIFdl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnRleEltYWdlMkRCYXNlKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwg
R0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVu
dW0gdHlwZSwgR0NHTHNpemVpIGJ5dGVMZW5ndGgsIGNvbnN0IHZvaWQqIHBpeGVscykKIHsKICNp
ZiBVU0UoQU5HTEUpCi0gICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkudGV4SW1hZ2UyRFJv
YnVzdEFOR0xFKHRhcmdldCwgbGV2ZWwsIGludGVybmFsRm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBi
b3JkZXIsIGZvcm1hdCwgdHlwZSwgYnl0ZUxlbmd0aCwgcGl4ZWxzKTsKKyAgICBtX2NvbnRleHQt
PmdldEV4dGVuc2lvbnMoKS50ZXhJbWFnZTJEUm9idXN0QU5HTEUodGFyZ2V0LCBsZXZlbCwgaW50
ZXJuYWxGb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGJvcmRlciwgZm9ybWF0LCB0eXBlLCBtYWtlR0NH
TFNwYW4ocGl4ZWxzLCBieXRlTGVuZ3RoKSk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShieXRl
TGVuZ3RoKTsKICAgICAvLyBGSVhNRTogRm9yIG5vdyB3ZSBpZ25vcmUgYW55IGVycm9ycyByZXR1
cm5lZC4KQEAgLTUwMDcsNyArNTAwNyw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZTo6dGV4SW1hZ2UyREJhc2UoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHCiAgICAg
fSBlbHNlIHsKICAgICAgICAgQVNTRVJUKHZhbGlkYXRlU2V0dGFibGVUZXhJbnRlcm5hbEZvcm1h
dCgidGV4SW1hZ2UyRCIsIGludGVybmFsRm9ybWF0KSk7CiAgICAgICAgIG1fY29udGV4dC0+bW92
ZUVycm9yc1RvU3ludGhldGljRXJyb3JMaXN0KCk7Ci0gICAgICAgIG1fY29udGV4dC0+dGV4SW1h
Z2UyRCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbEZvcm1hdCwgd2lkdGgsIGhlaWdodCwgYm9yZGVy
LCBmb3JtYXQsIHR5cGUsIHBpeGVscyk7CisgICAgICAgIG1fY29udGV4dC0+dGV4SW1hZ2UyRCh0
YXJnZXQsIGxldmVsLCBpbnRlcm5hbEZvcm1hdCwgd2lkdGgsIGhlaWdodCwgYm9yZGVyLCBmb3Jt
YXQsIHR5cGUsIG1ha2VHQ0dMU3BhbihwaXhlbHMsIGJ5dGVMZW5ndGgpKTsKICAgICAgICAgaWYg
KG1fY29udGV4dC0+bW92ZUVycm9yc1RvU3ludGhldGljRXJyb3JMaXN0KCkpIHsKICAgICAgICAg
ICAgIC8vIFRoZSB0ZXhJbWFnZTJEIGZ1bmN0aW9uIGZhaWxlZC4gVGVsbCB0aGUgV2ViR0xUZXh0
dXJlIGl0IGRvZXNuJ3QgaGF2ZSB0aGUgZGF0YSBmb3IgdGhpcyBsZXZlbC4KICAgICAgICAgICAg
IHRleC0+bWFya0ludmFsaWQodGFyZ2V0LCBsZXZlbCk7CkBAIC01MDIzLDcgKzUwMjMsNyBAQCB2
b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnRleFN1YkltYWdlMkRCYXNlKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGludCBsZXZlbAogICAgIEFTU0VSVCghaXNDb250ZXh0TG9zdCgpKTsKICNp
ZiBVU0UoQU5HTEUpCiAgICAgVU5VU0VEX1BBUkFNKGludGVybmFsRm9ybWF0KTsKLSAgICBtX2Nv
bnRleHQtPmdldEV4dGVuc2lvbnMoKS50ZXhTdWJJbWFnZTJEUm9idXN0QU5HTEUodGFyZ2V0LCBs
ZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBieXRl
TGVuZ3RoLCBwaXhlbHMpOworICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnRleFN1Yklt
YWdlMkRSb2J1c3RBTkdMRSh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwg
aGVpZ2h0LCBmb3JtYXQsIHR5cGUsIG1ha2VHQ0dMU3BhbihwaXhlbHMsIGJ5dGVMZW5ndGgpKTsK
ICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGJ5dGVMZW5ndGgpOwogICAgIEFTU0VSVCh2YWxpZGF0
ZVRleEZ1bmNQYXJhbWV0ZXJzKCJ0ZXhTdWJJbWFnZTJEIiwgVGV4SW1hZ2VGdW5jdGlvblR5cGU6
OlRleFN1YkltYWdlLCBTb3VyY2VBcnJheUJ1ZmZlclZpZXcsIHRhcmdldCwgbGV2ZWwsIGludGVy
bmFsRm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCAxLCAwLCBmb3JtYXQsIHR5cGUpKTsKQEAgLTUwNDAs
NyArNTA0MCw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dGV4U3ViSW1hZ2Uy
REJhc2UoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsCiAgICAgQVNTRVJUKHRleC0+Z2V0
SGVpZ2h0KHRhcmdldCwgbGV2ZWwpID49ICh5b2Zmc2V0ICsgaGVpZ2h0KSk7CiAgICAgaWYgKCFp
c1dlYkdMMigpKQogICAgICAgICBBU1NFUlRfVU5VU0VEKGludGVybmFsRm9ybWF0LCB0ZXgtPmdl
dEludGVybmFsRm9ybWF0KHRhcmdldCwgbGV2ZWwpID09IGludGVybmFsRm9ybWF0KTsKLSAgICBt
X2NvbnRleHQtPnRleFN1YkltYWdlMkQodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwg
d2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBwaXhlbHMpOworICAgIG1fY29udGV4dC0+dGV4
U3ViSW1hZ2UyRCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0
LCBmb3JtYXQsIHR5cGUsIG1ha2VHQ0dMU3BhbihwaXhlbHMsIGJ5dGVMZW5ndGgpKTsKICNlbmRp
ZgogfQogCkBAIC01ODI2LDEwMCArNTgyNiwxMjYgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlOjp1bmlmb3JtNGkoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLAog
CiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm0xZnYoY29uc3QgV2ViR0xV
bmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBGbG9hdDMyTGlzdCYmIHYpCiB7Ci0gICAgaWYgKGlz
Q29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycygidW5p
Zm9ybTFmdiIsIGxvY2F0aW9uLCB2LCAxLCAwLCB2Lmxlbmd0aCgpKSkKKyAgICBpZiAoaXNDb250
ZXh0TG9zdE9yUGVuZGluZygpKQogICAgICAgICByZXR1cm47Ci0KLSAgICBtX2NvbnRleHQtPnVu
aWZvcm0xZnYobG9jYXRpb24tPmxvY2F0aW9uKCksIHYubGVuZ3RoKCksIHYuZGF0YSgpKTsKKyAg
ICBhdXRvIGRhdGEgPSB2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKCJ1bmlmb3JtMWZ2IiwgbG9j
YXRpb24sIHYsIDEpOworICAgIGlmICghZGF0YSkKKyAgICAgICAgcmV0dXJuOworICAgIG1fY29u
dGV4dC0+dW5pZm9ybTFmdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgZGF0YS52YWx1ZSgpKTsKIH0K
IAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtMmZ2KGNvbnN0IFdlYkdM
VW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgRmxvYXQzMkxpc3QmJiB2KQogewotICAgIGlmIChp
c0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMoInVu
aWZvcm0yZnYiLCBsb2NhdGlvbiwgdiwgMiwgMCwgdi5sZW5ndGgoKSkpCisgICAgaWYgKGlzQ29u
dGV4dExvc3RPclBlbmRpbmcoKSkKICAgICAgICAgcmV0dXJuOwotCi0gICAgbV9jb250ZXh0LT51
bmlmb3JtMmZ2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCB2Lmxlbmd0aCgpIC8gMiwgdi5kYXRhKCkp
OworICAgIGF1dG8gZGF0YSA9IHZhbGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMoInVuaWZvcm0yZnYi
LCBsb2NhdGlvbiwgdiwgMik7CisgICAgaWYgKCFkYXRhKQorICAgICAgICByZXR1cm47CisgICAg
bV9jb250ZXh0LT51bmlmb3JtMmZ2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCBkYXRhLnZhbHVlKCkp
OwogfQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm0zZnYoY29uc3Qg
V2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBGbG9hdDMyTGlzdCYmIHYpCiB7Ci0gICAg
aWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVy
cygidW5pZm9ybTNmdiIsIGxvY2F0aW9uLCB2LCAzLCAwLCB2Lmxlbmd0aCgpKSkKKyAgICBpZiAo
aXNDb250ZXh0TG9zdE9yUGVuZGluZygpKQogICAgICAgICByZXR1cm47Ci0KLSAgICBtX2NvbnRl
eHQtPnVuaWZvcm0zZnYobG9jYXRpb24tPmxvY2F0aW9uKCksIHYubGVuZ3RoKCkgLyAzLCB2LmRh
dGEoKSk7CisgICAgYXV0byBkYXRhID0gdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycygidW5pZm9y
bTNmdiIsIGxvY2F0aW9uLCB2LCAzKTsKKyAgICBpZiAoIWRhdGEpCisgICAgICAgIHJldHVybjsK
KyAgICBtX2NvbnRleHQtPnVuaWZvcm0zZnYobG9jYXRpb24tPmxvY2F0aW9uKCksIGRhdGEudmFs
dWUoKSk7CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybTRmdihj
b25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEZsb2F0MzJMaXN0JiYgdikKIHsK
LSAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVVuaWZvcm1QYXJh
bWV0ZXJzKCJ1bmlmb3JtNGZ2IiwgbG9jYXRpb24sIHYsIDQsIDAsIHYubGVuZ3RoKCkpKQorICAg
IGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCiAgICAgICAgIHJldHVybjsKLQotICAgIG1f
Y29udGV4dC0+dW5pZm9ybTRmdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgdi5sZW5ndGgoKSAvIDQs
IHYuZGF0YSgpKTsKKyAgICBhdXRvIGRhdGEgPSB2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKCJ1
bmlmb3JtNGZ2IiwgbG9jYXRpb24sIHYsIDQpOworICAgIGlmICghZGF0YSkKKyAgICAgICAgcmV0
dXJuOworICAgIG1fY29udGV4dC0+dW5pZm9ybTRmdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgZGF0
YS52YWx1ZSgpKTsKIH0KIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3Jt
MWl2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgSW50MzJMaXN0JiYgdikK
IHsKLSAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVVuaWZvcm1Q
YXJhbWV0ZXJzKCJ1bmlmb3JtMWl2IiwgbG9jYXRpb24sIHYsIDEsIDAsIHYubGVuZ3RoKCkpKQor
ICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCisgICAgICAgIHJldHVybjsKKyAgICBh
dXRvIHJlc3VsdCA9IHZhbGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMoInVuaWZvcm0xaXYiLCBsb2Nh
dGlvbiwgdiwgMSk7CisgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1
dG8gZGF0YSA9IHYuZGF0YSgpOwotICAgIGF1dG8gbGVuZ3RoID0gdi5sZW5ndGgoKTsKKyAgICBh
dXRvIGRhdGEgPSByZXN1bHQudmFsdWUoKTsKIAogICAgIGlmIChsb2NhdGlvbi0+dHlwZSgpID09
IEdyYXBoaWNzQ29udGV4dEdMOjpTQU1QTEVSXzJEIHx8IGxvY2F0aW9uLT50eXBlKCkgPT0gR3Jh
cGhpY3NDb250ZXh0R0w6OlNBTVBMRVJfQ1VCRSkgewotICAgICAgICBmb3IgKGF1dG8gaSA9IDA7
IGkgPCBsZW5ndGg7ICsraSkgeworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGRhdGEu
YnVmU2l6ZTsgKytpKSB7CiAgICAgICAgICAgICBpZiAoZGF0YVtpXSA+PSBzdGF0aWNfY2FzdDxp
bnQ+KG1fdGV4dHVyZVVuaXRzLnNpemUoKSkpIHsKLSAgICAgICAgICAgICAgICBMT0coV2ViR0ws
ICJUZXh0dXJlIHVuaXQgc2l6ZT0lenUsIHZbJWRdPSVkLiBMb2NhdGlvbiB0eXBlID0gJTA0WC4i
LCBtX3RleHR1cmVVbml0cy5zaXplKCksIGksIGRhdGFbaV0sIGxvY2F0aW9uLT50eXBlKCkpOwor
ICAgICAgICAgICAgICAgIExPRyhXZWJHTCwgIlRleHR1cmUgdW5pdCBzaXplPSV6dSwgdlslenVd
PSVkLiBMb2NhdGlvbiB0eXBlID0gJTA0WC4iLCBtX3RleHR1cmVVbml0cy5zaXplKCksIGksIGRh
dGFbaV0sIGxvY2F0aW9uLT50eXBlKCkpOwogICAgICAgICAgICAgICAgIHN5bnRoZXNpemVHTEVy
cm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX1ZBTFVFLCAidW5pZm9ybTFpdiIsICJpbnZh
bGlkIHRleHR1cmUgdW5pdCIpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAg
IH0KICAgICAgICAgfQogICAgIH0KIAotICAgIG1fY29udGV4dC0+dW5pZm9ybTFpdihsb2NhdGlv
bi0+bG9jYXRpb24oKSwgbGVuZ3RoLCBkYXRhKTsKKyAgICBtX2NvbnRleHQtPnVuaWZvcm0xaXYo
bG9jYXRpb24tPmxvY2F0aW9uKCksIGRhdGEpOwogfQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OnVuaWZvcm0yaXYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9u
LCBJbnQzMkxpc3QmJiB2KQogewotICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwg
IXZhbGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMoInVuaWZvcm0yaXYiLCBsb2NhdGlvbiwgdiwgMiwg
MCwgdi5sZW5ndGgoKSkpCisgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSkKICAgICAg
ICAgcmV0dXJuOwotCi0gICAgbV9jb250ZXh0LT51bmlmb3JtMml2KGxvY2F0aW9uLT5sb2NhdGlv
bigpLCB2Lmxlbmd0aCgpIC8gMiwgdi5kYXRhKCkpOworICAgIGF1dG8gZGF0YSA9IHZhbGlkYXRl
VW5pZm9ybVBhcmFtZXRlcnMoInVuaWZvcm0yaXYiLCBsb2NhdGlvbiwgdiwgMik7CisgICAgaWYg
KCFkYXRhKQorICAgICAgICByZXR1cm47CisgICAgbV9jb250ZXh0LT51bmlmb3JtMml2KGxvY2F0
aW9uLT5sb2NhdGlvbigpLCBkYXRhLnZhbHVlKCkpOwogfQogCiB2b2lkIFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2U6OnVuaWZvcm0zaXYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0
aW9uLCBJbnQzMkxpc3QmJiB2KQogewotICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkg
fHwgIXZhbGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMoInVuaWZvcm0zaXYiLCBsb2NhdGlvbiwgdiwg
MywgMCwgdi5sZW5ndGgoKSkpCisgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSkKICAg
ICAgICAgcmV0dXJuOwotCi0gICAgbV9jb250ZXh0LT51bmlmb3JtM2l2KGxvY2F0aW9uLT5sb2Nh
dGlvbigpLCB2Lmxlbmd0aCgpIC8gMywgdi5kYXRhKCkpOworICAgIGF1dG8gZGF0YSA9IHZhbGlk
YXRlVW5pZm9ybVBhcmFtZXRlcnMoInVuaWZvcm0zaXYiLCBsb2NhdGlvbiwgdiwgMyk7CisgICAg
aWYgKCFkYXRhKQorICAgICAgICByZXR1cm47CisgICAgbV9jb250ZXh0LT51bmlmb3JtM2l2KGxv
Y2F0aW9uLT5sb2NhdGlvbigpLCBkYXRhLnZhbHVlKCkpOwogfQogCi12b2lkIFdlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2U6OnVuaWZvcm00aXYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxv
Y2F0aW9uLCBJbnQzMkxpc3QmJiB2KQordm9pZCBXZWJHTFJlbmRlCityaW5nQ29udGV4dEJhc2U6
OnVuaWZvcm00aXYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBJbnQzMkxp
c3QmJiB2KQogewotICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRl
VW5pZm9ybVBhcmFtZXRlcnMoInVuaWZvcm00aXYiLCBsb2NhdGlvbiwgdiwgNCwgMCwgdi5sZW5n
dGgoKSkpCisgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSkKICAgICAgICAgcmV0dXJu
OwotCi0gICAgbV9jb250ZXh0LT51bmlmb3JtNGl2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCB2Lmxl
bmd0aCgpIC8gNCwgdi5kYXRhKCkpOworICAgIGF1dG8gZGF0YSA9IHZhbGlkYXRlVW5pZm9ybVBh
cmFtZXRlcnMoInVuaWZvcm00aXYiLCBsb2NhdGlvbiwgdiwgNCk7CisgICAgaWYgKCFkYXRhKQor
ICAgICAgICByZXR1cm47CisgICAgbV9jb250ZXh0LT51bmlmb3JtNGl2KGxvY2F0aW9uLT5sb2Nh
dGlvbigpLCBkYXRhLnZhbHVlKCkpOwogfQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U6OnVuaWZvcm1NYXRyaXgyZnYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9u
LCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEZsb2F0MzJMaXN0JiYgdikKIHsKLSAgICBpZiAoaXND
b250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVVuaWZvcm1NYXRyaXhQYXJhbWV0ZXJz
KCJ1bmlmb3JtTWF0cml4MmZ2IiwgbG9jYXRpb24sIHRyYW5zcG9zZSwgdiwgNCwgMCwgdi5sZW5n
dGgoKSkpCisgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSkKKyAgICAgICAgcmV0dXJu
OworICAgIGF1dG8gZGF0YSA9IHZhbGlkYXRlVW5pZm9ybU1hdHJpeFBhcmFtZXRlcnMoInVuaWZv
cm1NYXRyaXgyZnYiLCBsb2NhdGlvbiwgdHJhbnNwb3NlLCB2LCA0KTsKKyAgICBpZiAoIWRhdGEp
CiAgICAgICAgIHJldHVybjsKLSAgICBtX2NvbnRleHQtPnVuaWZvcm1NYXRyaXgyZnYobG9jYXRp
b24tPmxvY2F0aW9uKCksIHYubGVuZ3RoKCkgLyA0LCB0cmFuc3Bvc2UsIHYuZGF0YSgpKTsKKyAg
ICBtX2NvbnRleHQtPnVuaWZvcm1NYXRyaXgyZnYobG9jYXRpb24tPmxvY2F0aW9uKCksIHRyYW5z
cG9zZSwgZGF0YS52YWx1ZSgpKTsKIH0KIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
Ojp1bmlmb3JtTWF0cml4M2Z2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwg
R0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBGbG9hdDMyTGlzdCYmIHYpCiB7Ci0gICAgaWYgKGlzQ29u
dGV4dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVVbmlmb3JtTWF0cml4UGFyYW1ldGVycygi
dW5pZm9ybU1hdHJpeDNmdiIsIGxvY2F0aW9uLCB0cmFuc3Bvc2UsIHYsIDksIDAsIHYubGVuZ3Ro
KCkpKQorICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCisgICAgICAgIHJldHVybjsK
KyAgICBhdXRvIGRhdGEgPSB2YWxpZGF0ZVVuaWZvcm1NYXRyaXhQYXJhbWV0ZXJzKCJ1bmlmb3Jt
TWF0cml4M2Z2IiwgbG9jYXRpb24sIHRyYW5zcG9zZSwgdiwgOSk7CisgICAgaWYgKCFkYXRhKQog
ICAgICAgICByZXR1cm47Ci0gICAgbV9jb250ZXh0LT51bmlmb3JtTWF0cml4M2Z2KGxvY2F0aW9u
LT5sb2NhdGlvbigpLCB2Lmxlbmd0aCgpIC8gOSwgdHJhbnNwb3NlLCB2LmRhdGEoKSk7CisgICAg
bV9jb250ZXh0LT51bmlmb3JtTWF0cml4M2Z2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCB0cmFuc3Bv
c2UsIGRhdGEudmFsdWUoKSk7CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6
dW5pZm9ybU1hdHJpeDRmdihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEdD
R0xib29sZWFuIHRyYW5zcG9zZSwgRmxvYXQzMkxpc3QmJiB2KQogewotICAgIGlmIChpc0NvbnRl
eHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlVW5pZm9ybU1hdHJpeFBhcmFtZXRlcnMoInVu
aWZvcm1NYXRyaXg0ZnYiLCBsb2NhdGlvbiwgdHJhbnNwb3NlLCB2LCAxNiwgMCwgdi5sZW5ndGgo
KSkpCisgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSkKKyAgICAgICAgcmV0dXJuOwor
ICAgIGF1dG8gZGF0YSA9IHZhbGlkYXRlVW5pZm9ybU1hdHJpeFBhcmFtZXRlcnMoInVuaWZvcm1N
YXRyaXg0ZnYiLCBsb2NhdGlvbiwgdHJhbnNwb3NlLCB2LCAxNik7CisgICAgaWYgKCFkYXRhKQog
ICAgICAgICByZXR1cm47Ci0gICAgbV9jb250ZXh0LT51bmlmb3JtTWF0cml4NGZ2KGxvY2F0aW9u
LT5sb2NhdGlvbigpLCB2Lmxlbmd0aCgpIC8gMTYsIHRyYW5zcG9zZSwgdi5kYXRhKCkpOworICAg
IG1fY29udGV4dC0+dW5pZm9ybU1hdHJpeDRmdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgdHJhbnNw
b3NlLCBkYXRhLnZhbHVlKCkpOwogfQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6
OnVzZVByb2dyYW0oV2ViR0xQcm9ncmFtKiBwcm9ncmFtKQpAQCAtNzA0Nyw2MiArNzA3Myw0OCBA
QCBib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlQ2FwYWJpbGl0eShjb25z
dCBjaGFyKiBmdW5jdGlvbk5hbWUsIEdDRwogICAgIH0KIH0KIAotYm9vbCBXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlOjp2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKGNvbnN0IGNoYXIqIGZ1bmN0
aW9uTmFtZSwgY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBjb25zdCBGbG9h
dDMyTGlzdCYgdiwgR0NHTHNpemVpIHJlcXVpcmVkTWluU2l6ZSwgR0NHTHVpbnQgc3JjT2Zmc2V0
LCBHQ0dMdWludCBzcmNMZW5ndGgpCi17Ci0gICAgcmV0dXJuIHZhbGlkYXRlVW5pZm9ybU1hdHJp
eFBhcmFtZXRlcnMoZnVuY3Rpb25OYW1lLCBsb2NhdGlvbiwgZmFsc2UsIHYuZGF0YSgpLCB2Lmxl
bmd0aCgpLCByZXF1aXJlZE1pblNpemUsIHNyY09mZnNldCwgc3JjTGVuZ3RoKTsKLX0KLQotYm9v
bCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKGNv
bnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0
aW9uLCBjb25zdCBJbnQzMkxpc3QmIHYsIEdDR0xzaXplaSByZXF1aXJlZE1pblNpemUsIEdDR0x1
aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQotewotICAgIHJldHVybiB2YWxpZGF0
ZVVuaWZvcm1NYXRyaXhQYXJhbWV0ZXJzKGZ1bmN0aW9uTmFtZSwgbG9jYXRpb24sIGZhbHNlLCB2
LmRhdGEoKSwgdi5sZW5ndGgoKSwgcmVxdWlyZWRNaW5TaXplLCBzcmNPZmZzZXQsIHNyY0xlbmd0
aCk7Ci19CiAKLWJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmFsaWRhdGVVbmlmb3Jt
UGFyYW1ldGVycyhjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIGNvbnN0IFdlYkdMVW5pZm9ybUxv
Y2F0aW9uKiBsb2NhdGlvbiwgY29uc3QgVWludDMyTGlzdCYgdiwgR0NHTHNpemVpIHJlcXVpcmVk
TWluU2l6ZSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCi17Ci0gICAg
cmV0dXJuIHZhbGlkYXRlVW5pZm9ybU1hdHJpeFBhcmFtZXRlcnMoZnVuY3Rpb25OYW1lLCBsb2Nh
dGlvbiwgZmFsc2UsIHYuZGF0YSgpLCB2Lmxlbmd0aCgpLCByZXF1aXJlZE1pblNpemUsIHNyY09m
ZnNldCwgc3JjTGVuZ3RoKTsKLX0KLQotYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2
YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgY29uc3Qg
V2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCB2b2lkKiB2LCBHQ0dMc2l6ZWkgc2l6ZSwg
R0NHTHNpemVpIHJlcXVpcmVkTWluU2l6ZSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBz
cmNMZW5ndGgpCi17Ci0gICAgcmV0dXJuIHZhbGlkYXRlVW5pZm9ybU1hdHJpeFBhcmFtZXRlcnMo
ZnVuY3Rpb25OYW1lLCBsb2NhdGlvbiwgZmFsc2UsIHYsIHNpemUsIHJlcXVpcmVkTWluU2l6ZSwg
c3JjT2Zmc2V0LCBzcmNMZW5ndGgpOwotfQotCi1ib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U6OnZhbGlkYXRlVW5pZm9ybU1hdHJpeFBhcmFtZXRlcnMoY29uc3QgY2hhciogZnVuY3Rpb25O
YW1lLCBjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEdDR0xib29sZWFuIHRy
YW5zcG9zZSwgY29uc3QgRmxvYXQzMkxpc3QmIHYsIEdDR0xzaXplaSByZXF1aXJlZE1pblNpemUs
IEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQotewotICAgIHJldHVybiB2
YWxpZGF0ZVVuaWZvcm1NYXRyaXhQYXJhbWV0ZXJzKGZ1bmN0aW9uTmFtZSwgbG9jYXRpb24sIHRy
YW5zcG9zZSwgdi5kYXRhKCksIHYubGVuZ3RoKCksIHJlcXVpcmVkTWluU2l6ZSwgc3JjT2Zmc2V0
LCBzcmNMZW5ndGgpOwotfQotCi1ib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlk
YXRlVW5pZm9ybU1hdHJpeFBhcmFtZXRlcnMoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBjb25z
dCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwg
Y29uc3Qgdm9pZCogdiwgR0NHTHNpemVpIHNpemUsIEdDR0xzaXplaSByZXF1aXJlZE1pblNpemUs
IEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQordGVtcGxhdGU8dHlwZW5h
bWUgVCwgdHlwZW5hbWUgVHlwZWRMaXN0VHlwZT4KK09wdGlvbmFsPEdDR0xTcGFuPGNvbnN0IFQ+
PiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZVVuaWZvcm1NYXRyaXhQYXJhbWV0
ZXJzKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24q
IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IFR5cGVkTGlzdDxUeXBlZExp
c3RUeXBlLCBUPiYgdmFsdWVzLCBHQ0dMc2l6ZWkgcmVxdWlyZWRNaW5TaXplLCBHQ0dMdWludCBz
cmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKIHsKICAgICBpZiAoIXZhbGlkYXRlVW5pZm9y
bUxvY2F0aW9uKGZ1bmN0aW9uTmFtZSwgbG9jYXRpb24pKQotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgaWYgKCF2KSB7CisgICAgICAgIHJldHVybiB7IH07CisgICAgaWYgKCF2YWx1ZXMuZGF0
YSgpKSB7CiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZB
TElEX1ZBTFVFLCBmdW5jdGlvbk5hbWUsICJubyBhcnJheSIpOwotICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgIHJldHVybiB7IH07CiAgICAgfQogICAgIGlmICh0cmFuc3Bvc2UgJiYgIWlz
V2ViR0wyKCkpIHsKICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6
OklOVkFMSURfVkFMVUUsIGZ1bmN0aW9uTmFtZSwgInRyYW5zcG9zZSBub3QgRkFMU0UiKTsKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4geyB9OwogICAgIH0KLSAgICBpZiAo
c3JjT2Zmc2V0ID49IHN0YXRpY19jYXN0PEdDR0x1aW50PihzaXplKSkgeworICAgIGlmIChzcmNP
ZmZzZXQgPj0gc3RhdGljX2Nhc3Q8R0NHTHVpbnQ+KHZhbHVlcy5sZW5ndGgoKSkpIHsKICAgICAg
ICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfVkFMVUUsIGZ1
bmN0aW9uTmFtZSwgImludmFsaWQgc3JjT2Zmc2V0Iik7Ci0gICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9Ci0gICAgR0NHTHNpemVpIGFjdHVhbFNpemUgPSBz
aXplIC0gc3JjT2Zmc2V0OworICAgIEdDR0xzaXplaSBhY3R1YWxTaXplID0gdmFsdWVzLmxlbmd0
aCgpIC0gc3JjT2Zmc2V0OwogICAgIGlmIChzcmNMZW5ndGggPiAwKSB7CiAgICAgICAgIGlmIChz
cmNMZW5ndGggPiBzdGF0aWNfY2FzdDxHQ0dMdWludD4oYWN0dWFsU2l6ZSkpIHsKICAgICAgICAg
ICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX1ZBTFVFLCBm
dW5jdGlvbk5hbWUsICJpbnZhbGlkIHNyY09mZnNldCArIHNyY0xlbmd0aCIpOwotICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgcmV0dXJuIHsgfTsKICAgICAgICAgfQogICAg
ICAgICBhY3R1YWxTaXplID0gc3JjTGVuZ3RoOwogICAgIH0KICAgICBpZiAoYWN0dWFsU2l6ZSA8
IHJlcXVpcmVkTWluU2l6ZSB8fCAoYWN0dWFsU2l6ZSAlIHJlcXVpcmVkTWluU2l6ZSkpIHsKICAg
ICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfVkFMVUUs
IGZ1bmN0aW9uTmFtZSwgImludmFsaWQgc2l6ZSIpOwotICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgIHJldHVybiB7IH07CiAgICAgfQotICAgIHJldHVybiB0cnVlOworICAgIHJldHVybiBt
YWtlR0NHTFNwYW4odmFsdWVzLmRhdGEoKSArIHNyY09mZnNldCwgYWN0dWFsU2l6ZSk7CiB9CiAK
K3RlbXBsYXRlCitPcHRpb25hbDxHQ0dMU3Bhbjxjb25zdCBHQ0dMdWludD4+IFdlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlVW5pZm9ybU1hdHJpeFBhcmFtZXRlcnM8R0NHTHVpbnQs
IFVpbnQzMkFycmF5Pihjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIGNvbnN0IFdlYkdMVW5pZm9y
bUxvY2F0aW9uKiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBUeXBlZExpc3Q8VWludDMy
QXJyYXksIHVpbnQzMl90PiYgdmFsdWVzLCBHQ0dMc2l6ZWkgcmVxdWlyZWRNaW5TaXplLCBHQ0dM
dWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCk7CisKK3RlbXBsYXRlCitPcHRpb25h
bDxHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50Pj4gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmFs
aWRhdGVVbmlmb3JtTWF0cml4UGFyYW1ldGVyczxHQ0dMaW50LCBJbnQzMkFycmF5Pihjb25zdCBj
aGFyKiBmdW5jdGlvbk5hbWUsIGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiwgR0NHTGJvb2xl
YW4gdHJhbnNwb3NlLCBjb25zdCBUeXBlZExpc3Q8SW50MzJBcnJheSwgaW50MzJfdD4mIHZhbHVl
cywgR0NHTHNpemVpIHJlcXVpcmVkTWluU2l6ZSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWlu
dCBzcmNMZW5ndGgpOworCit0ZW1wbGF0ZQorT3B0aW9uYWw8R0NHTFNwYW48Y29uc3QgR0NHTGZs
b2F0Pj4gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmFsaWRhdGVVbmlmb3JtTWF0cml4UGFy
YW1ldGVyczxHQ0dMZmxvYXQsIEZsb2F0MzJBcnJheT4oY29uc3QgY2hhciogZnVuY3Rpb25OYW1l
LCBjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiosIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29u
c3QgVHlwZWRMaXN0PEZsb2F0MzJBcnJheSwgZmxvYXQ+JiB2YWx1ZXMsIEdDR0xzaXplaSByZXF1
aXJlZE1pblNpemUsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKTsKKwog
V2ViR0xCdWZmZXIqIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlQnVmZmVyRGF0
YVBhcmFtZXRlcnMoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBHQ0dMZW51bSB0YXJnZXQsIEdD
R0xlbnVtIHVzYWdlKQogewogICAgIFdlYkdMQnVmZmVyKiBidWZmZXIgPSB2YWxpZGF0ZUJ1ZmZl
ckRhdGFUYXJnZXQoZnVuY3Rpb25OYW1lLCB0YXJnZXQpOwpAQCAtNzI0NiwxNiArNzI1OCwxNiBA
QCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZlcnRleEF0dHJpYmZ2SW1wbChjb25z
dCBjaGFyKiBmdW5jdGlvbk5hbWUsIEdDRwogICAgIHsKICAgICAgICAgc3dpdGNoIChleHBlY3Rl
ZFNpemUpIHsKICAgICAgICAgY2FzZSAxOgotICAgICAgICAgICAgbV9jb250ZXh0LT52ZXJ0ZXhB
dHRyaWIxZnYoaW5kZXgsIGRhdGEpOworICAgICAgICAgICAgbV9jb250ZXh0LT52ZXJ0ZXhBdHRy
aWIxZnYoaW5kZXgsIG1ha2VHQ0dMU3BhbjwxPihkYXRhKSk7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgY2FzZSAyOgotICAgICAgICAgICAgbV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWIyZnYo
aW5kZXgsIGRhdGEpOworICAgICAgICAgICAgbV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWIyZnYoaW5k
ZXgsIG1ha2VHQ0dMU3BhbjwyPihkYXRhKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
Y2FzZSAzOgotICAgICAgICAgICAgbV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWIzZnYoaW5kZXgsIGRh
dGEpOworICAgICAgICAgICAgbV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWIzZnYoaW5kZXgsIG1ha2VH
Q0dMU3BhbjwzPihkYXRhKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSA0Ogot
ICAgICAgICAgICAgbV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWI0ZnYoaW5kZXgsIGRhdGEpOworICAg
ICAgICAgICAgbV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWI0ZnYoaW5kZXgsIG1ha2VHQ0dMU3Bhbjw0
PihkYXRhKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0KQEAgLTczMzAs
NyArNzM0Miw3IEBAIE9wdGlvbmFsPGJvb2w+IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnNp
bXVsYXRlVmVydGV4QXR0cmliMChHQ0dMdWludCBudW1WZXJ0CiAKICAgICBpZiAoYnVmZmVyRGF0
YVNpemUgPiBtX3ZlcnRleEF0dHJpYjBCdWZmZXJTaXplKSB7CiAgICAgICAgIG1fY29udGV4dC0+
bW92ZUVycm9yc1RvU3ludGhldGljRXJyb3JMaXN0KCk7Ci0gICAgICAgIG1fY29udGV4dC0+YnVm
ZmVyRGF0YShHcmFwaGljc0NvbnRleHRHTDo6QVJSQVlfQlVGRkVSLCBidWZmZXJEYXRhU2l6ZSwg
MCwgR3JhcGhpY3NDb250ZXh0R0w6OkRZTkFNSUNfRFJBVyk7CisgICAgICAgIG1fY29udGV4dC0+
YnVmZmVyRGF0YShHcmFwaGljc0NvbnRleHRHTDo6QVJSQVlfQlVGRkVSLCBidWZmZXJEYXRhU2l6
ZSwgR3JhcGhpY3NDb250ZXh0R0w6OkRZTkFNSUNfRFJBVyk7CiAgICAgICAgIGlmIChtX2NvbnRl
eHQtPmdldEVycm9yKCkgIT0gR3JhcGhpY3NDb250ZXh0R0w6Ok5PX0VSUk9SKSB7CiAgICAgICAg
ICAgICAvLyBXZSB3ZXJlIHVuYWJsZSB0byBjcmVhdGUgYSBidWZmZXIuCiAgICAgICAgICAgICBt
X3ZlcnRleEF0dHJpYjBVc2VkQmVmb3JlID0gZmFsc2U7CkBAIC03MzY1LDcgKzczNzcsNyBAQCBP
cHRpb25hbDxib29sPiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpzaW11bGF0ZVZlcnRleEF0
dHJpYjAoR0NHTHVpbnQgbnVtVmVydAogICAgICAgICBtX3ZlcnRleEF0dHJpYjBCdWZmZXJWYWx1
ZVsyXSA9IGF0dHJpYlZhbHVlLmZWYWx1ZVsyXTsKICAgICAgICAgbV92ZXJ0ZXhBdHRyaWIwQnVm
ZmVyVmFsdWVbM10gPSBhdHRyaWJWYWx1ZS5mVmFsdWVbM107CiAgICAgICAgIG1fZm9yY2VBdHRy
aWIwQnVmZmVyUmVmaWxsID0gZmFsc2U7Ci0gICAgICAgIG1fY29udGV4dC0+YnVmZmVyU3ViRGF0
YShHcmFwaGljc0NvbnRleHRHTDo6QVJSQVlfQlVGRkVSLCAwLCBidWZmZXJEYXRhU2l6ZSwgYnVm
ZmVyRGF0YS5nZXQoKSk7CisgICAgICAgIG1fY29udGV4dC0+YnVmZmVyU3ViRGF0YShHcmFwaGlj
c0NvbnRleHRHTDo6QVJSQVlfQlVGRkVSLCAwLCBtYWtlR0NHTFNwYW4oYnVmZmVyRGF0YS5nZXQo
KSwgYnVmZmVyRGF0YVNpemUpKTsKICAgICB9CiAgICAgbV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWJQ
b2ludGVyKDAsIDQsIEdyYXBoaWNzQ29udGV4dEdMOjpGTE9BVCwgMCwgMCwgMCk7CiAgICAgcmV0
dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlLmgKaW5kZXggYTcxZDAzNmFhMGRlYTUyYjQ1NzkwOWZiZmZkYzNh
ZGY4MGY1MTBjYy4uMDA3ODI4ZjdmZDU3M2VhNTAwNTk0MGVkNTZlNDM5NzUxNTc0M2U3NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2UuaApAQCAtMTAwNSwxMiArMTAwNSwxMyBAQCBwcm90ZWN0ZWQ6CiAKICAgICAvLyBI
ZWxwZXIgZnVuY3Rpb24gdG8gdmFsaWRhdGUgaW5wdXQgcGFyYW1ldGVycyBmb3IgdW5pZm9ybSBm
dW5jdGlvbnMuCiAgICAgYm9vbCB2YWxpZGF0ZVVuaWZvcm1Mb2NhdGlvbihjb25zdCBjaGFyKiBm
dW5jdGlvbk5hbWUsIGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKik7Ci0gICAgYm9vbCB2YWxp
ZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgY29uc3QgV2Vi
R0xVbmlmb3JtTG9jYXRpb24qLCBjb25zdCBGbG9hdDMyTGlzdCYsIEdDR0xzaXplaSByZXF1aXJl
ZE1pblNpemUsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKTsKLSAgICBi
b29sIHZhbGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBj
b25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiosIGNvbnN0IEludDMyTGlzdCYsIEdDR0xzaXplaSBy
ZXF1aXJlZE1pblNpemUsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKTsK
LSAgICBib29sIHZhbGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMoY29uc3QgY2hhciogZnVuY3Rpb25O
YW1lLCBjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiosIGNvbnN0IFVpbnQzMkxpc3QmLCBHQ0dM
c2l6ZWkgcmVxdWlyZWRNaW5TaXplLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xl
bmd0aCk7Ci0gICAgYm9vbCB2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKGNvbnN0IGNoYXIqIGZ1
bmN0aW9uTmFtZSwgY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qLCB2b2lkKiwgR0NHTHNpemVp
LCBHQ0dMc2l6ZWkgcmVxdWlyZWRNaW5TaXplLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50
IHNyY0xlbmd0aCk7Ci0gICAgYm9vbCB2YWxpZGF0ZVVuaWZvcm1NYXRyaXhQYXJhbWV0ZXJzKGNv
bnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qLCBHQ0dM
Ym9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEZsb2F0MzJMaXN0JiwgR0NHTHNpemVpIHJlcXVpcmVk
TWluU2l6ZSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpOwotICAgIGJv
b2wgdmFsaWRhdGVVbmlmb3JtTWF0cml4UGFyYW1ldGVycyhjb25zdCBjaGFyKiBmdW5jdGlvbk5h
bWUsIGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBj
b25zdCB2b2lkKiwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgcmVxdWlyZWRNaW5TaXplLCBHQ0dMdWlu
dCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCk7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUg
VCwgdHlwZW5hbWUgVHlwZWRMaXN0VHlwZT4KKyAgICBPcHRpb25hbDxHQ0dMU3Bhbjxjb25zdCBU
Pj4gdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycyhjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIGNv
bnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgY29uc3QgVHlwZWRMaXN0PFR5cGVk
TGlzdFR5cGUsIFQ+JiB2YWx1ZXMsIEdDR0xzaXplaSByZXF1aXJlZE1pblNpemUsIEdDR0x1aW50
IHNyY09mZnNldCA9IDAsIEdDR0x1aW50IHNyY0xlbmd0aCA9IDApCisgICAgeworICAgICAgICBy
ZXR1cm4gdmFsaWRhdGVVbmlmb3JtTWF0cml4UGFyYW1ldGVycyhmdW5jdGlvbk5hbWUsIGxvY2F0
aW9uLCBmYWxzZSwgdmFsdWVzLCByZXF1aXJlZE1pblNpemUsIHNyY09mZnNldCwgc3JjTGVuZ3Ro
KTsKKyAgICB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVHlwZWRMaXN0VHlw
ZT4KKyAgICBPcHRpb25hbDxHQ0dMU3Bhbjxjb25zdCBUPj4gdmFsaWRhdGVVbmlmb3JtTWF0cml4
UGFyYW1ldGVycyhjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIGNvbnN0IFdlYkdMVW5pZm9ybUxv
Y2F0aW9uKiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBUeXBlZExpc3Q8VHlwZWRMaXN0
VHlwZSwgVD4mLCBHQ0dMc2l6ZWkgcmVxdWlyZWRNaW5TaXplLCBHQ0dMdWludCBzcmNPZmZzZXQg
PSAwLCBHQ0dMdWludCBzcmNMZW5ndGggPSAwKTsKIAogICAgIC8vIEhlbHBlciBmdW5jdGlvbiB0
byB2YWxpZGF0ZSBwYXJhbWV0ZXJzIGZvciBidWZmZXJEYXRhLgogICAgIC8vIFJldHVybiB0aGUg
Y3VycmVudCBib3VuZCBidWZmZXIgdG8gdGFyZ2V0LCBvciAwIGlmIHBhcmFtZXRlcnMgYXJlIGlu
dmFsaWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRl
bnNpb25zR0wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0V4dGVuc2lvbnNH
TC5oCmluZGV4IGJhODY1YjMzMDhlNmM5NDU4MjIxMjIzNzc5NmQ2ZmQ1Nzc0ODQ3ZjguLjhmNjg0
MDYxZmE2ZGRiNzYzYTc1YjQ5ZjM4MmU1OTU1NmQ5OTJmZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0V4dGVuc2lvbnNHTC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0V4dGVuc2lvbnNHTC5oCkBAIC0yOTgsNyArMjk4LDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBwb3BHcm91cE1hcmtlckVYVCh2b2lkKSA9IDA7CiAK
ICAgICAvLyBHTF9BUkJfZHJhd19idWZmZXJzIC8gR0xfRVhUX2RyYXdfYnVmZmVycwotICAgIHZp
cnR1YWwgdm9pZCBkcmF3QnVmZmVyc0VYVChHQ0dMc2l6ZWkgbiwgY29uc3QgR0NHTGVudW0qIGJ1
ZnMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd0J1ZmZlcnNFWFQoR0NHTFNwYW48Y29uc3Qg
R0NHTGVudW0+IGJ1ZnMpID0gMDsKIAogICAgIC8vIEdMX0FOR0xFX2luc3RhbmNlZF9hcnJheXMK
ICAgICB2aXJ0dWFsIHZvaWQgZHJhd0FycmF5c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dM
aW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xzaXplaSBwcmltY291bnQpID0gMDsKQEAg
LTMwNywxNyArMzA3LDE3IEBAIHB1YmxpYzoKIAogICAgIC8vIEdMX0FOR0xFX3JvYnVzdF9jbGll
bnRfbWVtb3J5CiAgICAgdmlydHVhbCB2b2lkIHJlYWRQaXhlbHNSb2J1c3RBTkdMRShHQ0dMaW50
IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51
bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxl
bmd0aCwgR0NHTHNpemVpKiBjb2x1bW5zLCBHQ0dMc2l6ZWkqIHJvd3MsIEdDR0x2b2lkKiBwaXhl
bHMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdGV4SW1hZ2UyRFJvYnVzdEFOR0xFKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVp
IHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0
LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTHZvaWQqIHBpeGVs
cykgPSAwOworICAgIHZpcnR1YWwgdm9pZCB0ZXhJbWFnZTJEUm9idXN0QU5HTEUoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkg
d2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQs
IEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBwaXhlbHMpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgdGV4UGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQs
IEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGZsb2F0KiBwYXJh
bXMpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdGV4UGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NH
TGludCogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHRleFN1YkltYWdlMkRSb2J1c3RB
TkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NH
TGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVt
IGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0x2b2lk
KiBwaXhlbHMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgY29tcHJlc3NlZFRleEltYWdlMkRSb2J1
c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFs
Zm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVy
LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTHZvaWQq
IGRhdGEpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgY29tcHJlc3NlZFRleFN1YkltYWdlMkRSb2J1
c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwg
R0NHTGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xl
bnVtIGZvcm1hdCwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0
IEdDR0x2b2lkKiBkYXRhKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGNvbXByZXNzZWRUZXhJbWFn
ZTNEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBp
bnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6
ZWkgZGVwdGgsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgY29uc3QgR0NHTHZvaWQqIGRhdGEpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgY29t
cHJlc3NlZFRleFN1YkltYWdlM0RSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQg
bGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMaW50IHpvZmZzZXQs
IEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dM
ZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xzaXplaSBidWZTaXplLCBjb25z
dCBHQ0dMdm9pZCogZGF0YSkgPSAwOwotCi0gICAgdmlydHVhbCB2b2lkIHRleEltYWdlM0RSb2J1
c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgaW50ZXJuYWxm
b3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRo
LCBHQ0dMaW50IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTHZvaWQqIHBpeGVscykgPSAwOwotICAgIHZpcnR1YWwgdm9p
ZCB0ZXhTdWJJbWFnZTNEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVs
LCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTGludCB6b2Zmc2V0LCBHQ0dM
c2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGVudW0g
Zm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTHZvaWQq
IHBpeGVscykgPSAwOworICAgIHZpcnR1YWwgdm9pZCB0ZXhTdWJJbWFnZTJEUm9idXN0QU5HTEUo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQg
eW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3Jt
YXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBwaXhlbHMpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgY29tcHJlc3NlZFRleEltYWdlMkRSb2J1c3RBTkdMRShHQ0dMZW51
bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6
ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMc2l6ZWkgaW1h
Z2VTaXplLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gZGF0YSkgPSAwOworICAgIHZpcnR1YWwg
dm9pZCBjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xzaXpl
aSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMc2l6ZWkgaW1h
Z2VTaXplLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gZGF0YSkgPSAwOworICAgIHZpcnR1YWwg
dm9pZCBjb21wcmVzc2VkVGV4SW1hZ2UzRFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NH
TGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NH
THNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMaW50IGJvcmRlciwgR0NHTHNpemVp
IGltYWdlU2l6ZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgY29tcHJlc3NlZFRleFN1YkltYWdlM0RSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dM
aW50IHpvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVp
IGRlcHRoLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xTcGFuPGNv
bnN0IEdDR0x2b2lkPiBkYXRhKSA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgdGV4SW1hZ2UzRFJv
YnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCBpbnRlcm5h
bGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVw
dGgsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xT
cGFuPGNvbnN0IEdDR0x2b2lkPiBwaXhlbHMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdGV4U3Vi
SW1hZ2UzRFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGlu
dCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xpbnQgem9mZnNldCwgR0NHTHNpemVpIHdp
ZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xlbnVtIGZvcm1hdCwg
R0NHTGVudW0gdHlwZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IHBpeGVscykgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCBnZXRRdWVyeWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50
KiBwYXJhbXMpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0UXVlcnlPYmplY3R1aXZSb2J1c3RB
TkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dM
c2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQqIHBhcmFtcykgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBn
ZXRCdWZmZXJQb2ludGVydlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5h
bWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHZvaWQqKiBwYXJh
bXMpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dEdMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHRHTC5oCmluZGV4IDBhNzE1NDBjZTgwMjBmZDlmNTgxNjg2MDNmNjc2OWI5NDQ1
MjI0MTUuLjhlYjJjZWZjNzM3OGQ0NTA3OGQxOTBhNWYxMTNmYjgyM2YxZGI5NmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wu
aApAQCAtMzczLDcgKzM3Myw3IEBAIHB1YmxpYzoKICAgICAgICAgVU5QQUNLX0NPTE9SU1BBQ0Vf
Q09OVkVSU0lPTl9XRUJHTCA9IDB4OTI0MywKICAgICAgICAgQlJPV1NFUl9ERUZBVUxUX1dFQkdM
ID0gMHg5MjQ0LAogICAgICAgICBWRVJURVhfQVRUUklCX0FSUkFZX0RJVklTT1JfQU5HTEUgPSAw
eDg4RkUsCi0gICAgICAgIAorCiAgICAgICAgIC8vIFdlYkdMMiBjb25zdGFudHMKICAgICAgICAg
UkVBRF9CVUZGRVIgPSAweDBDMDIsCiAgICAgICAgIFVOUEFDS19ST1dfTEVOR1RIID0gMHgwQ0Yy
LApAQCAtMTA2Myw0OSArMTA2Myw0OSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHRleFBh
cmFtZXRlcmkoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCBwYXJhbSkg
PSAwOwogCiAgICAgdmlydHVhbCB2b2lkIHVuaWZvcm0xZihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dM
ZmxvYXQgeCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtMWZ2KEdDR0xpbnQgbG9jYXRp
b24sIEdDR0xzaXplaSwgY29uc3QgR0NHTGZsb2F0KiB2KSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IHVuaWZvcm0xZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiB2
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHVuaWZvcm0xaShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dM
aW50IHgpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybTFpdihHQ0dMaW50IGxvY2F0aW9u
LCBHQ0dMc2l6ZWksIGNvbnN0IEdDR0xpbnQqIHYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdW5p
Zm9ybTFpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50PiB2KSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIHVuaWZvcm0yZihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMZmxvYXQg
eCwgR0NHTGZsb2F0IHkpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybTJmdihHQ0dMaW50
IGxvY2F0aW9uLCBHQ0dMc2l6ZWksIGNvbnN0IEdDR0xmbG9hdCogdikgPSAwOworICAgIHZpcnR1
YWwgdm9pZCB1bmlmb3JtMmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xm
bG9hdD4gdikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtMmkoR0NHTGludCBsb2NhdGlv
biwgR0NHTGludCB4LCBHQ0dMaW50IHkpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybTJp
dihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWksIGNvbnN0IEdDR0xpbnQqIHYpID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgdW5pZm9ybTJpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25z
dCBHQ0dMaW50PiB2KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHVuaWZvcm0zZihHQ0dMaW50IGxv
Y2F0aW9uLCBHQ0dMZmxvYXQgeCwgR0NHTGZsb2F0IHksIEdDR0xmbG9hdCB6KSA9IDA7Ci0gICAg
dmlydHVhbCB2b2lkIHVuaWZvcm0zZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpLCBjb25z
dCBHQ0dMZmxvYXQqIHYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybTNmdihHQ0dMaW50
IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IHYpID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgdW5pZm9ybTNpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xpbnQgeCwgR0NHTGludCB5LCBH
Q0dMaW50IHopID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybTNpdihHQ0dMaW50IGxvY2F0
aW9uLCBHQ0dMc2l6ZWksIGNvbnN0IEdDR0xpbnQqIHYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
dW5pZm9ybTNpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50PiB2KSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIHVuaWZvcm00ZihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMZmxv
YXQgeCwgR0NHTGZsb2F0IHksIEdDR0xmbG9hdCB6LCBHQ0dMZmxvYXQgdykgPSAwOwotICAgIHZp
cnR1YWwgdm9pZCB1bmlmb3JtNGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSwgY29uc3Qg
R0NHTGZsb2F0KiB2KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVuaWZvcm00ZnYoR0NHTGludCBs
b2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiB2KSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIHVuaWZvcm00aShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NH
TGludCB6LCBHQ0dMaW50IHcpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybTRpdihHQ0dM
aW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWksIGNvbnN0IEdDR0xpbnQqIHYpID0gMDsKLSAgICB2aXJ0
dWFsIHZvaWQgdW5pZm9ybU1hdHJpeDJmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWksIEdD
R0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiB2YWx1ZSkgPSAwOwotICAgIHZp
cnR1YWwgdm9pZCB1bmlmb3JtTWF0cml4M2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSwg
R0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHQ0dMZmxvYXQqIHZhbHVlKSA9IDA7Ci0gICAg
dmlydHVhbCB2b2lkIHVuaWZvcm1NYXRyaXg0ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVp
LCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogdmFsdWUpID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgdW5pZm9ybTRpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25z
dCBHQ0dMaW50PiB2KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVuaWZvcm1NYXRyaXgyZnYoR0NH
TGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dM
ZmxvYXQ+IHZhbHVlKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVuaWZvcm1NYXRyaXgzZnYoR0NH
TGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dM
ZmxvYXQ+IHZhbHVlKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVuaWZvcm1NYXRyaXg0ZnYoR0NH
TGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dM
ZmxvYXQ+IHZhbHVlKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgdXNlUHJvZ3JhbShQbGF0Zm9y
bUdMT2JqZWN0KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHZhbGlkYXRlUHJvZ3JhbShQbGF0Zm9y
bUdMT2JqZWN0KSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgdmVydGV4QXR0cmliMWYoR0NHTHVp
bnQgaW5kZXgsIEdDR0xmbG9hdCB4KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHZlcnRleEF0dHJp
YjFmdihHQ0dMdWludCBpbmRleCwgY29uc3QgR0NHTGZsb2F0KiB2YWx1ZXMpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgdmVydGV4QXR0cmliMWZ2KEdDR0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxjb25z
dCBHQ0dMZmxvYXQsIDE+IHZhbHVlcykgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB2ZXJ0ZXhBdHRy
aWIyZihHQ0dMdWludCBpbmRleCwgR0NHTGZsb2F0IHgsIEdDR0xmbG9hdCB5KSA9IDA7Ci0gICAg
dmlydHVhbCB2b2lkIHZlcnRleEF0dHJpYjJmdihHQ0dMdWludCBpbmRleCwgY29uc3QgR0NHTGZs
b2F0KiB2YWx1ZXMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdmVydGV4QXR0cmliMmZ2KEdDR0x1
aW50IGluZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQsIDI+IHZhbHVlcykgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCB2ZXJ0ZXhBdHRyaWIzZihHQ0dMdWludCBpbmRleCwgR0NHTGZsb2F0IHgs
IEdDR0xmbG9hdCB5LCBHQ0dMZmxvYXQgeikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB2ZXJ0ZXhB
dHRyaWIzZnYoR0NHTHVpbnQgaW5kZXgsIGNvbnN0IEdDR0xmbG9hdCogdmFsdWVzKSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIHZlcnRleEF0dHJpYjNmdihHQ0dMdWludCBpbmRleCwgR0NHTFNwYW48
Y29uc3QgR0NHTGZsb2F0LCAzPiB2YWx1ZXMpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdmVydGV4
QXR0cmliNGYoR0NHTHVpbnQgaW5kZXgsIEdDR0xmbG9hdCB4LCBHQ0dMZmxvYXQgeSwgR0NHTGZs
b2F0IHosIEdDR0xmbG9hdCB3KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHZlcnRleEF0dHJpYjRm
dihHQ0dMdWludCBpbmRleCwgY29uc3QgR0NHTGZsb2F0KiB2YWx1ZXMpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgdmVydGV4QXR0cmliNGZ2KEdDR0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxjb25zdCBH
Q0dMZmxvYXQsIDQ+IHZhbHVlcykgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIHZlcnRleEF0dHJp
YlBvaW50ZXIoR0NHTHVpbnQgaW5kZXgsIEdDR0xpbnQgc2l6ZSwgR0NHTGVudW0gdHlwZSwgR0NH
TGJvb2xlYW4gbm9ybWFsaXplZCwgR0NHTHNpemVpIHN0cmlkZSwgR0NHTGludHB0ciBvZmZzZXQp
ID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCB2aWV3cG9ydChHQ0dMaW50IHgsIEdDR0xpbnQgeSwg
R0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KSA9IDA7CiAKICAgICB2aXJ0dWFsIHZv
aWQgYnVmZmVyRGF0YShHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaXB0ciwgR0NHTGVudW0gdXNh
Z2UpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgYnVmZmVyRGF0YShHQ0dMZW51bSB0YXJnZXQsIEdD
R0xzaXplaXB0ciwgY29uc3QgR0NHTHZvaWQqIGRhdGEsIEdDR0xlbnVtIHVzYWdlKSA9IDA7Ci0g
ICAgdmlydHVhbCB2b2lkIGJ1ZmZlclN1YkRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50cHRy
IG9mZnNldCwgR0NHTHNpemVpcHRyLCBjb25zdCBHQ0dMdm9pZCogZGF0YSkgPSAwOworICAgIHZp
cnR1YWwgdm9pZCBidWZmZXJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTFNwYW48Y29uc3QgR0NH
THZvaWQ+IGRhdGEsIEdDR0xlbnVtIHVzYWdlKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGJ1ZmZl
clN1YkRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50cHRyIG9mZnNldCwgR0NHTFNwYW48Y29u
c3QgR0NHTHZvaWQ+IGRhdGEpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCByZWFkUGl4ZWxzKEdD
R0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdD
R0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHZvaWQqIGRhdGEpID0gMDsKIAotICAg
IHZpcnR1YWwgYm9vbCB0ZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwg
R0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdo
dCwgR0NHTGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgY29uc3Qg
R0NHTHZvaWQqIHBpeGVscykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB0ZXhTdWJJbWFnZTJEKEdD
R0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlv
ZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0
LCBHQ0dMZW51bSB0eXBlLCBjb25zdCBHQ0dMdm9pZCogcGl4ZWxzKSA9IDA7CisgICAgdmlydHVh
bCBib29sIHRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51
bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dM
aW50IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCAgR0NHTFNwYW48Y29u
c3QgR0NHTHZvaWQ+IHBpeGVscykgPSAwOworICAgIHZpcnR1YWwgdm9pZCB0ZXhTdWJJbWFnZTJE
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50
IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9y
bWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gcGl4ZWxzKSA9IDA7
CiAKICAgICB2aXJ0dWFsIHZvaWQgZHJhd0FycmF5c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBH
Q0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xzaXplaSBwcmltY291bnQpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgZHJhd0VsZW1lbnRzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdD
R0xzaXplaSBjb3VudCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQsIEdDR0xzaXpl
aSBwcmltY291bnQpID0gMDsKQEAgLTExMjUsOCArMTEyNSw4IEBAIHB1YmxpYzoKIAogICAgIHZp
cnR1YWwgdm9pZCBibGl0RnJhbWVidWZmZXIoR0NHTGludCBzcmNYMCwgR0NHTGludCBzcmNZMCwg
R0NHTGludCBzcmNYMSwgR0NHTGludCBzcmNZMSwgR0NHTGludCBkc3RYMCwgR0NHTGludCBkc3RZ
MCwgR0NHTGludCBkc3RYMSwgR0NHTGludCBkc3RZMSwgR0NHTGJpdGZpZWxkIG1hc2ssIEdDR0xl
bnVtIGZpbHRlcikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBmcmFtZWJ1ZmZlclRleHR1cmVMYXll
cihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGF0dGFjaG1lbnQsIFBsYXRmb3JtR0xPYmplY3Qg
dGV4dHVyZSwgR0NHTGludCBsZXZlbCwgR0NHTGludCBsYXllcikgPSAwOwotICAgIHZpcnR1YWwg
dm9pZCBpbnZhbGlkYXRlRnJhbWVidWZmZXIoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgbnVt
QXR0YWNobWVudHMsIGNvbnN0IEdDR0xlbnVtKiBhdHRhY2htZW50cykgPSAwOwotICAgIHZpcnR1
YWwgdm9pZCBpbnZhbGlkYXRlU3ViRnJhbWVidWZmZXIoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6
ZWkgbnVtQXR0YWNobWVudHMsIGNvbnN0IEdDR0xlbnVtKiBhdHRhY2htZW50cywgR0NHTGludCB4
LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkgPSAwOworICAg
IHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlRnJhbWVidWZmZXIoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
U3Bhbjxjb25zdCBHQ0dMZW51bT4gYXR0YWNobWVudHMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
aW52YWxpZGF0ZVN1YkZyYW1lYnVmZmVyKEdDR0xlbnVtIHRhcmdldCwgR0NHTFNwYW48Y29uc3Qg
R0NHTGVudW0+IGF0dGFjaG1lbnRzLCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdp
ZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHJlYWRCdWZmZXIo
R0NHTGVudW0gc3JjKSA9IDA7CiAKICAgICAvLyBnZXRJbnRlcm5hbEZvcm1hdFBhcmFtZXRlcgpA
QCAtMTE0OCwyOCArMTE0OCwyOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHVuaWZvcm0y
dWkoR0NHTGludCBsb2NhdGlvbiwgR0NHTHVpbnQgdjAsIEdDR0x1aW50IHYxKSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIHVuaWZvcm0zdWkoR0NHTGludCBsb2NhdGlvbiwgR0NHTHVpbnQgdjAsIEdD
R0x1aW50IHYxLCBHQ0dMdWludCB2MikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtNHVp
KEdDR0xpbnQgbG9jYXRpb24sIEdDR0x1aW50IHYwLCBHQ0dMdWludCB2MSwgR0NHTHVpbnQgdjIs
IEdDR0x1aW50IHYzKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHVuaWZvcm0xdWl2KEdDR0xpbnQg
bG9jYXRpb24sIGNvbnN0IEdDR0x1aW50KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1
aW50IHNyY0xlbmd0aCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtMnVpdihHQ0dMaW50
IGxvY2F0aW9uLCBjb25zdCBHQ0dMdWludCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dM
dWludCBzcmNMZW5ndGgpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybTN1aXYoR0NHTGlu
dCBsb2NhdGlvbiwgY29uc3QgR0NHTHVpbnQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NH
THVpbnQgc3JjTGVuZ3RoKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHVuaWZvcm00dWl2KEdDR0xp
bnQgbG9jYXRpb24sIGNvbnN0IEdDR0x1aW50KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdD
R0x1aW50IHNyY0xlbmd0aCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtTWF0cml4Mngz
ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHQ0dMZmxv
YXQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKSA9IDA7Ci0g
ICAgdmlydHVhbCB2b2lkIHVuaWZvcm1NYXRyaXgzeDJmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dM
Ym9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zm
c2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybU1h
dHJpeDJ4NGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3Qg
R0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkg
PSAwOwotICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtTWF0cml4NHgyZnYoR0NHTGludCBsb2NhdGlv
biwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50
IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHVu
aWZvcm1NYXRyaXgzeDRmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2Us
IGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNM
ZW5ndGgpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybU1hdHJpeDR4M2Z2KEdDR0xpbnQg
bG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBH
Q0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkgPSAwOworICAgIHZpcnR1YWwg
dm9pZCB1bmlmb3JtMXVpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdWlu
dD4gZGF0YSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtMnVpdihHQ0dMaW50IGxvY2F0
aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdWludD4gZGF0YSkgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCB1bmlmb3JtM3VpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdWludD4g
ZGF0YSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtNHVpdihHQ0dMaW50IGxvY2F0aW9u
LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdWludD4gZGF0YSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCB1
bmlmb3JtTWF0cml4MngzZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3Nl
LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
dW5pZm9ybU1hdHJpeDN4MmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9z
ZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiBkYXRhKSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IHVuaWZvcm1NYXRyaXgyeDRmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bv
c2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gZGF0YSkgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCB1bmlmb3JtTWF0cml4NHgyZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNw
b3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgdW5pZm9ybU1hdHJpeDN4NGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5z
cG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiBkYXRhKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIHVuaWZvcm1NYXRyaXg0eDNmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFu
c3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gZGF0YSkgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCB2ZXJ0ZXhBdHRyaWJJNGkoR0NHTHVpbnQgaW5kZXgsIEdDR0xpbnQgeCwgR0NHTGludCB5
LCBHQ0dMaW50IHosIEdDR0xpbnQgdykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB2ZXJ0ZXhBdHRy
aWJJNGl2KEdDR0x1aW50IGluZGV4LCBjb25zdCBHQ0dMaW50KiB2YWx1ZXMpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgdmVydGV4QXR0cmliSTRpdihHQ0dMdWludCBpbmRleCwgR0NHTFNwYW48Y29u
c3QgR0NHTGludCwgND4gdmFsdWVzKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHZlcnRleEF0dHJp
Ykk0dWkoR0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50IHgsIEdDR0x1aW50IHksIEdDR0x1aW50IHos
IEdDR0x1aW50IHcpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdmVydGV4QXR0cmliSTR1aXYoR0NH
THVpbnQgaW5kZXgsIGNvbnN0IEdDR0x1aW50KiB2YWx1ZXMpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgdmVydGV4QXR0cmliSTR1aXYoR0NHTHVpbnQgaW5kZXgsIEdDR0xTcGFuPGNvbnN0IEdDR0x1
aW50LCA0PiB2YWx1ZXMpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdmVydGV4QXR0cmliSVBvaW50
ZXIoR0NHTHVpbnQgaW5kZXgsIEdDR0xpbnQgc2l6ZSwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVp
IHN0cmlkZSwgR0NHTGludHB0ciBvZmZzZXQpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBkcmF3
UmFuZ2VFbGVtZW50cyhHQ0dMZW51bSBtb2RlLCBHQ0dMdWludCBzdGFydCwgR0NHTHVpbnQgZW5k
LCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KSA9IDA7
CiAKLSAgICB2aXJ0dWFsIHZvaWQgZHJhd0J1ZmZlcnMoR0NHTHNpemVpIG4sIGNvbnN0IEdDR0xl
bnVtKiBidWZzKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGNsZWFyQnVmZmVyaXYoR0NHTGVudW0g
YnVmZmVyLCBHQ0dMaW50IGRyYXdidWZmZXIsIGNvbnN0IEdDR0xpbnQqIHZhbHVlcywgR0NHTHVp
bnQgc3JjT2Zmc2V0KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGNsZWFyQnVmZmVydWl2KEdDR0xl
bnVtIGJ1ZmZlciwgR0NHTGludCBkcmF3YnVmZmVyLCBjb25zdCBHQ0dMdWludCogdmFsdWVzLCBH
Q0dMdWludCBzcmNPZmZzZXQpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgY2xlYXJCdWZmZXJmdihH
Q0dMZW51bSBidWZmZXIsIEdDR0xpbnQgZHJhd2J1ZmZlciwgY29uc3QgR0NHTGZsb2F0KiB2YWx1
ZXMsIEdDR0x1aW50IHNyY09mZnNldCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkcmF3QnVmZmVy
cyhHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4gYnVmcykgPSAwOworICAgIHZpcnR1YWwgdm9pZCBj
bGVhckJ1ZmZlcml2KEdDR0xlbnVtIGJ1ZmZlciwgR0NHTGludCBkcmF3YnVmZmVyLCBHQ0dMU3Bh
bjxjb25zdCBHQ0dMaW50PiB2YWx1ZXMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY2xlYXJCdWZm
ZXJ1aXYoR0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50IGRyYXdidWZmZXIsIEdDR0xTcGFuPGNvbnN0
IEdDR0x1aW50PiB2YWx1ZXMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY2xlYXJCdWZmZXJmdihH
Q0dMZW51bSBidWZmZXIsIEdDR0xpbnQgZHJhd2J1ZmZlciwgR0NHTFNwYW48Y29uc3QgR0NHTGZs
b2F0PiB2YWx1ZXMpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY2xlYXJCdWZmZXJmaShHQ0dMZW51
bSBidWZmZXIsIEdDR0xpbnQgZHJhd2J1ZmZlciwgR0NHTGZsb2F0IGRlcHRoLCBHQ0dMaW50IHN0
ZW5jaWwpID0gMDsKIAogICAgIHZpcnR1YWwgUGxhdGZvcm1HTE9iamVjdCBjcmVhdGVRdWVyeSgp
ID0gMDsKQEAgLTEyMjEsMjAgKzEyMjEsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBTdHJpbmcg
Z2V0QWN0aXZlVW5pZm9ybUJsb2NrTmFtZShQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1
aW50IHVuaWZvcm1CbG9ja0luZGV4KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHVuaWZvcm1CbG9j
a0JpbmRpbmcoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMdWludCB1bmlmb3JtQmxvY2tJ
bmRleCwgR0NHTHVpbnQgdW5pZm9ybUJsb2NrQmluZGluZykgPSAwOwogCi0gICAgdmlydHVhbCB2
b2lkIHVuaWZvcm0xZnYoR0NHTGludCBsb2NhdGlvbiwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBH
Q0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkgPSAwOwotICAgIHZpcnR1YWwg
dm9pZCB1bmlmb3JtMmZ2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwg
R0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpID0gMDsKLSAgICB2aXJ0dWFs
IHZvaWQgdW5pZm9ybTNmdihHQ0dMaW50IGxvY2F0aW9uLCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEs
IEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKSA9IDA7Ci0gICAgdmlydHVh
bCB2b2lkIHVuaWZvcm00ZnYoR0NHTGludCBsb2NhdGlvbiwgY29uc3QgR0NHTGZsb2F0KiBkYXRh
LCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkgPSAwOwotCi0gICAgdmly
dHVhbCB2b2lkIHVuaWZvcm0xaXYoR0NHTGludCBsb2NhdGlvbiwgY29uc3QgR0NHTGludCogZGF0
YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpID0gMDsKLSAgICB2aXJ0
dWFsIHZvaWQgdW5pZm9ybTJpdihHQ0dMaW50IGxvY2F0aW9uLCBjb25zdCBHQ0dMaW50KiBkYXRh
LCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkgPSAwOwotICAgIHZpcnR1
YWwgdm9pZCB1bmlmb3JtM2l2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0xpbnQqIGRhdGEs
IEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKSA9IDA7Ci0gICAgdmlydHVh
bCB2b2lkIHVuaWZvcm00aXYoR0NHTGludCBsb2NhdGlvbiwgY29uc3QgR0NHTGludCogZGF0YSwg
R0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpID0gMDsKLQotICAgIHZpcnR1
YWwgdm9pZCB1bmlmb3JtTWF0cml4MmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRy
YW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1
aW50IHNyY0xlbmd0aCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtTWF0cml4M2Z2KEdD
R0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiBk
YXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkgPSAwOwotICAgIHZp
cnR1YWwgdm9pZCB1bmlmb3JtTWF0cml4NGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFu
IHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdD
R0x1aW50IHNyY0xlbmd0aCkgPSAwOwotCiAgICAgdmlydHVhbCB2b2lkIGdldEFjdGl2ZVVuaWZv
cm1CbG9ja2l2KEdDR0x1aW50IHByb2dyYW0sIEdDR0x1aW50IHVuaWZvcm1CbG9ja0luZGV4LCBH
Q0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGludD4gcGFyYW1zKSA9IDA7CiAKICAgICAvLyBP
dGhlciBmdW5jdGlvbnMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc1R5cGVzR0wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzVHlwZXNHTC5oCmluZGV4IGU3YzY5YjI4ZGNlNDY1ODI1NzU3NzMzMzI1YjhmNDRk
ZjI3MjA3YjkuLjA2MmU1NTY3YTJjMTlkYjdiMjgxOTFiYWE4NWQzNzdjYzAxNmM0ZTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXNHTC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXNHTC5o
CkBAIC02OCw2ICs2OCwxMCBAQCBzdHJ1Y3QgR0NHTFNwYW4gewogICAgIEdDR0xTcGFuKFQgKCZh
cnJheSlbRXh0ZW50XSkKICAgICAgICAgOiBkYXRhKGFycmF5KQogICAgIHsgfQorICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFU+CisgICAgR0NHTFNwYW4oY29uc3QgR0NHTFNwYW48VSwgRXh0ZW50PiYg
b3RoZXIsIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19jb252ZXJ0aWJsZV92PFUoKilbXSwgVCgq
KVtdPiwgbnVsbHB0cl90PiA9IG51bGxwdHIpCisgICAgICAgIDogZGF0YShvdGhlci5kYXRhKQor
ICAgIHsgfQogICAgIFQmIG9wZXJhdG9yW10oc2l6ZV90IGkpIHsgUkVMRUFTRV9BU1NFUlQoZGF0
YSAmJiBpIDwgYnVmU2l6ZSk7IHJldHVybiBkYXRhW2ldOyB9CiAgICAgVCYgb3BlcmF0b3IqKCkg
eyBSRUxFQVNFX0FTU0VSVChkYXRhICYmIGJ1ZlNpemUpOyByZXR1cm4gKmRhdGE7IH0KICAgICBU
KiBkYXRhOwpAQCAtODAsMTEgKzg0LDE4IEBAIHN0cnVjdCBHQ0dMU3BhbjxULCBzdGQ6Om51bWVy
aWNfbGltaXRzPHNpemVfdD46Om1heCgpPiB7CiAgICAgICAgIDogZGF0YShhcnJheSkKICAgICAg
ICAgLCBidWZTaXplKGJ1ZlNpemVfKQogICAgIHsgfQotICAgIHRlbXBsYXRlPHNpemVfdCBTej4g
R0NHTFNwYW4oVCAoJmFycmF5KVtTel0pCisgICAgdGVtcGxhdGU8c2l6ZV90IFN6PgorICAgIEdD
R0xTcGFuKFQgKCZhcnJheSlbU3pdKQogICAgICAgICA6IGRhdGEoYXJyYXkpCiAgICAgICAgICwg
YnVmU2l6ZShTeikKICAgICB7IH0KLSAgICBHQ0dMU3BhbihXVEY6OlZlY3RvcjxUPiYgYXJyYXkp
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVSwgc2l6ZV90IFVFeHRlbnQ+CisgICAgR0NHTFNwYW4o
Y29uc3QgR0NHTFNwYW48VSwgVUV4dGVudD4mIG90aGVyLCBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6
aXNfY29udmVydGlibGVfdjxVKCopW10sIFQoKilbXT4sIG51bGxwdHJfdD4gPSBudWxscHRyKQor
ICAgICAgICA6IGRhdGEob3RoZXIuZGF0YSkKKyAgICAgICAgLCBidWZTaXplKG90aGVyLmJ1ZlNp
emUpCisgICAgeyB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVSwgc2l6ZV90IGlubGluZUNhcGFj
aXR5PgorICAgIEdDR0xTcGFuKFdURjo6VmVjdG9yPFUsIGlubGluZUNhcGFjaXR5PiYgYXJyYXks
IHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19jb252ZXJ0aWJsZV92PFUoKilbXSwgVCgqKVtdPiwg
bnVsbHB0cl90PiA9IG51bGxwdHIpCiAgICAgICAgIDogZGF0YShhcnJheS5kYXRhKCkpCiAgICAg
ICAgICwgYnVmU2l6ZShhcnJheS5zaXplKCkpCiAgICAgeyB9CkBAIC05NCw2ICsxMDUsNTQgQEAg
c3RydWN0IEdDR0xTcGFuPFQsIHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCk+IHsK
ICAgICBjb25zdCBzaXplX3QgYnVmU2l6ZTsKIH07CiAKK3RlbXBsYXRlPD4KK3N0cnVjdCBHQ0dM
U3BhbjxHQ0dMdm9pZD4geworICAgIEdDR0xTcGFuKEdDR0x2b2lkKiBhcnJheSwgc2l6ZV90IGJ1
ZlNpemVfKQorICAgICAgICA6IGRhdGEoYXJyYXkpCisgICAgICAgICwgYnVmU2l6ZShidWZTaXpl
XykKKyAgICB7IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVLCBzaXplX3QgU3o+CisgICAgR0NH
TFNwYW4oVSAoJmFycmF5KVtTel0pCisgICAgICAgIDogZGF0YShhcnJheSkKKyAgICAgICAgLCBi
dWZTaXplKFN6ICogc2l6ZW9mKFUpKQorICAgIHsgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUs
IHNpemVfdCBVRXh0ZW50PgorICAgIEdDR0xTcGFuKGNvbnN0IEdDR0xTcGFuPFUsIFVFeHRlbnQ+
JiBvdGhlcikKKyAgICAgICAgOiBkYXRhKG90aGVyLmRhdGEpCisgICAgICAgICwgYnVmU2l6ZShv
dGhlci5idWZTaXplICogc2l6ZW9mKFUpKQorICAgIHsgfQorICAgIEdDR0x2b2lkKiBkYXRhOwor
ICAgIGNvbnN0IHNpemVfdCBidWZTaXplOworfTsKKwordGVtcGxhdGU8Pgorc3RydWN0IEdDR0xT
cGFuPGNvbnN0IEdDR0x2b2lkPiB7CisgICAgR0NHTFNwYW4oY29uc3QgR0NHTHZvaWQqIGFycmF5
LCBzaXplX3QgYnVmU2l6ZV8pCisgICAgICAgIDogZGF0YShhcnJheSkKKyAgICAgICAgLCBidWZT
aXplKGJ1ZlNpemVfKQorICAgIHsgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUsIHNpemVfdCBT
ej4KKyAgICBHQ0dMU3BhbihVICgmYXJyYXkpW1N6XSkKKyAgICAgICAgOiBkYXRhKGFycmF5KQor
ICAgICAgICAsIGJ1ZlNpemUoU3ogKiBzaXplb2YoVSkpCisgICAgeyB9CisgICAgR0NHTFNwYW4o
Y29uc3QgR0NHTFNwYW48R0NHTHZvaWQ+JiBvdGhlcikKKyAgICAgICAgOiBkYXRhKG90aGVyLmRh
dGEpCisgICAgICAgICwgYnVmU2l6ZShvdGhlci5idWZTaXplKQorICAgIHsgfQorICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFUsIHNpemVfdCBVRXh0ZW50PgorICAgIEdDR0xTcGFuKGNvbnN0IEdDR0xT
cGFuPFUsIFVFeHRlbnQ+JiBvdGhlcikKKyAgICAgICAgOiBkYXRhKG90aGVyLmRhdGEpCisgICAg
ICAgICwgYnVmU2l6ZShvdGhlci5idWZTaXplICogc2l6ZW9mKFUpKQorICAgIHsgfQorICAgIEdD
R0xTcGFuKGludHB0cl90IG9mZnNldCkKKyAgICAgICAgOiBkYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgR0NHTHZvaWQqPihvZmZzZXQpKQorICAgICAgICAsIGJ1ZlNpemUoMCkKKyAgICB7IH0K
KyAgICBjb25zdCBHQ0dMdm9pZCogZGF0YTsKKyAgICBjb25zdCBzaXplX3QgYnVmU2l6ZTsKK307
CisKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBOPgogR0NHTFNwYW4oVCAoJilbTl0pIC0+
IEdDR0xTcGFuPFQsIE4+OwogCkBAIC0xMDUsMyArMTY0LDkgQEAgR0NHTFNwYW48VD4gbWFrZUdD
R0xTcGFuKFQqIGRhdGEsIHNpemVfdCBjb3VudCkKIHsKICAgICByZXR1cm4gR0NHTFNwYW48VD4g
eyBkYXRhLCBjb3VudCB9OwogfQorCit0ZW1wbGF0ZTxzaXplX3QgRXh0ZW50LCB0eXBlbmFtZSBU
PgorR0NHTFNwYW48VCwgRXh0ZW50PiBtYWtlR0NHTFNwYW4oVCogZGF0YSkKK3sKKyAgICByZXR1
cm4gR0NHTFNwYW48VCwgRXh0ZW50PiB7IGRhdGEgfTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmNw
cAppbmRleCA0ZDAyNWI5OTM0MjI3NzZiOWI1ZjRhYWJjMzlhMGM3ODkxOTQwYTk5Li4xMDcxM2Fj
NTZkMGRlY2FkOTFiYzVjYjE2NzQxYWIyOWI0NWFlNGQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUu
Y3BwCkBAIC0yMjcsMTIgKzIyNywxMiBAQCBib29sIEV4dGVuc2lvbnNHTEFOR0xFOjpzdXBwb3J0
c0V4dGVuc2lvbihjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0
ZW5zaW9ucy5jb250YWlucyhuYW1lKSB8fCBtX3JlcXVlc3RhYmxlRXh0ZW5zaW9ucy5jb250YWlu
cyhuYW1lKTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6ZHJhd0J1ZmZlcnNFWFQoR0NH
THNpemVpIG4sIGNvbnN0IEdDR0xlbnVtKiBidWZzKQordm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6
ZHJhd0J1ZmZlcnNFWFQoR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+IGJ1ZnMpCiB7CiAgICAgaWYg
KCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBnbDo6RHJhd0J1ZmZlcnNFWFQobiwgYnVmcyk7CisgICAgZ2w6OkRyYXdCdWZmZXJzRVhUKGJ1
ZnMuYnVmU2l6ZSwgYnVmcy5kYXRhKTsKIH0KIAogdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6ZHJh
d0FycmF5c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkg
Y291bnQsIEdDR0xzaXplaSBwcmltY291bnQpCkBAIC0yODYsMTQgKzI4NiwxNCBAQCB2b2lkIEV4
dGVuc2lvbnNHTEFOR0xFOjpyZWFkUGl4ZWxzUm9idXN0QU5HTEUoaW50IHgsIGludCB5LCBHQ0dM
c2l6ZWkgd2lkdGgsIEdDRwogICAgIGdsOjpSZWFkUGl4ZWxzUm9idXN0QU5HTEUoeCwgeSwgd2lk
dGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBidWZTaXplLCBsZW5ndGgsIGNvbHVtbnMsIHJvd3Ms
IHBpeGVscyk7CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OnRleEltYWdlMkRSb2J1c3RB
TkdMRShHQ0dMZW51bSB0YXJnZXQsIGludCBsZXZlbCwgaW50IGludGVybmFsZm9ybWF0LCBHQ0dM
c2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1h
dCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IHZvaWQgKnBpeGVscykK
K3ZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OnRleEltYWdlMkRSb2J1c3RBTkdMRShHQ0dMZW51bSB0
YXJnZXQsIGludCBsZXZlbCwgaW50IGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdD
R0xzaXplaSBoZWlnaHQsIGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlw
ZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IHBpeGVscykKIHsKICAgICBpZiAoIW1fY29udGV4
dC0+bV9pc0ZvcldlYkdMMikKICAgICAgICAgaW50ZXJuYWxmb3JtYXQgPSBhZGp1c3RXZWJHTDFU
ZXh0dXJlSW50ZXJuYWxGb3JtYXQoaW50ZXJuYWxmb3JtYXQsIGZvcm1hdCwgdHlwZSk7CiAgICAg
aWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBnbDo6VGV4SW1hZ2UyRFJvYnVzdEFOR0xFKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9y
bWF0LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIsIGZvcm1hdCwgdHlwZSwgYnVmU2l6ZSwgcGl4ZWxz
KTsKKyAgICBnbDo6VGV4SW1hZ2UyRFJvYnVzdEFOR0xFKHRhcmdldCwgbGV2ZWwsIGludGVybmFs
Zm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIsIGZvcm1hdCwgdHlwZSwgcGl4ZWxzLmJ1ZlNp
emUsIHBpeGVscy5kYXRhKTsKIH0KIAogdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6dGV4UGFyYW1l
dGVyZnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGZsb2F0ICpwYXJhbXMpCkBAIC0zMTIsNjQgKzMxMiw2NCBA
QCB2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjp0ZXhQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbQogICAgIGdsOjpUZXhQYXJhbWV0ZXJpdlJvYnVzdEFO
R0xFKHRhcmdldCwgcG5hbWUsIGJ1ZlNpemUsIHBhcmFtcyk7CiB9CiAKLXZvaWQgRXh0ZW5zaW9u
c0dMQU5HTEU6OnRleFN1YkltYWdlMkRSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIGludCBs
ZXZlbCwgaW50IHhvZmZzZXQsIGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXpl
aSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNp
emUsIGNvbnN0IHZvaWQgKnBpeGVscykKK3ZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OnRleFN1Yklt
YWdlMkRSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIGludCBsZXZlbCwgaW50IHhvZmZzZXQs
IGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVt
IGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IHBpeGVscykK
IHsKICAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIGdsOjpUZXhTdWJJbWFnZTJEUm9idXN0QU5HTEUodGFyZ2V0LCBsZXZlbCwg
eG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBidWZTaXplLCBw
aXhlbHMpOworICAgIGdsOjpUZXhTdWJJbWFnZTJEUm9idXN0QU5HTEUodGFyZ2V0LCBsZXZlbCwg
eG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBwaXhlbHMuYnVm
U2l6ZSwgcGl4ZWxzLmRhdGEpOwogfQogCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpjb21wcmVz
c2VkVGV4SW1hZ2UyRFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgaW50IGxldmVsLCBHQ0dM
ZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBp
bnQgYm9yZGVyLCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3Qg
dm9pZCogZGF0YSkKK3ZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmNvbXByZXNzZWRUZXhJbWFnZTJE
Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFs
Zm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIGludCBib3JkZXIsIEdD
R0xzaXplaSBpbWFnZVNpemUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRhKQogewogICAg
IGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgZ2w6OkNvbXByZXNzZWRUZXhJbWFnZTJEUm9idXN0QU5HTEUodGFyZ2V0LCBsZXZlbCwg
aW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGJvcmRlciwgaW1hZ2VTaXplLCBidWZTaXpl
LCBkYXRhKTsKKyAgICBnbDo6Q29tcHJlc3NlZFRleEltYWdlMkRSb2J1c3RBTkdMRSh0YXJnZXQs
IGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgYm9yZGVyLCBpbWFnZVNpemUs
IGRhdGEuYnVmU2l6ZSwgZGF0YS5kYXRhKTsKICAgICBtX2NvbnRleHQtPm1fc3RhdGUudGV4dHVy
ZVNlZWRDb3VudC5hZGQobV9jb250ZXh0LT5tX3N0YXRlLmN1cnJlbnRCb3VuZFRleHR1cmUoKSk7
CiAKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Y29tcHJlc3NlZFRleFN1YkltYWdlMkRS
b2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIGludCBsZXZlbCwgaW50IHhvZmZzZXQsIGludCB5
b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1h
dCwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IHZvaWQqIGRh
dGEpCit2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRFJvYnVz
dEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgaW50IGxldmVsLCBpbnQgeG9mZnNldCwgaW50IHlvZmZz
ZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBH
Q0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gZGF0YSkKIHsKICAg
ICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIGdsOjpDb21wcmVzc2VkVGV4U3ViSW1hZ2UyRFJvYnVzdEFOR0xFKHRhcmdldCwgbGV2
ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgaW1hZ2VTaXplLCBi
dWZTaXplLCBkYXRhKTsKKyAgICBnbDo6Q29tcHJlc3NlZFRleFN1YkltYWdlMkRSb2J1c3RBTkdM
RSh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQs
IGltYWdlU2l6ZSwgZGF0YS5idWZTaXplLCBkYXRhLmRhdGEpOwogICAgIG1fY29udGV4dC0+bV9z
dGF0ZS50ZXh0dXJlU2VlZENvdW50LmFkZChtX2NvbnRleHQtPm1fc3RhdGUuY3VycmVudEJvdW5k
VGV4dHVyZSgpKTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Y29tcHJlc3NlZFRleElt
YWdlM0RSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIGludCBsZXZlbCwgR0NHTGVudW0gaW50
ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVp
IGRlcHRoLCBpbnQgYm9yZGVyLCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgY29uc3Qgdm9pZCogZGF0YSkKK3ZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmNvbXByZXNzZWRU
ZXhJbWFnZTNEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWwsIEdDR0xlbnVt
IGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xz
aXplaSBkZXB0aCwgaW50IGJvcmRlciwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTFNwYW48Y29u
c3QgR0NHTHZvaWQ+IGRhdGEpCiB7CiAgICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3Vy
cmVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBnbDo6Q29tcHJlc3NlZFRleEltYWdlM0RS
b2J1c3RBTkdMRSh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwg
ZGVwdGgsIGJvcmRlciwgaW1hZ2VTaXplLCBidWZTaXplLCBkYXRhKTsKKyAgICBnbDo6Q29tcHJl
c3NlZFRleEltYWdlM0RSb2J1c3RBTkdMRSh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwg
d2lkdGgsIGhlaWdodCwgZGVwdGgsIGJvcmRlciwgaW1hZ2VTaXplLCBkYXRhLmJ1ZlNpemUsIGRh
dGEuZGF0YSk7CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmNvbXByZXNzZWRUZXhTdWJJ
bWFnZTNEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWwsIGludCB4b2Zmc2V0
LCBpbnQgeW9mZnNldCwgaW50IHpvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhl
aWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFnZVNp
emUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCB2b2lkKiBkYXRhKQordm9pZCBFeHRlbnNpb25z
R0xBTkdMRTo6Y29tcHJlc3NlZFRleFN1YkltYWdlM0RSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJn
ZXQsIGludCBsZXZlbCwgaW50IHhvZmZzZXQsIGludCB5b2Zmc2V0LCBpbnQgem9mZnNldCwgR0NH
THNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xlbnVt
IGZvcm1hdCwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IGRh
dGEpCiB7CiAgICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBnbDo6Q29tcHJlc3NlZFRleFN1YkltYWdlM0RSb2J1c3RBTkdMRSh0
YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB6b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBk
ZXB0aCwgZm9ybWF0LCBpbWFnZVNpemUsIGJ1ZlNpemUsIGRhdGEpOworICAgIGdsOjpDb21wcmVz
c2VkVGV4U3ViSW1hZ2UzRFJvYnVzdEFOR0xFKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZz
ZXQsIHpvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBmb3JtYXQsIGltYWdlU2l6ZSwgZGF0
YS5idWZTaXplLCBkYXRhLmRhdGEpOwogfQogCiAKLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OnRl
eEltYWdlM0RSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIGludCBsZXZlbCwgaW50IGludGVy
bmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBk
ZXB0aCwgaW50IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgY29uc3Qgdm9pZCAqcGl4ZWxzKQordm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6
dGV4SW1hZ2UzRFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgaW50IGxldmVsLCBpbnQgaW50
ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVp
IGRlcHRoLCBpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xT
cGFuPGNvbnN0IEdDR0x2b2lkPiBwaXhlbHMpCiB7CiAgICAgaWYgKCFtX2NvbnRleHQtPm1ha2VD
b250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBnbDo6VGV4SW1hZ2UzRFJv
YnVzdEFOR0xFKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBk
ZXB0aCwgYm9yZGVyLCBmb3JtYXQsIHR5cGUsIGJ1ZlNpemUsIHBpeGVscyk7CisgICAgZ2w6OlRl
eEltYWdlM0RSb2J1c3RBTkdMRSh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgs
IGhlaWdodCwgZGVwdGgsIGJvcmRlciwgZm9ybWF0LCB0eXBlLCBwaXhlbHMuYnVmU2l6ZSwgcGl4
ZWxzLmRhdGEpOwogfQogCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjp0ZXhTdWJJbWFnZTNEUm9i
dXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWwsIGludCB4b2Zmc2V0LCBpbnQgeW9m
ZnNldCwgaW50IHpvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NH
THNpemVpIGRlcHRoLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBi
dWZTaXplLCBjb25zdCB2b2lkICpwaXhlbHMpCit2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjp0ZXhT
dWJJbWFnZTNEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWwsIGludCB4b2Zm
c2V0LCBpbnQgeW9mZnNldCwgaW50IHpvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVp
IGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUs
IEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBwaXhlbHMpCiB7CiAgICAgaWYgKCFtX2NvbnRleHQt
Pm1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBnbDo6VGV4U3Vi
SW1hZ2UzRFJvYnVzdEFOR0xFKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHpvZmZz
ZXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBmb3JtYXQsIHR5cGUsIGJ1ZlNpemUsIHBpeGVscyk7
CisgICAgZ2w6OlRleFN1YkltYWdlM0RSb2J1c3RBTkdMRSh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0
LCB5b2Zmc2V0LCB6b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgZm9ybWF0LCB0eXBlLCBw
aXhlbHMuYnVmU2l6ZSwgcGl4ZWxzLmRhdGEpOwogfQogCiB2b2lkIEV4dGVuc2lvbnNHTEFOR0xF
OjpnZXRRdWVyeWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNp
b25zR0xBTkdMRS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0
ZW5zaW9uc0dMQU5HTEUuaAppbmRleCA1N2JiOTNiYzg0YzMzNTkwZmJjZjRiM2Y3YTFlYjVhNTVj
NTkyNTZjLi5hZGFlYWY5MTAxYzE0ZjdkY2Q0Zjk5OTA4MjBmYTllYTI0YmM4OTQ3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xB
TkdMRS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVu
c2lvbnNHTEFOR0xFLmgKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgogICAgIHZvaWQgaW5zZXJ0
RXZlbnRNYXJrZXJFWFQoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBwdXNoR3Jv
dXBNYXJrZXJFWFQoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBwb3BHcm91cE1h
cmtlckVYVCh2b2lkKSBvdmVycmlkZTsKLSAgICB2b2lkIGRyYXdCdWZmZXJzRVhUKEdDR0xzaXpl
aSwgY29uc3QgR0NHTGVudW0qKSBvdmVycmlkZTsKKyAgICB2b2lkIGRyYXdCdWZmZXJzRVhUKEdD
R0xTcGFuPGNvbnN0IEdDR0xlbnVtPikgb3ZlcnJpZGU7CiAKICAgICBTdHJpbmcgZ2V0VHJhbnNs
YXRlZFNoYWRlclNvdXJjZUFOR0xFKFBsYXRmb3JtR0xPYmplY3QpIG92ZXJyaWRlOwogCkBAIC03
NCwxNyArNzQsMTcgQEAgcHVibGljOgogCiAgICAgLy8gR0xfQU5HTEVfcm9idXN0X2NsaWVudF9t
ZW1vcnkKICAgICB2b2lkIHJlYWRQaXhlbHNSb2J1c3RBTkdMRShHQ0dMaW50IHgsIEdDR0xpbnQg
eSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdD
R0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHNp
emVpICpjb2x1bW5zLCBHQ0dMc2l6ZWkgKnJvd3MsIHZvaWQgKnBpeGVscykgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCB0ZXhJbWFnZTJEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxl
dmVsLCBHQ0dMaW50IGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBo
ZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdD
R0xzaXplaSBidWZTaXplLCBjb25zdCB2b2lkICpwaXhlbHMpIG92ZXJyaWRlOworICAgIHZvaWQg
dGV4SW1hZ2UyRFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NH
TGludCBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBH
Q0dMaW50IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bhbjxj
b25zdCBHQ0dMdm9pZD4gcGl4ZWxzKSBvdmVycmlkZTsKICAgICB2b2lkIHRleFBhcmFtZXRlcmZ2
Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIGNvbnN0IEdDR0xmbG9hdCAqcGFyYW1zKSBvdmVycmlkZTsKICAgICB2b2lkIHRleFBh
cmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NH
THNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCB0ZXhTdWJJbWFnZTJEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVs
LCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dM
c2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBi
dWZTaXplLCBjb25zdCB2b2lkICpwaXhlbHMpIG92ZXJyaWRlOwotICAgIHZvaWQgY29tcHJlc3Nl
ZFRleEltYWdlMkRSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdD
R0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQs
IEdDR0xpbnQgYm9yZGVyLCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
Y29uc3QgR0NHTHZvaWQqIGRhdGEpIG92ZXJyaWRlOwotICAgIHZvaWQgY29tcHJlc3NlZFRleFN1
YkltYWdlMkRSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xp
bnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBo
ZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIGNvbnN0IEdDR0x2b2lkKiBkYXRhKSBvdmVycmlkZTsKLSAgICB2b2lkIGNvbXByZXNz
ZWRUZXhJbWFnZTNEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBH
Q0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0
LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTHZvaWQqIGRhdGEpIG92ZXJyaWRlOwotICAgIHZv
aWQgY29tcHJlc3NlZFRleFN1YkltYWdlM0RSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdD
R0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMaW50IHpv
ZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRo
LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xzaXplaSBidWZTaXpl
LCBjb25zdCBHQ0dMdm9pZCogZGF0YSkgb3ZlcnJpZGU7Ci0KLSAgICB2b2lkIHRleEltYWdlM0RS
b2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgaW50ZXJu
YWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRl
cHRoLCBHQ0dMaW50IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgY29uc3Qgdm9pZCAqcGl4ZWxzKSBvdmVycmlkZTsKLSAgICB2b2lkIHRl
eFN1YkltYWdlM0RSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdD
R0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMaW50IHpvZmZzZXQsIEdDR0xzaXpl
aSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMZW51bSBmb3Jt
YXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCB2b2lkICpwaXhlbHMp
IG92ZXJyaWRlOworICAgIHZvaWQgdGV4U3ViSW1hZ2UyRFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRh
cmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdD
R0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51
bSB0eXBlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gcGl4ZWxzKSBvdmVycmlkZTsKKyAgICB2
b2lkIGNvbXByZXNzZWRUZXhJbWFnZTJEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
aW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dM
c2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTFNw
YW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEpIG92ZXJyaWRlOworICAgIHZvaWQgY29tcHJlc3NlZFRl
eFN1YkltYWdlMkRSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdD
R0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXpl
aSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTFNwYW48
Y29uc3QgR0NHTHZvaWQ+IGRhdGEpIG92ZXJyaWRlOworICAgIHZvaWQgY29tcHJlc3NlZFRleElt
YWdlM0RSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVt
IGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xz
aXplaSBkZXB0aCwgR0NHTGludCBib3JkZXIsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xTcGFu
PGNvbnN0IEdDR0x2b2lkPiBkYXRhKSBvdmVycmlkZTsKKyAgICB2b2lkIGNvbXByZXNzZWRUZXhT
dWJJbWFnZTNEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dM
aW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTGludCB6b2Zmc2V0LCBHQ0dMc2l6ZWkg
d2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGVudW0gZm9ybWF0
LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gZGF0YSkgb3Zl
cnJpZGU7CisKKyAgICB2b2lkIHRleEltYWdlM0RSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQs
IEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwg
R0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMaW50IGJvcmRlciwgR0NHTGVu
dW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gcGl4ZWxz
KSBvdmVycmlkZTsKKyAgICB2b2lkIHRleFN1YkltYWdlM0RSb2J1c3RBTkdMRShHQ0dMZW51bSB0
YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBH
Q0dMaW50IHpvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNp
emVpIGRlcHRoLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPGNvbnN0
IEdDR0x2b2lkPiBwaXhlbHMpIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0UXVlcnlpdlJvYnVzdEFO
R0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBH
Q0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKICAgICB2b2lkIGdl
dFF1ZXJ5T2JqZWN0dWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMpIG92
ZXJyaWRlOwogICAgIHZvaWQgZ2V0QnVmZmVyUG9pbnRlcnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0
YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5n
dGgsIHZvaWQgKipwYXJhbXMpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xF
LmNwcAppbmRleCBmZWIwYmViZWYzMTVmMGUxMzhiYTk5ZDYyZWI2Y2ZjZWQ1MTkzNjdhLi40YTBm
ZDU4NGI2OTI4ZjgxOWZjOTBkOTkyOWNhZjE0MDI4MTkwZWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0Nv
bnRleHRHTEFOR0xFLmNwcApAQCAtMjEsNyArMjEsNyBAQAogICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQogICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CiAgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwog
CiAjaW5jbHVkZSAiY29uZmlnLmgiCkBAIC0zNjIsMTQgKzM2MiwxOSBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpnZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQoR0NHTGVudW0gc2hhZGVy
VHlwZSwgR0NHTAogICAgIGdsOjpHZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQoc2hhZGVyVHlwZSwg
cHJlY2lzaW9uVHlwZSwgcmFuZ2UuZGF0YSwgcHJlY2lzaW9uKTsKIH0KIAotYm9vbCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6dGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2
ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBo
ZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIGNv
bnN0IHZvaWQqIHBpeGVscykKK2Jvb2wgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnRleEltYWdl
MkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1h
dCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NH
TGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gcGl4
ZWxzKQogewotICAgIGlmICh3aWR0aCAmJiBoZWlnaHQgJiYgIXBpeGVscykgeworICAgIGlmICh3
aWR0aCAmJiBoZWlnaHQgJiYgIXBpeGVscy5kYXRhKSB7CiAgICAgICAgIHN5bnRoZXNpemVHTEVy
cm9yKElOVkFMSURfVkFMVUUpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQorICAgIGlm
ICghbWFrZUNvbnRleHRDdXJyZW50KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHRl
eEltYWdlMkREaXJlY3QodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWln
aHQsIGJvcmRlciwgZm9ybWF0LCB0eXBlLCBwaXhlbHMpOworICAgIGlmICghbV9pc0ZvcldlYkdM
MiAmJiBtX2V4dGVuc2lvbnMpCisgICAgICAgIGludGVybmFsZm9ybWF0ID0gbV9leHRlbnNpb25z
LT5hZGp1c3RXZWJHTDFUZXh0dXJlSW50ZXJuYWxGb3JtYXQoaW50ZXJuYWxmb3JtYXQsIGZvcm1h
dCwgdHlwZSk7CisgICAgZ2w6OlRleEltYWdlMkRSb2J1c3RBTkdMRSh0YXJnZXQsIGxldmVsLCBp
bnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgYm9yZGVyLCBmb3JtYXQsIHR5cGUsIHBpeGVs
cy5idWZTaXplLCBwaXhlbHMuZGF0YSk7CisgICAgbV9zdGF0ZS50ZXh0dXJlU2VlZENvdW50LmFk
ZChtX3N0YXRlLmN1cnJlbnRCb3VuZFRleHR1cmUoKSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
QEAgLTgzNSwyMCArODQwLDIwIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmJ1ZmZl
ckRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWlwdHIgc2l6ZSwgR0NHCiAgICAgZ2w6OkJ1
ZmZlckRhdGEodGFyZ2V0LCBzaXplLCAwLCB1c2FnZSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OmJ1ZmZlckRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWlwdHIgc2l6
ZSwgY29uc3Qgdm9pZCogZGF0YSwgR0NHTGVudW0gdXNhZ2UpCit2b2lkIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpidWZmZXJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTFNwYW48Y29uc3QgR0NH
THZvaWQ+IGRhdGEsIEdDR0xlbnVtIHVzYWdlKQogewogICAgIGlmICghbWFrZUNvbnRleHRDdXJy
ZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGdsOjpCdWZmZXJEYXRhKHRhcmdldCwgc2l6
ZSwgZGF0YSwgdXNhZ2UpOworICAgIGdsOjpCdWZmZXJEYXRhKHRhcmdldCwgZGF0YS5idWZTaXpl
LCBkYXRhLmRhdGEsIHVzYWdlKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
YnVmZmVyU3ViRGF0YShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnRwdHIgb2Zmc2V0LCBHQ0dMc2l6
ZWlwdHIgc2l6ZSwgY29uc3Qgdm9pZCogZGF0YSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OmJ1ZmZlclN1YkRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50cHRyIG9mZnNldCwgR0NH
TFNwYW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEpCiB7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJl
bnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZ2w6OkJ1ZmZlclN1YkRhdGEodGFyZ2V0LCBv
ZmZzZXQsIHNpemUsIGRhdGEpOworICAgIGdsOjpCdWZmZXJTdWJEYXRhKHRhcmdldCwgb2Zmc2V0
LCBkYXRhLmJ1ZlNpemUsIGRhdGEuZGF0YSk7CiB9CiAKIHZvaWQqIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjptYXBCdWZmZXJSYW5nZShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnRwdHIgb2Zmc2V0
LCBHQ0dMc2l6ZWlwdHIgbGVuZ3RoLCBHQ0dMYml0ZmllbGQgYWNjZXNzKQpAQCAtMTUwMSwxMiAr
MTUwNiwxMiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMWYoR0NHTGlu
dCBsb2NhdGlvbiwgR0NHTGZsb2F0IHYwKQogICAgIGdsOjpVbmlmb3JtMWYobG9jYXRpb24sIHYw
KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTFmdihHQ0dMaW50
IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgc2l6ZSwgY29uc3QgR0NHTGZsb2F0KiBhcnJheSkKK3ZvaWQg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0xZnYoR0NHTGludCBsb2NhdGlvbiwgR0NH
TFNwYW48Y29uc3QgR0NHTGZsb2F0PiBhcnJheSkKIHsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3Vy
cmVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBnbDo6VW5pZm9ybTFmdihsb2NhdGlvbiwg
c2l6ZSwgYXJyYXkpOworICAgIGdsOjpVbmlmb3JtMWZ2KGxvY2F0aW9uLCBhcnJheS5idWZTaXpl
LCBhcnJheS5kYXRhKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9y
bTJmKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xmbG9hdCB2MCwgR0NHTGZsb2F0IHYxKQpAQCAtMTUx
NywxMyArMTUyMiwxMyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMmYo
R0NHTGludCBsb2NhdGlvbiwgR0NHTGZsb2F0IHYwLCBHQ0dMZmxvYQogICAgIGdsOjpVbmlmb3Jt
MmYobG9jYXRpb24sIHYwLCB2MSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OnVuaWZvcm0yZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIHNpemUsIGNvbnN0IEdDR0xm
bG9hdCogYXJyYXkpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMmZ2KEdD
R0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gYXJyYXkpCiB7Ci0gICAg
Ly8gRklYTUU6IGxlbmd0aCBuZWVkcyB0byBiZSBhIG11bHRpcGxlIG9mIDIuCisgICAgQVNTRVJU
KCEoYXJyYXkuYnVmU2l6ZSAlIDIpKTsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBnbDo6VW5pZm9ybTJmdihsb2NhdGlvbiwgc2l6ZSwgYXJy
YXkpOworICAgIGdsOjpVbmlmb3JtMmZ2KGxvY2F0aW9uLCBhcnJheS5idWZTaXplIC8gMiwgYXJy
YXkuZGF0YSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0zZihH
Q0dMaW50IGxvY2F0aW9uLCBHQ0dMZmxvYXQgdjAsIEdDR0xmbG9hdCB2MSwgR0NHTGZsb2F0IHYy
KQpAQCAtMTUzNCwxMyArMTUzOSwxMyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1
bmlmb3JtM2YoR0NHTGludCBsb2NhdGlvbiwgR0NHTGZsb2F0IHYwLCBHQ0dMZmxvYQogICAgIGds
OjpVbmlmb3JtM2YobG9jYXRpb24sIHYwLCB2MSwgdjIpOwogfQogCi12b2lkIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjp1bmlmb3JtM2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBzaXpl
LCBjb25zdCBHQ0dMZmxvYXQqIGFycmF5KQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
dW5pZm9ybTNmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGFy
cmF5KQogewotICAgIC8vIEZJWE1FOiBsZW5ndGggbmVlZHMgdG8gYmUgYSBtdWx0aXBsZSBvZiAz
LgorICAgIEFTU0VSVCghKGFycmF5LmJ1ZlNpemUgJSAzKSk7CiAgICAgaWYgKCFtYWtlQ29udGV4
dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZ2w6OlVuaWZvcm0zZnYobG9jYXRp
b24sIHNpemUsIGFycmF5KTsKKyAgICBnbDo6VW5pZm9ybTNmdihsb2NhdGlvbiwgYXJyYXkuYnVm
U2l6ZSAvIDMsIGFycmF5LmRhdGEpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
Ojp1bmlmb3JtNGYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGZsb2F0IHYwLCBHQ0dMZmxvYXQgdjEs
IEdDR0xmbG9hdCB2MiwgR0NHTGZsb2F0IHYzKQpAQCAtMTU1MSwxMyArMTU1NiwxMyBAQCB2b2lk
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtNGYoR0NHTGludCBsb2NhdGlvbiwgR0NH
TGZsb2F0IHYwLCBHQ0dMZmxvYQogICAgIGdsOjpVbmlmb3JtNGYobG9jYXRpb24sIHYwLCB2MSwg
djIsIHYzKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTRmdihH
Q0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgc2l6ZSwgY29uc3QgR0NHTGZsb2F0KiBhcnJheSkK
K3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm00ZnYoR0NHTGludCBsb2NhdGlv
biwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiBhcnJheSkKIHsKLSAgICAvLyBGSVhNRTogbGVu
Z3RoIG5lZWRzIHRvIGJlIGEgbXVsdGlwbGUgb2YgNC4KKyAgICBBU1NFUlQoIShhcnJheS5idWZT
aXplICUgNCkpOwogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIGdsOjpVbmlmb3JtNGZ2KGxvY2F0aW9uLCBzaXplLCBhcnJheSk7CisgICAgZ2w6
OlVuaWZvcm00ZnYobG9jYXRpb24sIGFycmF5LmJ1ZlNpemUgLyA0LCBhcnJheS5kYXRhKTsKIH0K
IAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTFpKEdDR0xpbnQgbG9jYXRp
b24sIEdDR0xpbnQgdjApCkBAIC0xNTY4LDEyICsxNTczLDEyIEBAIHZvaWQgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OnVuaWZvcm0xaShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMaW50IHYwKQogICAg
IGdsOjpVbmlmb3JtMWkobG9jYXRpb24sIHYwKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6dW5pZm9ybTFpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgc2l6ZSwgY29u
c3QgR0NHTGludCogYXJyYXkpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3Jt
MWl2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+IGFycmF5KQogewog
ICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGds
OjpVbmlmb3JtMWl2KGxvY2F0aW9uLCBzaXplLCBhcnJheSk7CisgICAgZ2w6OlVuaWZvcm0xaXYo
bG9jYXRpb24sIGFycmF5LmJ1ZlNpemUsIGFycmF5LmRhdGEpOwogfQogCiB2b2lkIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMmkoR0NHTGludCBsb2NhdGlvbiwgR0NHTGludCB2MCwg
R0NHTGludCB2MSkKQEAgLTE1ODQsMTMgKzE1ODksMTMgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6dW5pZm9ybTJpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xpbnQgdjAsIEdDR0xpbnQg
djEKICAgICBnbDo6VW5pZm9ybTJpKGxvY2F0aW9uLCB2MCwgdjEpOwogfQogCi12b2lkIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMml2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXpl
aSBzaXplLCBjb25zdCBHQ0dMaW50KiBhcnJheSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OnVuaWZvcm0yaXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4g
YXJyYXkpCiB7Ci0gICAgLy8gRklYTUU6IGxlbmd0aCBuZWVkcyB0byBiZSBhIG11bHRpcGxlIG9m
IDIuCisgICAgQVNTRVJUKCEoYXJyYXkuYnVmU2l6ZSAlIDIpKTsKICAgICBpZiAoIW1ha2VDb250
ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBnbDo6VW5pZm9ybTJpdihsb2Nh
dGlvbiwgc2l6ZSwgYXJyYXkpOworICAgIGdsOjpVbmlmb3JtMml2KGxvY2F0aW9uLCBhcnJheS5i
dWZTaXplIC8gMiwgYXJyYXkuZGF0YSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OnVuaWZvcm0zaShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMaW50IHYwLCBHQ0dMaW50IHYxLCBH
Q0dMaW50IHYyKQpAQCAtMTYwMSwxMyArMTYwNiwxMyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjp1bmlmb3JtM2koR0NHTGludCBsb2NhdGlvbiwgR0NHTGludCB2MCwgR0NHTGludCB2
MQogICAgIGdsOjpVbmlmb3JtM2kobG9jYXRpb24sIHYwLCB2MSwgdjIpOwogfQogCi12b2lkIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtM2l2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xz
aXplaSBzaXplLCBjb25zdCBHQ0dMaW50KiBhcnJheSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OnVuaWZvcm0zaXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGlu
dD4gYXJyYXkpCiB7Ci0gICAgLy8gRklYTUU6IGxlbmd0aCBuZWVkcyB0byBiZSBhIG11bHRpcGxl
IG9mIDMuCisgICAgQVNTRVJUKCEoYXJyYXkuYnVmU2l6ZSAlIDMpKTsKICAgICBpZiAoIW1ha2VD
b250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBnbDo6VW5pZm9ybTNpdihs
b2NhdGlvbiwgc2l6ZSwgYXJyYXkpOworICAgIGdsOjpVbmlmb3JtM2l2KGxvY2F0aW9uLCBhcnJh
eS5idWZTaXplIC8gMywgYXJyYXkuZGF0YSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OnVuaWZvcm00aShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMaW50IHYwLCBHQ0dMaW50IHYx
LCBHQ0dMaW50IHYyLCBHQ0dMaW50IHYzKQpAQCAtMTYxOCw0MCArMTYyMywzOSBAQCB2b2lkIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtNGkoR0NHTGludCBsb2NhdGlvbiwgR0NHTGlu
dCB2MCwgR0NHTGludCB2MQogICAgIGdsOjpVbmlmb3JtNGkobG9jYXRpb24sIHYwLCB2MSwgdjIs
IHYzKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTRpdihHQ0dM
aW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgc2l6ZSwgY29uc3QgR0NHTGludCogYXJyYXkpCit2b2lk
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtNGl2KEdDR0xpbnQgbG9jYXRpb24sIEdD
R0xTcGFuPGNvbnN0IEdDR0xpbnQ+IGFycmF5KQogewotICAgIC8vIEZJWE1FOiBsZW5ndGggbmVl
ZHMgdG8gYmUgYSBtdWx0aXBsZSBvZiA0LgorICAgIEFTU0VSVCghKGFycmF5LmJ1ZlNpemUgJSA0
KSk7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgZ2w6OlVuaWZvcm00aXYobG9jYXRpb24sIHNpemUsIGFycmF5KTsKKyAgICBnbDo6VW5pZm9y
bTRpdihsb2NhdGlvbiwgYXJyYXkuYnVmU2l6ZSAvIDQsIGFycmF5LmRhdGEpOwogfQogCi12b2lk
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4MmZ2KEdDR0xpbnQgbG9jYXRp
b24sIEdDR0xzaXplaSBzaXplLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9h
dCogYXJyYXkpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4MmZ2
KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3Qg
R0NHTGZsb2F0PiBhcnJheSkKIHsKLSAgICAvLyBGSVhNRTogbGVuZ3RoIG5lZWRzIHRvIGJlIGEg
bXVsdGlwbGUgb2YgNC4KICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBnbDo6VW5pZm9ybU1hdHJpeDJmdihsb2NhdGlvbiwgc2l6ZSwgdHJhbnNw
b3NlLCBhcnJheSk7CisgICAgZ2w6OlVuaWZvcm1NYXRyaXgyZnYobG9jYXRpb24sIGFycmF5LmJ1
ZlNpemUgLyA0LCB0cmFuc3Bvc2UsIGFycmF5LmRhdGEpOwogfQogCi12b2lkIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4M2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXpl
aSBzaXplLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogYXJyYXkpCit2
b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4M2Z2KEdDR0xpbnQgbG9j
YXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiBh
cnJheSkKIHsKLSAgICAvLyBGSVhNRTogbGVuZ3RoIG5lZWRzIHRvIGJlIGEgbXVsdGlwbGUgb2Yg
OS4KKyAgICBBU1NFUlQoIShhcnJheS5idWZTaXplICUgOSkpOwogICAgIGlmICghbWFrZUNvbnRl
eHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGdsOjpVbmlmb3JtTWF0cml4M2Z2
KGxvY2F0aW9uLCBzaXplLCB0cmFuc3Bvc2UsIGFycmF5KTsKKyAgICBnbDo6VW5pZm9ybU1hdHJp
eDNmdihsb2NhdGlvbiwgYXJyYXkuYnVmU2l6ZSAvIDksIHRyYW5zcG9zZSwgYXJyYXkuZGF0YSk7
CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXg0ZnYoR0NH
TGludCBsb2NhdGlvbiwgR0NHTHNpemVpIHNpemUsIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29u
c3QgR0NHTGZsb2F0KiBhcnJheSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZv
cm1NYXRyaXg0ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dM
U3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGFycmF5KQogewotICAgIC8vIEZJWE1FOiBsZW5ndGggbmVl
ZHMgdG8gYmUgYSBtdWx0aXBsZSBvZiAxNi4KKyAgICBBU1NFUlQoIShhcnJheS5idWZTaXplICUg
MTYpKTsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBnbDo6VW5pZm9ybU1hdHJpeDRmdihsb2NhdGlvbiwgc2l6ZSwgdHJhbnNwb3NlLCBhcnJh
eSk7CisgICAgZ2w6OlVuaWZvcm1NYXRyaXg0ZnYobG9jYXRpb24sIGFycmF5LmJ1ZlNpemUgLyAx
NiwgdHJhbnNwb3NlLCBhcnJheS5kYXRhKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6dXNlUHJvZ3JhbShQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0pCkBAIC0xNjgwLDEyICsx
Njg0LDEyIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYjFmKEdD
R0x1aW50IGluZGV4LCBHQ0dMZmxvYXQgdjApCiAgICAgZ2w6OlZlcnRleEF0dHJpYjFmKGluZGV4
LCB2MCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYjFm
dihHQ0dMdWludCBpbmRleCwgY29uc3QgR0NHTGZsb2F0KiBhcnJheSkKK3ZvaWQgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYjFmdihHQ0dMdWludCBpbmRleCwgR0NHTFNwYW48
Y29uc3QgR0NHTGZsb2F0LCAxPiBhcnJheSkKIHsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVu
dCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBnbDo6VmVydGV4QXR0cmliMWZ2KGluZGV4LCBh
cnJheSk7CisgICAgZ2w6OlZlcnRleEF0dHJpYjFmdihpbmRleCwgYXJyYXkuZGF0YSk7CiB9CiAK
IHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYjJmKEdDR0x1aW50IGlu
ZGV4LCBHQ0dMZmxvYXQgdjAsIEdDR0xmbG9hdCB2MSkKQEAgLTE2OTYsMTIgKzE3MDAsMTIgQEAg
dm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliMmYoR0NHTHVpbnQgaW5k
ZXgsIEdDR0xmbG9hdCB2MCwgR0NHTGYKICAgICBnbDo6VmVydGV4QXR0cmliMmYoaW5kZXgsIHYw
LCB2MSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYjJm
dihHQ0dMdWludCBpbmRleCwgY29uc3QgR0NHTGZsb2F0KiBhcnJheSkKK3ZvaWQgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYjJmdihHQ0dMdWludCBpbmRleCwgR0NHTFNwYW48
Y29uc3QgR0NHTGZsb2F0LCAyPiBhcnJheSkKIHsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVu
dCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBnbDo6VmVydGV4QXR0cmliMmZ2KGluZGV4LCBh
cnJheSk7CisgICAgZ2w6OlZlcnRleEF0dHJpYjJmdihpbmRleCwgYXJyYXkuZGF0YSk7CiB9CiAK
IHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYjNmKEdDR0x1aW50IGlu
ZGV4LCBHQ0dMZmxvYXQgdjAsIEdDR0xmbG9hdCB2MSwgR0NHTGZsb2F0IHYyKQpAQCAtMTcxMiwx
MiArMTcxNiwxMiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2ZXJ0ZXhBdHRyaWIz
ZihHQ0dMdWludCBpbmRleCwgR0NHTGZsb2F0IHYwLCBHQ0dMZgogICAgIGdsOjpWZXJ0ZXhBdHRy
aWIzZihpbmRleCwgdjAsIHYxLCB2Mik7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OnZlcnRleEF0dHJpYjNmdihHQ0dMdWludCBpbmRleCwgY29uc3QgR0NHTGZsb2F0KiBhcnJh
eSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYjNmdihHQ0dMdWlu
dCBpbmRleCwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0LCAzPiBhcnJheSkKIHsKICAgICBpZiAo
IW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBnbDo6VmVydGV4
QXR0cmliM2Z2KGluZGV4LCBhcnJheSk7CisgICAgZ2w6OlZlcnRleEF0dHJpYjNmdihpbmRleCwg
YXJyYXkuZGF0YSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZlcnRleEF0
dHJpYjRmKEdDR0x1aW50IGluZGV4LCBHQ0dMZmxvYXQgdjAsIEdDR0xmbG9hdCB2MSwgR0NHTGZs
b2F0IHYyLCBHQ0dMZmxvYXQgdjMpCkBAIC0xNzI4LDEyICsxNzMyLDEyIEBAIHZvaWQgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYjRmKEdDR0x1aW50IGluZGV4LCBHQ0dMZmxv
YXQgdjAsIEdDR0xmCiAgICAgZ2w6OlZlcnRleEF0dHJpYjRmKGluZGV4LCB2MCwgdjEsIHYyLCB2
Myk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYjRmdihH
Q0dMdWludCBpbmRleCwgY29uc3QgR0NHTGZsb2F0KiBhcnJheSkKK3ZvaWQgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYjRmdihHQ0dMdWludCBpbmRleCwgR0NHTFNwYW48Y29u
c3QgR0NHTGZsb2F0LCA0PiBhcnJheSkKIHsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgp
KQogICAgICAgICByZXR1cm47CiAKLSAgICBnbDo6VmVydGV4QXR0cmliNGZ2KGluZGV4LCBhcnJh
eSk7CisgICAgZ2w6OlZlcnRleEF0dHJpYjRmdihpbmRleCwgYXJyYXkuZGF0YSk7CiB9CiAKIHZv
aWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYlBvaW50ZXIoR0NHTHVpbnQg
aW5kZXgsIEdDR0xpbnQgc2l6ZSwgR0NHTGVudW0gdHlwZSwgR0NHTGJvb2xlYW4gbm9ybWFsaXpl
ZCwgR0NHTHNpemVpIHN0cmlkZSwgR0NHTGludHB0ciBvZmZzZXQpCkBAIC0xODIyLDcgKzE4MjYs
NyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRGbG9hdHYoR0NHTGVudW0gcG5h
bWUsIEdDR0xTcGFuPEdDR0xmbG9hdD4gdmFsdQogCiAgICAgZ2w6OkdldEZsb2F0dlJvYnVzdEFO
R0xFKHBuYW1lLCB2YWx1ZS5idWZTaXplLCBudWxscHRyLCB2YWx1ZS5kYXRhKTsKIH0KLSAgICAK
KwogR0NHTGludDY0IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRJbnRlZ2VyNjQoR0NHTGVu
dW0gcG5hbWUpCiB7CiAgICAgR0NHTGludDY0IHZhbHVlID0gMDsKQEAgLTIwMjksMTMgKzIwMzMs
MTMgQEAgR0NHTHNpemVpcHRyIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRWZXJ0ZXhBdHRy
aWJPZmZzZXQoR0NHTHVpbnQgaW5kZXgsIEdDR0wKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NH
THNpemVpcHRyPihyZWludGVycHJldF9jYXN0PGludHB0cl90Pihwb2ludGVyKSk7CiB9CiAKLXZv
aWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmYsIEdDR0xpbnQgeW9mZiwgR0NHTHNpemVpIHdp
ZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIGNv
bnN0IHZvaWQqIHBpeGVscykKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnRleFN1Yklt
YWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmYsIEdDR0xp
bnQgeW9mZiwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3Jt
YXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBwaXhlbHMpCiB7CiAg
ICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8g
RklYTUU6IHdlIHdpbGwgbmVlZCB0byBkZWFsIHdpdGggUGl4ZWxTdG9yZSBwYXJhbXMgd2hlbiBk
ZWFsaW5nIHdpdGggaW1hZ2UgYnVmZmVycyB0aGF0IGRpZmZlciBmcm9tIHRoZSBzdWJpbWFnZSBz
aXplLgotICAgIGdsOjpUZXhTdWJJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIHhvZmYsIHlvZmYsIHdp
ZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgcGl4ZWxzKTsKKyAgICBnbDo6VGV4U3ViSW1hZ2Uy
RFJvYnVzdEFOR0xFKHRhcmdldCwgbGV2ZWwsIHhvZmYsIHlvZmYsIHdpZHRoLCBoZWlnaHQsIGZv
cm1hdCwgdHlwZSwgcGl4ZWxzLmJ1ZlNpemUsIHBpeGVscy5kYXRhKTsKICAgICBtX3N0YXRlLnRl
eHR1cmVTZWVkQ291bnQuYWRkKG1fc3RhdGUuY3VycmVudEJvdW5kVGV4dHVyZSgpKTsKIH0KIApA
QCAtMjIwMywxNyArMjIwNyw2IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmRpc3Bh
dGNoQ29udGV4dENoYW5nZWROb3RpZmljYXRpb24oKQogICAgICAgICBjbGllbnQtPmRpc3BhdGNo
Q29udGV4dENoYW5nZWROb3RpZmljYXRpb24oKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6dGV4SW1hZ2UyRERpcmVjdChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWws
IEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWln
aHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIGNvbnN0
IHZvaWQqIHBpeGVscykKLXsKLSAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBpZiAoIW1faXNGb3JXZWJHTDIgJiYgbV9leHRlbnNpb25zKQotICAg
ICAgICBpbnRlcm5hbGZvcm1hdCA9IG1fZXh0ZW5zaW9ucy0+YWRqdXN0V2ViR0wxVGV4dHVyZUlu
dGVybmFsRm9ybWF0KGludGVybmFsZm9ybWF0LCBmb3JtYXQsIHR5cGUpOwotICAgIGdsOjpUZXhJ
bWFnZTJEKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBib3Jk
ZXIsIGZvcm1hdCwgdHlwZSwgcGl4ZWxzKTsKLSAgICBtX3N0YXRlLnRleHR1cmVTZWVkQ291bnQu
YWRkKG1fc3RhdGUuY3VycmVudEJvdW5kVGV4dHVyZSgpKTsKLX0KLQogdm9pZCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6ZHJhd0FycmF5c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMaW50
IGZpcnN0LCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xzaXplaSBwcmltY291bnQpCiB7CiAgICAgaWYg
KCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKQEAgLTI0MzYsMjAgKzI0MjksMjAgQEAgdm9pZCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6ZnJhbWVidWZmZXJUZXh0dXJlTGF5ZXIoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMZW51bQogICAgIGdsOjpGcmFtZWJ1ZmZlclRleHR1cmVMYXllcih0YXJnZXQsIGF0
dGFjaG1lbnQsIHRleHR1cmUsIGxldmVsLCBsYXllcik7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OmludmFsaWRhdGVGcmFtZWJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQsIEdDR0xz
aXplaSBudW1BdHRhY2htZW50cywgY29uc3QgR0NHTGVudW0qIGF0dGFjaG1lbnRzKQordm9pZCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6aW52YWxpZGF0ZUZyYW1lYnVmZmVyKEdDR0xlbnVtIHRh
cmdldCwgR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+IGF0dGFjaG1lbnRzKQogewogICAgIGlmICgh
bWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGdsOjpJbnZhbGlk
YXRlRnJhbWVidWZmZXIodGFyZ2V0LCBudW1BdHRhY2htZW50cywgYXR0YWNobWVudHMpOworICAg
IGdsOjpJbnZhbGlkYXRlRnJhbWVidWZmZXIodGFyZ2V0LCBhdHRhY2htZW50cy5idWZTaXplLCBh
dHRhY2htZW50cy5kYXRhKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6aW52
YWxpZGF0ZVN1YkZyYW1lYnVmZmVyKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpIG51bUF0dGFj
aG1lbnRzLCBjb25zdCBHQ0dMZW51bSogYXR0YWNobWVudHMsIEdDR0xpbnQgeCwgR0NHTGludCB5
LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpCit2b2lkIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjppbnZhbGlkYXRlU3ViRnJhbWVidWZmZXIoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
U3Bhbjxjb25zdCBHQ0dMZW51bT4gYXR0YWNobWVudHMsIEdDR0xpbnQgeCwgR0NHTGludCB5LCBH
Q0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpCiB7CiAgICAgaWYgKCFtYWtlQ29udGV4
dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZ2w6OkludmFsaWRhdGVTdWJGcmFt
ZWJ1ZmZlcih0YXJnZXQsIG51bUF0dGFjaG1lbnRzLCBhdHRhY2htZW50cywgeCwgeSwgd2lkdGgs
IGhlaWdodCk7CisgICAgZ2w6OkludmFsaWRhdGVTdWJGcmFtZWJ1ZmZlcih0YXJnZXQsIGF0dGFj
aG1lbnRzLmJ1ZlNpemUsIGF0dGFjaG1lbnRzLmRhdGEsIHgsIHksIHdpZHRoLCBoZWlnaHQpOwog
fQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkQnVmZmVyKEdDR0xlbnVtIHNy
YykKQEAgLTI1MTcsODQgKzI1MTAsOTMgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
dW5pZm9ybTR1aShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMdWludCB2MCwgR0NHTHVpbnQKICAgICBn
bDo6VW5pZm9ybTR1aShsb2NhdGlvbiwgdjAsIHYxLCB2MiwgdjMpOwogfQogCi12b2lkIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMXVpdihHQ0dMaW50IGxvY2F0aW9uLCBjb25zdCBH
Q0dMdWludCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCit2
b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMXVpdihHQ0dMaW50IGxvY2F0aW9u
LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdWludD4gZGF0YSkKIHsKICAgICBpZiAoIW1ha2VDb250ZXh0
Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBnbDo6VW5pZm9ybTF1aXYobG9jYXRp
b24sIHNyY0xlbmd0aCwgZGF0YSArIHNyY09mZnNldCk7CisgICAgZ2w6OlVuaWZvcm0xdWl2KGxv
Y2F0aW9uLCBkYXRhLmJ1ZlNpemUsIGRhdGEuZGF0YSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OnVuaWZvcm0ydWl2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0x1aW50
KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKK3ZvaWQgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0ydWl2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xT
cGFuPGNvbnN0IEdDR0x1aW50PiBkYXRhKQogeworICAgIEFTU0VSVCghKGRhdGEuYnVmU2l6ZSAl
IDIpKTsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBnbDo6VW5pZm9ybTJ1aXYobG9jYXRpb24sIHNyY0xlbmd0aCwgZGF0YSArIHNyY09mZnNl
dCk7CisgICAgZ2w6OlVuaWZvcm0ydWl2KGxvY2F0aW9uLCBkYXRhLmJ1ZlNpemUgLyAyLCBkYXRh
LmRhdGEpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtM3VpdihH
Q0dMaW50IGxvY2F0aW9uLCBjb25zdCBHQ0dMdWludCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0
LCBHQ0dMdWludCBzcmNMZW5ndGgpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlm
b3JtM3VpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdWludD4gZGF0YSkK
IHsKKyAgICBBU1NFUlQoIShkYXRhLmJ1ZlNpemUgJSAzKSk7CiAgICAgaWYgKCFtYWtlQ29udGV4
dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZ2w6OlVuaWZvcm0zdWl2KGxvY2F0
aW9uLCBzcmNMZW5ndGgsIGRhdGEgKyBzcmNPZmZzZXQpOworICAgIGdsOjpVbmlmb3JtM3Vpdihs
b2NhdGlvbiwgZGF0YS5idWZTaXplIC8gMywgZGF0YS5kYXRhKTsKIH0KIAotdm9pZCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTR1aXYoR0NHTGludCBsb2NhdGlvbiwgY29uc3QgR0NH
THVpbnQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQordm9p
ZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTR1aXYoR0NHTGludCBsb2NhdGlvbiwg
R0NHTFNwYW48Y29uc3QgR0NHTHVpbnQ+IGRhdGEpCiB7CisgICAgQVNTRVJUKCEoZGF0YS5idWZT
aXplICUgNCkpOwogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIGdsOjpVbmlmb3JtNHVpdihsb2NhdGlvbiwgc3JjTGVuZ3RoLCBkYXRhICsgc3Jj
T2Zmc2V0KTsKKyAgICBnbDo6VW5pZm9ybTR1aXYobG9jYXRpb24sIGRhdGEuYnVmU2l6ZSAvIDQs
IGRhdGEuZGF0YSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1N
YXRyaXgyeDNmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0
IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgp
Cit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4MngzZnYoR0NHTGlu
dCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxv
YXQ+IGRhdGEpCiB7CisgICAgQVNTRVJUKCEoZGF0YS5idWZTaXplICUgNikpOwogICAgIGlmICgh
bWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGdsOjpVbmlmb3Jt
TWF0cml4MngzZnYobG9jYXRpb24sIHNyY0xlbmd0aCwgdHJhbnNwb3NlLCBkYXRhICsgc3JjT2Zm
c2V0KTsKKyAgICBnbDo6VW5pZm9ybU1hdHJpeDJ4M2Z2KGxvY2F0aW9uLCBkYXRhLmJ1ZlNpemUg
LyA2LCB0cmFuc3Bvc2UsIGRhdGEuZGF0YSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OnVuaWZvcm1NYXRyaXgzeDJmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0
cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dM
dWludCBzcmNMZW5ndGgpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0
cml4M3gyZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bh
bjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEpCiB7CisgICAgQVNTRVJUKCEoZGF0YS5idWZTaXplICUg
NikpOwogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIGdsOjpVbmlmb3JtTWF0cml4M3gyZnYobG9jYXRpb24sIHNyY0xlbmd0aCwgdHJhbnNwb3Nl
LCBkYXRhICsgc3JjT2Zmc2V0KTsKKyAgICBnbDo6VW5pZm9ybU1hdHJpeDN4MmZ2KGxvY2F0aW9u
LCBkYXRhLmJ1ZlNpemUgLyA2LCB0cmFuc3Bvc2UsIGRhdGEuZGF0YSk7CiB9CiAKLXZvaWQgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXgyeDRmdihHQ0dMaW50IGxvY2F0aW9u
LCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQg
c3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjp1bmlmb3JtTWF0cml4Mng0ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJh
bnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEpCiB7CisgICAgQVNTRVJUKCEo
ZGF0YS5idWZTaXplICUgOCkpOwogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIGdsOjpVbmlmb3JtTWF0cml4Mng0ZnYobG9jYXRpb24sIHNyY0xl
bmd0aCwgdHJhbnNwb3NlLCBkYXRhICsgc3JjT2Zmc2V0KTsKKyAgICBnbDo6VW5pZm9ybU1hdHJp
eDJ4NGZ2KGxvY2F0aW9uLCBkYXRhLmJ1ZlNpemUgLyA4LCB0cmFuc3Bvc2UsIGRhdGEuZGF0YSk7
CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXg0eDJmdihH
Q0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCog
ZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCit2b2lkIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4NHgyZnYoR0NHTGludCBsb2NhdGlvbiwg
R0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEpCiB7
CisgICAgQVNTRVJUKCEoZGF0YS5idWZTaXplICUgOCkpOwogICAgIGlmICghbWFrZUNvbnRleHRD
dXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGdsOjpVbmlmb3JtTWF0cml4NHgyZnYo
bG9jYXRpb24sIHNyY0xlbmd0aCwgdHJhbnNwb3NlLCBkYXRhICsgc3JjT2Zmc2V0KTsKKyAgICBn
bDo6VW5pZm9ybU1hdHJpeDR4MmZ2KGxvY2F0aW9uLCBkYXRhLmJ1ZlNpemUgLyA4LCB0cmFuc3Bv
c2UsIGRhdGEuZGF0YSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZv
cm1NYXRyaXgzeDRmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNv
bnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5n
dGgpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4M3g0ZnYoR0NH
TGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dM
ZmxvYXQ+IGRhdGEpCiB7CisgICAgQVNTRVJUKCEoZGF0YS5idWZTaXplICUgMTIpKTsKICAgICBp
ZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBnbDo6VW5p
Zm9ybU1hdHJpeDN4NGZ2KGxvY2F0aW9uLCBzcmNMZW5ndGgsIHRyYW5zcG9zZSwgZGF0YSArIHNy
Y09mZnNldCk7CisgICAgZ2w6OlVuaWZvcm1NYXRyaXgzeDRmdihsb2NhdGlvbiwgZGF0YS5idWZT
aXplIC8gMTIsIHRyYW5zcG9zZSwgZGF0YS5kYXRhKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6dW5pZm9ybU1hdHJpeDR4M2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29s
ZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQs
IEdDR0x1aW50IHNyY0xlbmd0aCkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZv
cm1NYXRyaXg0eDNmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdD
R0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gZGF0YSkKIHsKKyAgICBBU1NFUlQoIShkYXRhLmJ1ZlNp
emUgJSAxMikpOwogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIGdsOjpVbmlmb3JtTWF0cml4NHgzZnYobG9jYXRpb24sIHNyY0xlbmd0aCwgdHJh
bnNwb3NlLCBkYXRhICsgc3JjT2Zmc2V0KTsKKyAgICBnbDo6VW5pZm9ybU1hdHJpeDR4M2Z2KGxv
Y2F0aW9uLCBkYXRhLmJ1ZlNpemUgLyAxMiwgdHJhbnNwb3NlLCBkYXRhLmRhdGEpOwogfQogCiB2
b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2ZXJ0ZXhBdHRyaWJJNGkoR0NHTHVpbnQgaW5k
ZXgsIEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMaW50IHosIEdDR0xpbnQgdykKQEAgLTI2MDUs
MTIgKzI2MDcsMTIgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmli
STRpKEdDR0x1aW50IGluZGV4LCBHQ0dMaW50IHgsIEdDR0xpbnQKICAgICBnbDo6VmVydGV4QXR0
cmliSTRpKGluZGV4LCB4LCB5LCB6LCB3KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6dmVydGV4QXR0cmliSTRpdihHQ0dMdWludCBpbmRleCwgY29uc3QgR0NHTGludCogdmFs
dWVzKQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliSTRpdihHQ0dM
dWludCBpbmRleCwgR0NHTFNwYW48Y29uc3QgR0NHTGludCwgND4gdmFsdWVzKQogewogICAgIGlm
ICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGdsOjpWZXJ0
ZXhBdHRyaWJJNGl2KGluZGV4LCB2YWx1ZXMpOworICAgIGdsOjpWZXJ0ZXhBdHRyaWJJNGl2KGlu
ZGV4LCB2YWx1ZXMuZGF0YSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZl
cnRleEF0dHJpYkk0dWkoR0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50IHgsIEdDR0x1aW50IHksIEdD
R0x1aW50IHosIEdDR0x1aW50IHcpCkBAIC0yNjIxLDEyICsyNjIzLDEyIEBAIHZvaWQgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYkk0dWkoR0NHTHVpbnQgaW5kZXgsIEdDR0x1
aW50IHgsIEdDR0x1CiAgICAgZ2w6OlZlcnRleEF0dHJpYkk0dWkoaW5kZXgsIHgsIHksIHosIHcp
OwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2ZXJ0ZXhBdHRyaWJJNHVpdihH
Q0dMdWludCBpbmRleCwgY29uc3QgR0NHTHVpbnQqIHZhbHVlcykKK3ZvaWQgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYkk0dWl2KEdDR0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxj
b25zdCBHQ0dMdWludCwgND4gdmFsdWVzKQogewogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50
KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGdsOjpWZXJ0ZXhBdHRyaWJJNHVpdihpbmRleCwg
dmFsdWVzKTsKKyAgICBnbDo6VmVydGV4QXR0cmliSTR1aXYoaW5kZXgsIHZhbHVlcy5kYXRhKTsK
IH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6ZHJhd1JhbmdlRWxlbWVudHMoR0NH
TGVudW0gbW9kZSwgR0NHTHVpbnQgc3RhcnQsIEdDR0x1aW50IGVuZCwgR0NHTHNpemVpIGNvdW50
LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCkKQEAgLTI2MzcsMzYgKzI2MzksMzYg
QEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6ZHJhd1JhbmdlRWxlbWVudHMoR0NHTGVu
dW0gbW9kZSwgR0NHTHVpbnQgc3RhcnQsIEcKICAgICBnbDo6RHJhd1JhbmdlRWxlbWVudHMobW9k
ZSwgc3RhcnQsIGVuZCwgY291bnQsIHR5cGUsIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KG9mZnNl
dCkpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpkcmF3QnVmZmVycyhHQ0dM
c2l6ZWkgbiwgY29uc3QgR0NHTGVudW0qIGJ1ZnMpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpkcmF3QnVmZmVycyhHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4gYnVmcykKIHsKICAgICBp
ZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBnbDo6RHJh
d0J1ZmZlcnMobiwgYnVmcyk7CisgICAgZ2w6OkRyYXdCdWZmZXJzKGJ1ZnMuYnVmU2l6ZSwgYnVm
cy5kYXRhKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y2xlYXJCdWZmZXJp
dihHQ0dMZW51bSBidWZmZXIsIEdDR0xpbnQgZHJhd2J1ZmZlciwgY29uc3QgR0NHTGludCogdmFs
dWVzLCBHQ0dMdWludCBzcmNPZmZzZXQpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpj
bGVhckJ1ZmZlcml2KEdDR0xlbnVtIGJ1ZmZlciwgR0NHTGludCBkcmF3YnVmZmVyLCBHQ0dMU3Bh
bjxjb25zdCBHQ0dMaW50PiB2YWx1ZXMpCiB7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQo
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZ2w6OkNsZWFyQnVmZmVyaXYoYnVmZmVyLCBkcmF3
YnVmZmVyLCB2YWx1ZXMgKyBzcmNPZmZzZXQpOworICAgIGdsOjpDbGVhckJ1ZmZlcml2KGJ1ZmZl
ciwgZHJhd2J1ZmZlciwgdmFsdWVzLmRhdGEpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpjbGVhckJ1ZmZlcnVpdihHQ0dMZW51bSBidWZmZXIsIEdDR0xpbnQgZHJhd2J1ZmZl
ciwgY29uc3QgR0NHTHVpbnQqIHZhbHVlcywgR0NHTHVpbnQgc3JjT2Zmc2V0KQordm9pZCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6Y2xlYXJCdWZmZXJ1aXYoR0NHTGVudW0gYnVmZmVyLCBHQ0dM
aW50IGRyYXdidWZmZXIsIEdDR0xTcGFuPGNvbnN0IEdDR0x1aW50PiB2YWx1ZXMpCiB7CiAgICAg
aWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZ2w6OkNs
ZWFyQnVmZmVydWl2KGJ1ZmZlciwgZHJhd2J1ZmZlciwgdmFsdWVzICsgc3JjT2Zmc2V0KTsKKyAg
ICBnbDo6Q2xlYXJCdWZmZXJ1aXYoYnVmZmVyLCBkcmF3YnVmZmVyLCB2YWx1ZXMuZGF0YSk7CiB9
CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNsZWFyQnVmZmVyZnYoR0NHTGVudW0g
YnVmZmVyLCBHQ0dMaW50IGRyYXdidWZmZXIsIGNvbnN0IEdDR0xmbG9hdCogdmFsdWVzLCBHQ0dM
dWludCBzcmNPZmZzZXQpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjbGVhckJ1ZmZl
cmZ2KEdDR0xlbnVtIGJ1ZmZlciwgR0NHTGludCBkcmF3YnVmZmVyLCBHQ0dMU3Bhbjxjb25zdCBH
Q0dMZmxvYXQ+IHZhbHVlcykKIHsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBnbDo6Q2xlYXJCdWZmZXJmdihidWZmZXIsIGRyYXdidWZmZXIs
IHZhbHVlcyArIHNyY09mZnNldCk7CisgICAgZ2w6OkNsZWFyQnVmZmVyZnYoYnVmZmVyLCBkcmF3
YnVmZmVyLCB2YWx1ZXMuZGF0YSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OmNsZWFyQnVmZmVyZmkoR0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50IGRyYXdidWZmZXIsIEdDR0xm
bG9hdCBkZXB0aCwgR0NHTGludCBzdGVuY2lsKQpAQCAtMjg1NCw5NCArMjg1Niw2IEBAIFZlY3Rv
cjxHQ0dMdWludD4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFVuaWZvcm1JbmRpY2VzKFBs
YXRmb3JtR0xPYmplY3QgcHJvCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotdm9pZCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTFmdihHQ0dMaW50IGxvY2F0aW9uLCBjb25zdCBHQ0dM
ZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQotewot
ICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGds
OjpVbmlmb3JtMWZ2KGxvY2F0aW9uLCBzcmNMZW5ndGgsIGRhdGEgKyBzcmNPZmZzZXQpOwotfQot
Ci12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMmZ2KEdDR0xpbnQgbG9jYXRp
b24sIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBz
cmNMZW5ndGgpCi17Ci0gICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgZ2w6OlVuaWZvcm0yZnYobG9jYXRpb24sIHNyY0xlbmd0aCwgZGF0YSArIHNy
Y09mZnNldCk7Ci19Ci0KLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0zZnYo
R0NHTGludCBsb2NhdGlvbiwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZz
ZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKLXsKLSAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgp
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6VW5pZm9ybTNmdihsb2NhdGlvbiwgc3JjTGVu
Z3RoLCBkYXRhICsgc3JjT2Zmc2V0KTsKLX0KLQotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6dW5pZm9ybTRmdihHQ0dMaW50IGxvY2F0aW9uLCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdD
R0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQotewotICAgIGlmICghbWFrZUNv
bnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpVbmlmb3JtNGZ2KGxv
Y2F0aW9uLCBzcmNMZW5ndGgsIGRhdGEgKyBzcmNPZmZzZXQpOwotfQotCi12b2lkIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMWl2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0xp
bnQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQotewotICAg
IGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpV
bmlmb3JtMWl2KGxvY2F0aW9uLCBzcmNMZW5ndGgsIGRhdGEgKyBzcmNPZmZzZXQpOwotfQotCi12
b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMml2KEdDR0xpbnQgbG9jYXRpb24s
IGNvbnN0IEdDR0xpbnQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVu
Z3RoKQotewotICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsK
LQotICAgIGdsOjpVbmlmb3JtMml2KGxvY2F0aW9uLCBzcmNMZW5ndGgsIGRhdGEgKyBzcmNPZmZz
ZXQpOwotfQotCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtM2l2KEdDR0xp
bnQgbG9jYXRpb24sIGNvbnN0IEdDR0xpbnQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NH
THVpbnQgc3JjTGVuZ3RoKQotewotICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIGdsOjpVbmlmb3JtM2l2KGxvY2F0aW9uLCBzcmNMZW5ndGgsIGRh
dGEgKyBzcmNPZmZzZXQpOwotfQotCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlm
b3JtNGl2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0xpbnQqIGRhdGEsIEdDR0x1aW50IHNy
Y09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQotewotICAgIGlmICghbWFrZUNvbnRleHRDdXJy
ZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpVbmlmb3JtNGl2KGxvY2F0aW9uLCBz
cmNMZW5ndGgsIGRhdGEgKyBzcmNPZmZzZXQpOwotfQotCi12b2lkIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjp1bmlmb3JtTWF0cml4MmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRy
YW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1
aW50IHNyY0xlbmd0aCkKLXsKLSAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBnbDo6VW5pZm9ybU1hdHJpeDJmdihsb2NhdGlvbiwgc3JjTGVuZ3Ro
LCB0cmFuc3Bvc2UsIGRhdGEgKyBzcmNPZmZzZXQpOwotfQotCi12b2lkIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4M2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFu
IHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdD
R0x1aW50IHNyY0xlbmd0aCkKLXsKLSAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQotICAg
ICAgICByZXR1cm47Ci0KLSAgICBnbDo6VW5pZm9ybU1hdHJpeDNmdihsb2NhdGlvbiwgc3JjTGVu
Z3RoLCB0cmFuc3Bvc2UsIGRhdGEgKyBzcmNPZmZzZXQpOwotfQotCi12b2lkIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4NGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29s
ZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQs
IEdDR0x1aW50IHNyY0xlbmd0aCkKLXsKLSAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6VW5pZm9ybU1hdHJpeDRmdihsb2NhdGlvbiwgc3Jj
TGVuZ3RoLCB0cmFuc3Bvc2UsIGRhdGEgKyBzcmNPZmZzZXQpOwotfQotCiB2b2lkIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpnZXRBY3RpdmVVbmlmb3JtQmxvY2tpdihHQ0dMdWludCBwcm9ncmFt
LCBHQ0dMdWludCB1bmlmb3JtQmxvY2tJbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdD
R0xpbnQ+IHBhcmFtcykKIHsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvR3JhcGhpY3NDb250ZXh0
R0xDVkFOR0xFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0dyYXBo
aWNzQ29udGV4dEdMQ1ZBTkdMRS5jcHAKaW5kZXggZjliZmNhM2M0OGNlMjhlYWIxOTQ0YTRmNWU4
NTMwYTQyNWY4NjJmZS4uZDFjNjJhMzY3ZGZjNTg1YzVlOTQ4ODQzYTEzNWUwNDU1MGQ1MGQ5NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvR3JhcGhpY3ND
b250ZXh0R0xDVkFOR0xFLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jdi9HcmFwaGljc0NvbnRleHRHTENWQU5HTEUuY3BwCkBAIC0xLDYgKzEsNiBAQAogLyoKICAq
IENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiAK
KyAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwogICogYXJlIG1ldDoKQEAgLTIzNSwxOCAr
MjM1LDEzIEBAIHN0cnVjdCBHTGZsb2F0Q29sb3JzIHsKIH07CiAKIHN0cnVjdCBZQ2JDck1hdHJp
eCB7Ci0gICAgdW5pb24gewotICAgICAgICBHTGZsb2F0IHJvd3NbNF1bNF07Ci0gICAgICAgIEdM
ZmxvYXQgZGF0YVsxNl07Ci0gICAgfTsKKyAgICBHTGZsb2F0IHJvd3NbNF1bNF07CiAKICAgICBj
b25zdGV4cHIgWUNiQ3JNYXRyaXgoUGl4ZWxSYW5nZSwgR0xmbG9hdCBjYkNvZWZmaWNpZW50LCBH
TGZsb2F0IGNyQ29lZmZpY2llbnQpOwogCi0gICAgb3BlcmF0b3IgVmVjdG9yPEdMZmxvYXQ+KCkg
Y29uc3QKKyAgICBvcGVyYXRvciBHQ0dMU3Bhbjxjb25zdCBHTGZsb2F0LCAxNj4oKSBjb25zdAog
ICAgIHsKLSAgICAgICAgVmVjdG9yPEdMZmxvYXQ+IHZlY3RvcjsKLSAgICAgICAgdmVjdG9yLmFw
cGVuZChkYXRhLCAxNik7Ci0gICAgICAgIHJldHVybiB2ZWN0b3I7CisgICAgICAgIHJldHVybiBt
YWtlR0NHTFNwYW48MTY+KCZyb3dzWzBdWzBdKTsKICAgICB9CiAKICAgICBjb25zdGV4cHIgR0xm
bG9hdENvbG9yIG9wZXJhdG9yKihjb25zdCBHTGZsb2F0Q29sb3ImKSBjb25zdDsKQEAgLTMxOCwx
MCArMzEzLDEwIEBAIGNvbnN0ZXhwciBHTGZsb2F0Q29sb3IgWUNiQ3JNYXRyaXg6Om9wZXJhdG9y
Kihjb25zdCBHTGZsb2F0Q29sb3ImIGNvbG9yKSBjb25zdAogICAgICk7CiB9CiAKLXN0YXRpYyBj
b25zdCBWZWN0b3I8R0xmbG9hdD4gWUNiQ3JUb1JHQk1hdHJpeEZvclJhbmdlQW5kVHJhbnNmZXJG
dW5jdGlvbihQaXhlbFJhbmdlIHJhbmdlLCBUcmFuc2ZlckZ1bmN0aW9uQ1YgdHJhbnNmZXJGdW5j
dGlvbikKK3N0YXRpYyBHQ0dMU3Bhbjxjb25zdCBHTGZsb2F0LCAxNj4gWUNiQ3JUb1JHQk1hdHJp
eEZvclJhbmdlQW5kVHJhbnNmZXJGdW5jdGlvbihQaXhlbFJhbmdlIHJhbmdlLCBUcmFuc2ZlckZ1
bmN0aW9uQ1YgdHJhbnNmZXJGdW5jdGlvbikKIHsKICAgICB1c2luZyBNYXBLZXkgPSBzdGQ6OnBh
aXI8UGl4ZWxSYW5nZSwgVHJhbnNmZXJGdW5jdGlvbkNWPjsKLSAgICB1c2luZyBNYXRyaXhNYXAg
PSBTdGRNYXA8TWFwS2V5LCBWZWN0b3I8R0xmbG9hdD4+OworICAgIHVzaW5nIE1hdHJpeE1hcCA9
IFN0ZE1hcDxNYXBLZXksIGNvbnN0IFlDYkNyTWF0cml4Jj47CiAKICAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8TWF0cml4TWFwPiBtYXRyaWNlczsKICAgICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90
IG9uY2VUb2tlbjsKQEAgLTUyNiw3ICs1MjEsNyBAQCBib29sIEdyYXBoaWNzQ29udGV4dEdMQ1ZB
TkdMRTo6aW5pdGlhbGl6ZVVWQ29udGV4dE9iamVjdHMoKQogICAgIGZsb2F0IHZlcnRpY2VzWzEy
XSA9IHsgLTEsIC0xLCAxLCAtMSwgMSwgMSwgMSwgMSwgLTEsIDEsIC0xLCAtMSB9OwogCiAgICAg
bV9jb250ZXh0LT5iaW5kQnVmZmVyKEdyYXBoaWNzQ29udGV4dEdMOjpBUlJBWV9CVUZGRVIsIG1f
eXV2VmVydGV4QnVmZmVyKTsKLSAgICBtX2NvbnRleHQtPmJ1ZmZlckRhdGEoR3JhcGhpY3NDb250
ZXh0R0w6OkFSUkFZX0JVRkZFUiwgc2l6ZW9mKHZlcnRpY2VzKSwgdmVydGljZXMsIEdyYXBoaWNz
Q29udGV4dEdMOjpTVEFUSUNfRFJBVyk7CisgICAgbV9jb250ZXh0LT5idWZmZXJEYXRhKEdyYXBo
aWNzQ29udGV4dEdMOjpBUlJBWV9CVUZGRVIsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPih2ZXJ0
aWNlcywgc2l6ZW9mKHZlcnRpY2VzKSksIEdyYXBoaWNzQ29udGV4dEdMOjpTVEFUSUNfRFJBVyk7
CiAgICAgbV9jb250ZXh0LT5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShtX3l1dlBvc2l0aW9uQXR0
cmlidXRlTG9jYXRpb24pOwogICAgIG1fY29udGV4dC0+dmVydGV4QXR0cmliUG9pbnRlcihtX3l1
dlBvc2l0aW9uQXR0cmlidXRlTG9jYXRpb24sIDIsIEdyYXBoaWNzQ29udGV4dEdMOjpGTE9BVCwg
ZmFsc2UsIDAsIDApOwogCkBAIC02MDAsNyArNTk1LDcgQEAgYm9vbCBHcmFwaGljc0NvbnRleHRH
TENWQU5HTEU6OmNvcHlQaXhlbEJ1ZmZlclRvVGV4dHVyZShDVlBpeGVsQnVmZmVyUmVmIGltYWdl
LAogCiAgICAgYXV0byBuZXdTdXJmYWNlU2VlZCA9IElPU3VyZmFjZUdldFNlZWQoc3VyZmFjZSk7
CiAgICAgaWYgKGZsaXBZID09IG1fbGFzdEZsaXBZCi0gICAgICAgICYmIHN1cmZhY2UgPT0gbV9s
YXN0U3VyZmFjZSAKKyAgICAgICAgJiYgc3VyZmFjZSA9PSBtX2xhc3RTdXJmYWNlCiAgICAgICAg
ICYmIG5ld1N1cmZhY2VTZWVkID09IG1fbGFzdFN1cmZhY2VTZWVkCiAgICAgICAgICYmIGxhc3RU
ZXh0dXJlU2VlZChvdXRwdXRUZXh0dXJlKSA9PSBtX2NvbnRleHQtPnRleHR1cmVTZWVkKG91dHB1
dFRleHR1cmUpKSB7CiAgICAgICAgIC8vIElmIHRoZSB0ZXh0dXJlIGhhc24ndCBiZWVuIG1vZGlm
aWVkIHNpbmNlIHRoZSBsYXN0IHRpbWUgd2UgY29waWVkIHRvIGl0LCBhbmQgdGhlCkBAIC02MjUs
NyArNjIwLDcgQEAgYm9vbCBHcmFwaGljc0NvbnRleHRHTENWQU5HTEU6OmNvcHlQaXhlbEJ1ZmZl
clRvVGV4dHVyZShDVlBpeGVsQnVmZmVyUmVmIGltYWdlLAogICAgIG1fY29udGV4dC0+dGV4UGFy
YW1ldGVyaShHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0R0w6
OlRFWFRVUkVfTUlOX0ZJTFRFUiwgR3JhcGhpY3NDb250ZXh0R0w6OkxJTkVBUik7CiAgICAgbV9j
b250ZXh0LT50ZXhQYXJhbWV0ZXJpKEdyYXBoaWNzQ29udGV4dEdMOjpURVhUVVJFXzJELCBHcmFw
aGljc0NvbnRleHRHTDo6VEVYVFVSRV9XUkFQX1MsIEdyYXBoaWNzQ29udGV4dEdMOjpDTEFNUF9U
T19FREdFKTsKICAgICBtX2NvbnRleHQtPnRleFBhcmFtZXRlcmkoR3JhcGhpY3NDb250ZXh0R0w6
OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4dEdMOjpURVhUVVJFX1dSQVBfVCwgR3JhcGhpY3ND
b250ZXh0R0w6OkNMQU1QX1RPX0VER0UpOwotICAgIG1fY29udGV4dC0+dGV4SW1hZ2UyRERpcmVj
dChHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV8yRCwgbGV2ZWwsIGludGVybmFsRm9ybWF0LCB3
aWR0aCwgaGVpZ2h0LCAwLCBmb3JtYXQsIHR5cGUsIG51bGxwdHIpOworICAgIGdsOjpUZXhJbWFn
ZTJEKEdMX1RFWFRVUkVfMkQsIGxldmVsLCBpbnRlcm5hbEZvcm1hdCwgd2lkdGgsIGhlaWdodCwg
MCwgZm9ybWF0LCB0eXBlLCBudWxscHRyKTsKIAogICAgIG1fY29udGV4dC0+ZnJhbWVidWZmZXJU
ZXh0dXJlMkQoR3JhcGhpY3NDb250ZXh0R0w6OkZSQU1FQlVGRkVSLCBHcmFwaGljc0NvbnRleHRH
TDo6Q09MT1JfQVRUQUNITUVOVDAsIEdyYXBoaWNzQ29udGV4dEdMOjpURVhUVVJFXzJELCBvdXRw
dXRUZXh0dXJlLCBsZXZlbCk7CiAgICAgR0NHTGVudW0gc3RhdHVzID0gbV9jb250ZXh0LT5jaGVj
a0ZyYW1lYnVmZmVyU3RhdHVzKEdyYXBoaWNzQ29udGV4dEdMOjpGUkFNRUJVRkZFUik7CkBAIC02
ODIsOCArNjc3LDggQEAgYm9vbCBHcmFwaGljc0NvbnRleHRHTENWQU5HTEU6OmNvcHlQaXhlbEJ1
ZmZlclRvVGV4dHVyZShDVlBpeGVsQnVmZmVyUmVmIGltYWdlLAogCiAgICAgYXV0byByYW5nZSA9
IHBpeGVsUmFuZ2VGcm9tUGl4ZWxGb3JtYXQocGl4ZWxGb3JtYXQpOwogICAgIGF1dG8gdHJhbnNm
ZXJGdW5jdGlvbiA9IHRyYW5zZmVyRnVuY3Rpb25Gcm9tU3RyaW5nKChDRlN0cmluZ1JlZilDVkJ1
ZmZlckdldEF0dGFjaG1lbnQoaW1hZ2UsIGtDVkltYWdlQnVmZmVyWUNiQ3JNYXRyaXhLZXksIG5p
bCkpOwotICAgIGF1dG8mIGNvbG9yTWF0cml4ID0gWUNiQ3JUb1JHQk1hdHJpeEZvclJhbmdlQW5k
VHJhbnNmZXJGdW5jdGlvbihyYW5nZSwgdHJhbnNmZXJGdW5jdGlvbik7Ci0gICAgbV9jb250ZXh0
LT51bmlmb3JtTWF0cml4NGZ2KG1fY29sb3JNYXRyaXhVbmlmb3JtTG9jYXRpb24sIDEsIEdMX0ZB
TFNFLCBjb2xvck1hdHJpeC5kYXRhKCkpOworICAgIGF1dG8gY29sb3JNYXRyaXggPSBZQ2JDclRv
UkdCTWF0cml4Rm9yUmFuZ2VBbmRUcmFuc2ZlckZ1bmN0aW9uKHJhbmdlLCB0cmFuc2ZlckZ1bmN0
aW9uKTsKKyAgICBtX2NvbnRleHQtPnVuaWZvcm1NYXRyaXg0ZnYobV9jb2xvck1hdHJpeFVuaWZv
cm1Mb2NhdGlvbiwgR0xfRkFMU0UsIGNvbG9yTWF0cml4KTsKIAogICAgIC8vIERvIHRoZSBhY3R1
YWwgZHJhd2luZy4KICAgICBtX2NvbnRleHQtPmRyYXdBcnJheXMoR3JhcGhpY3NDb250ZXh0R0w6
OlRSSUFOR0xFUywgMCwgNik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuY3BwCmluZGV4IDE3Nzg2
YTY0YmE0ZTFkYTAwOTY0ZWFlOTk3ZDI5Mjc2NGRhZDE4OTYuLjdlYzgxY2Y0YWU1NzcyY2FlOTcy
ODhiYzgwZTM2NTY0NmQ2MjdjN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuY3BwCkBAIC0y
MDgsMTQgKzIwOCwxNCBAQCBib29sIEV4dGVuc2lvbnNHTE9wZW5HTDo6c3VwcG9ydHNFeHRlbnNp
b24oY29uc3QgU3RyaW5nJiBuYW1lKQogICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMu
Y29udGFpbnMobmFtZSk7CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMOjpkcmF3QnVmZmVy
c0VYVChHQ0dMc2l6ZWkgbiwgY29uc3QgR0NHTGVudW0qIGJ1ZnMpCit2b2lkIEV4dGVuc2lvbnNH
TE9wZW5HTDo6ZHJhd0J1ZmZlcnNFWFQoR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+IGJ1ZnMpCiB7
CiAgICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1
cm47CiAKICAgICAvLyAgRklYTUU6IGltcGxlbWVudCBzdXBwb3J0IGZvciBvdGhlciBwbGF0Zm9y
bXMuCiAjaWYgUExBVEZPUk0oR1RLKQotICAgIDo6Z2xEcmF3QnVmZmVycyhuLCBidWZzKTsKKyAg
ICA6OmdsRHJhd0J1ZmZlcnMoYnVmcy5idWZTaXplLCBidWZzLmRhdGEpOwogI2Vsc2UKICAgICBV
TlVTRURfUEFSQU0obik7CiAgICAgVU5VU0VEX1BBUkFNKGJ1ZnMpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9w
ZW5HTC5oCmluZGV4IGQzYmU4Y2MyOGMxN2MyZGY1ZDNiNDg2NmJiM2M1Zjk0NGM0NTVmMjEuLjQ5
NjI4OWNlYTBlNmEwOWQ2ZGI3MzFmODY4YjU0OTkzYTQ0NDQ5YTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dM
T3BlbkdMLmgKQEAgLTUwLDcgKzUwLDcgQEAgcHVibGljOgogICAgIHZvaWQgaW5zZXJ0RXZlbnRN
YXJrZXJFWFQoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBwdXNoR3JvdXBNYXJr
ZXJFWFQoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBwb3BHcm91cE1hcmtlckVY
VCh2b2lkKSBvdmVycmlkZTsKLSAgICB2b2lkIGRyYXdCdWZmZXJzRVhUKEdDR0xzaXplaSwgY29u
c3QgR0NHTGVudW0qKSBvdmVycmlkZTsKKyAgICB2b2lkIGRyYXdCdWZmZXJzRVhUKEdDR0xTcGFu
PGNvbnN0IEdDR0xlbnVtPikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGRyYXdBcnJheXNJbnN0YW5j
ZWQoR0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHNpemVpIGNvdW50LCBHQ0dMc2l6
ZWkgcHJpbWNvdW50KSBvdmVycmlkZTsKICAgICB2b2lkIGRyYXdFbGVtZW50c0luc3RhbmNlZChH
Q0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIGxvbmcgbG9uZyBv
ZmZzZXQsIEdDR0xzaXplaSBwcmltY291bnQpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1v
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9u
c0dMT3BlbkdMQ29tbW9uLmNwcAppbmRleCA2ODZmMmQ1MTE0OGVmOWIxMmZlZjEwYjNjMmFjNzBi
MmEzNWQyMTU3Li5lOTBjMDY2MGQyM2MwYmIyY2EyYmRkZjM2ZDY4NGYzOGE5MmQ4ZWRkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9u
c0dMT3BlbkdMQ29tbW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmNwcApAQCAtMjU5LDcgKzI1OSw3IEBA
IHZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpyZWFkUGl4ZWxzUm9idXN0QU5HTEUoaW50
LCBpbnQsIEdDR0xzaXplaSwgR0NHTHNpCiAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJv
cihHTF9JTlZBTElEX09QRVJBVElPTik7CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29t
bW9uOjp0ZXhJbWFnZTJEUm9idXN0QU5HTEUoR0NHTGVudW0sIGludCwgaW50LCBHQ0dMc2l6ZWks
IEdDR0xzaXplaSwgaW50LCBHQ0dMZW51bSwgR0NHTGVudW0sIEdDR0xzaXplaSwgY29uc3Qgdm9p
ZCAqKQordm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OnRleEltYWdlMkRSb2J1c3RBTkdM
RShHQ0dMZW51bSwgaW50LCBpbnQsIEdDR0xzaXplaSwgR0NHTHNpemVpLCBpbnQsIEdDR0xlbnVt
LCBHQ0dMZW51bSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+KQogewogICAgIG1fY29udGV4dC0+
c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwogfQpAQCAtMjc0LDM4ICsy
NzQsMzggQEAgdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OnRleFBhcmFtZXRlcml2Um9i
dXN0QU5HTEUoR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0cKICAgICBtX2NvbnRleHQtPnN5bnRoZXNp
emVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xP
cGVuR0xDb21tb246OnRleFN1YkltYWdlMkRSb2J1c3RBTkdMRShHQ0dMZW51bSwgaW50LCBpbnQs
IGludCwgR0NHTHNpemVpLCBHQ0dMc2l6ZWksIEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTHNpemVp
LCBjb25zdCB2b2lkICopCit2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6dGV4U3ViSW1h
Z2UyRFJvYnVzdEFOR0xFKEdDR0xlbnVtLCBpbnQsIGludCwgaW50LCBHQ0dMc2l6ZWksIEdDR0xz
aXplaSwgR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4pCiB7CiAg
ICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CiB9
CiAKLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpjb21wcmVzc2VkVGV4SW1hZ2UyRFJv
YnVzdEFOR0xFKEdDR0xlbnVtLCBpbnQsIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSwg
aW50LCBHQ0dMc2l6ZWksIEdDR0xzaXplaSwgY29uc3Qgdm9pZCopCit2b2lkIEV4dGVuc2lvbnNH
TE9wZW5HTENvbW1vbjo6Y29tcHJlc3NlZFRleEltYWdlMkRSb2J1c3RBTkdMRShHQ0dMZW51bSwg
aW50LCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWksIGludCwgR0NHTHNpemVpLCBHQ0dM
U3Bhbjxjb25zdCBHQ0dMdm9pZD4pCiB7CiAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJv
cihHTF9JTlZBTElEX09QRVJBVElPTik7CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29t
bW9uOjpjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRFJvYnVzdEFOR0xFKEdDR0xlbnVtLCBpbnQsIGlu
dCwgaW50LCBHQ0dMc2l6ZWksIEdDR0xzaXplaSwgR0NHTGVudW0sIEdDR0xzaXplaSwgR0NHTHNp
emVpLCBjb25zdCB2b2lkKikKK3ZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpjb21wcmVz
c2VkVGV4U3ViSW1hZ2UyRFJvYnVzdEFOR0xFKEdDR0xlbnVtLCBpbnQsIGludCwgaW50LCBHQ0dM
c2l6ZWksIEdDR0xzaXplaSwgR0NHTGVudW0sIEdDR0xzaXplaSwgR0NHTFNwYW48Y29uc3QgR0NH
THZvaWQ+KQogewogICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9P
UEVSQVRJT04pOwogfQogCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Y29tcHJlc3Nl
ZFRleEltYWdlM0RSb2J1c3RBTkdMRShHQ0dMZW51bSwgaW50LCBHQ0dMZW51bSwgR0NHTHNpemVp
LCBHQ0dMc2l6ZWksIEdDR0xzaXplaSwgaW50LCBHQ0dMc2l6ZWksIEdDR0xzaXplaSwgY29uc3Qg
dm9pZCopCit2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Y29tcHJlc3NlZFRleEltYWdl
M0RSb2J1c3RBTkdMRShHQ0dMZW51bSwgaW50LCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6
ZWksIEdDR0xzaXplaSwgaW50LCBHQ0dMc2l6ZWksIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPikK
IHsKICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9O
KTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmNvbXByZXNzZWRUZXhTdWJJ
bWFnZTNEUm9idXN0QU5HTEUoR0NHTGVudW0sIGludCwgaW50LCBpbnQsIGludCwgR0NHTHNpemVp
LCBHQ0dMc2l6ZWksIEdDR0xzaXplaSwgR0NHTGVudW0sIEdDR0xzaXplaSwgR0NHTHNpemVpLCBj
b25zdCB2b2lkKikKK3ZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpjb21wcmVzc2VkVGV4
U3ViSW1hZ2UzRFJvYnVzdEFOR0xFKEdDR0xlbnVtLCBpbnQsIGludCwgaW50LCBpbnQsIEdDR0xz
aXplaSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWksIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xTcGFu
PGNvbnN0IEdDR0x2b2lkPikKIHsKICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdM
X0lOVkFMSURfT1BFUkFUSU9OKTsKIH0KIAogCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1v
bjo6dGV4SW1hZ2UzRFJvYnVzdEFOR0xFKEdDR0xlbnVtLCBpbnQsIGludCwgR0NHTHNpemVpLCBH
Q0dMc2l6ZWksIEdDR0xzaXplaSwgaW50LCBHQ0dMZW51bSwgR0NHTGVudW0sIEdDR0xzaXplaSwg
Y29uc3Qgdm9pZCAqKQordm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OnRleEltYWdlM0RS
b2J1c3RBTkdMRShHQ0dMZW51bSwgaW50LCBpbnQsIEdDR0xzaXplaSwgR0NHTHNpemVpLCBHQ0dM
c2l6ZWksIGludCwgR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4p
CiB7CiAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElP
Tik7CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjp0ZXhTdWJJbWFnZTNEUm9i
dXN0QU5HTEUoR0NHTGVudW0sIGludCwgaW50LCBpbnQsIGludCwgR0NHTHNpemVpLCBHQ0dMc2l6
ZWksIEdDR0xzaXplaSwgR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIGNvbnN0IHZvaWQg
KikKK3ZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjp0ZXhTdWJJbWFnZTNEUm9idXN0QU5H
TEUoR0NHTGVudW0sIGludCwgaW50LCBpbnQsIGludCwgR0NHTHNpemVpLCBHQ0dMc2l6ZWksIEdD
R0xzaXplaSwgR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4pCiB7
CiAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wv
RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmgKaW5kZXggOTdlZWRmYjc0ODVj
ODMyZjc5M2M4Y2ZmMGZhMTdmYmZmYmU2NTg4ZC4uMTc2Mzc5YWY0MTc0MDc1ZGRhMTQzOWJkNTNj
OTY2MzZiYWY3OWRhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uaApAQCAt
NTAsNyArNTAsNyBAQCBwdWJsaWM6CiAgICAgR0NHTGJvb2xlYW4gaXNWZXJ0ZXhBcnJheU9FUyhQ
bGF0Zm9ybUdMT2JqZWN0KSBvdmVycmlkZSA9IDA7CiAgICAgdm9pZCBiaW5kVmVydGV4QXJyYXlP
RVMoUGxhdGZvcm1HTE9iamVjdCkgb3ZlcnJpZGUgPSAwOwogCi0gICAgdm9pZCBkcmF3QnVmZmVy
c0VYVChHQ0dMc2l6ZWksIGNvbnN0IEdDR0xlbnVtKikgb3ZlcnJpZGUgPSAwOworICAgIHZvaWQg
ZHJhd0J1ZmZlcnNFWFQoR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+KSBvdmVycmlkZSA9IDA7CiAK
ICAgICBTdHJpbmcgZ2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKFBsYXRmb3JtR0xPYmpl
Y3QpIG92ZXJyaWRlOwogCkBAIC03MCwxNyArNzAsMTcgQEAgcHVibGljOgogCiAgICAgLy8gR0xf
QU5HTEVfcm9idXN0X2NsaWVudF9tZW1vcnkKICAgICB2b2lkIHJlYWRQaXhlbHNSb2J1c3RBTkdM
RShpbnQgeCwgaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVu
dW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICps
ZW5ndGgsIEdDR0xzaXplaSAqY29sdW1ucywgR0NHTHNpemVpICpyb3dzLCB2b2lkICpwaXhlbHMp
IG92ZXJyaWRlOwotICAgIHZvaWQgdGV4SW1hZ2UyRFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdl
dCwgaW50IGxldmVsLCBpbnQgaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNp
emVpIGhlaWdodCwgaW50IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3Qgdm9pZCAqcGl4ZWxzKSBvdmVycmlkZTsKKyAgICB2b2lk
IHRleEltYWdlMkRSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIGludCBsZXZlbCwgaW50IGlu
dGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIGludCBib3Jk
ZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZv
aWQ+IHBpeGVscykgb3ZlcnJpZGU7CiAgICAgdm9pZCB0ZXhQYXJhbWV0ZXJmdlJvYnVzdEFOR0xF
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25z
dCBHQ0dMZmxvYXQgKnBhcmFtcykgb3ZlcnJpZGU7CiAgICAgdm9pZCB0ZXhQYXJhbWV0ZXJpdlJv
YnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZT
aXplLCBjb25zdCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgdGV4U3ViSW1h
Z2UyRFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgaW50IGxldmVsLCBpbnQgeG9mZnNldCwg
aW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0g
Zm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3Qgdm9pZCAqcGl4
ZWxzKSBvdmVycmlkZTsKLSAgICB2b2lkIGNvbXByZXNzZWRUZXhJbWFnZTJEUm9idXN0QU5HTEUo
R0NHTGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dM
c2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIGludCBib3JkZXIsIEdDR0xzaXplaSBpbWFn
ZVNpemUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCB2b2lkKiBkYXRhKSBvdmVycmlkZTsKLSAg
ICB2b2lkIGNvbXByZXNzZWRUZXhTdWJJbWFnZTJEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0
LCBpbnQgbGV2ZWwsIGludCB4b2Zmc2V0LCBpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBH
Q0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdD
R0xzaXplaSBidWZTaXplLCBjb25zdCB2b2lkKiBkYXRhKSBvdmVycmlkZTsKLSAgICB2b2lkIGNv
bXByZXNzZWRUZXhJbWFnZTNEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWws
IEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWln
aHQsIEdDR0xzaXplaSBkZXB0aCwgaW50IGJvcmRlciwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NH
THNpemVpIGJ1ZlNpemUsIGNvbnN0IHZvaWQqIGRhdGEpIG92ZXJyaWRlOwotICAgIHZvaWQgY29t
cHJlc3NlZFRleFN1YkltYWdlM0RSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIGludCBsZXZl
bCwgaW50IHhvZmZzZXQsIGludCB5b2Zmc2V0LCBpbnQgem9mZnNldCwgR0NHTHNpemVpIHdpZHRo
LCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xlbnVtIGZvcm1hdCwgR0NH
THNpemVpIGltYWdlU2l6ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IHZvaWQqIGRhdGEpIG92
ZXJyaWRlOwotCi0gICAgdm9pZCB0ZXhJbWFnZTNEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0
LCBpbnQgbGV2ZWwsIGludCBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6
ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwg
R0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IHZvaWQgKnBpeGVscykgb3Zl
cnJpZGU7Ci0gICAgdm9pZCB0ZXhTdWJJbWFnZTNEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0
LCBpbnQgbGV2ZWwsIGludCB4b2Zmc2V0LCBpbnQgeW9mZnNldCwgaW50IHpvZmZzZXQsIEdDR0xz
aXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMZW51bSBm
b3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCB2b2lkICpwaXhl
bHMpIG92ZXJyaWRlOworICAgIHZvaWQgdGV4U3ViSW1hZ2UyRFJvYnVzdEFOR0xFKEdDR0xlbnVt
IHRhcmdldCwgaW50IGxldmVsLCBpbnQgeG9mZnNldCwgaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3
aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBH
Q0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gcGl4ZWxzKSBvdmVycmlkZTsKKyAgICB2b2lkIGNvbXBy
ZXNzZWRUZXhJbWFnZTJEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWwsIEdD
R0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQs
IGludCBib3JkZXIsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lk
PiBkYXRhKSBvdmVycmlkZTsKKyAgICB2b2lkIGNvbXByZXNzZWRUZXhTdWJJbWFnZTJEUm9idXN0
QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWwsIGludCB4b2Zmc2V0LCBpbnQgeW9mZnNl
dCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdD
R0xzaXplaSBpbWFnZVNpemUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRhKSBvdmVycmlk
ZTsKKyAgICB2b2lkIGNvbXByZXNzZWRUZXhJbWFnZTNEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFy
Z2V0LCBpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgs
IEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgaW50IGJvcmRlciwgR0NHTHNpemVp
IGltYWdlU2l6ZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEpIG92ZXJyaWRlOworICAg
IHZvaWQgY29tcHJlc3NlZFRleFN1YkltYWdlM0RSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQs
IGludCBsZXZlbCwgaW50IHhvZmZzZXQsIGludCB5b2Zmc2V0LCBpbnQgem9mZnNldCwgR0NHTHNp
emVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xlbnVtIGZv
cm1hdCwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEp
IG92ZXJyaWRlOworCisgICAgdm9pZCB0ZXhJbWFnZTNEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFy
Z2V0LCBpbnQgbGV2ZWwsIGludCBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dM
c2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1h
dCwgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IHBpeGVscykgb3ZlcnJp
ZGU7CisgICAgdm9pZCB0ZXhTdWJJbWFnZTNEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBp
bnQgbGV2ZWwsIGludCB4b2Zmc2V0LCBpbnQgeW9mZnNldCwgaW50IHpvZmZzZXQsIEdDR0xzaXpl
aSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMZW51bSBmb3Jt
YXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBwaXhlbHMpIG92ZXJy
aWRlOwogICAgIHZvaWQgZ2V0UXVlcnlpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NH
TGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGlu
dCAqcGFyYW1zKSBvdmVycmlkZTsKICAgICB2b2lkIGdldFF1ZXJ5T2JqZWN0dWl2Um9idXN0QU5H
TEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNp
emVpICpsZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMpIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0QnVm
ZmVyUG9pbnRlcnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIHZvaWQgKipwYXJhbXMpIG92ZXJy
aWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Blbmds
L0V4dGVuc2lvbnNHTE9wZW5HTEVTLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5jcHAKaW5kZXggZDI4ZjRhMDMxZWJkYzQ4
Mzg3NWQzOTg0ODdkNTc4NzQ4ZmRlNDdlNy4uMzZjM2VmMzhmOThiOTlhZjAxMTUwNjk5MTQyN2Jh
Y2VmY2JiOGFjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuY3BwCkBAIC0xODAsNyAr
MTgwLDcgQEAgdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xFUzo6YmluZFZlcnRleEFycmF5T0VTKFBs
YXRmb3JtR0xPYmplY3QgYXJyYXkpCiAgICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJy
b3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwogfQogCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTEVT
OjpkcmF3QnVmZmVyc0VYVChHQ0dMc2l6ZWkgLyogbiAqLywgY29uc3QgR0NHTGVudW0qIC8qIGJ1
ZnMgKi8pCit2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTEVTOjpkcmF3QnVmZmVyc0VYVChHQ0dMU3Bh
bjxjb25zdCBHQ0dMZW51bT4gLyogYnVmcyAqLykKIHsKICAgICAvLyBGSVhNRTogaW1wbGVtZW50
IHRoZSBzdXBwb3J0LgogICAgIG5vdEltcGxlbWVudGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVu
R0xFUy5oCmluZGV4IGM3NDgyNWM4MWVhZDBhNzQ2MGFlYTFkYWYxYzlhZTE4MzcwMjkzOTYuLjAx
N2E0NWI3Mzk4ZDA5OTJlZDE0NzY3ZjA3NjdlMDRiNDY0MTYyODMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25z
R0xPcGVuR0xFUy5oCkBAIC04NSw3ICs4NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRlbGV0ZVZl
cnRleEFycmF5T0VTKFBsYXRmb3JtR0xPYmplY3QpIG92ZXJyaWRlOwogICAgIEdDR0xib29sZWFu
IGlzVmVydGV4QXJyYXlPRVMoUGxhdGZvcm1HTE9iamVjdCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBi
aW5kVmVydGV4QXJyYXlPRVMoUGxhdGZvcm1HTE9iamVjdCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBk
cmF3QnVmZmVyc0VYVChHQ0dMc2l6ZWksIGNvbnN0IEdDR0xlbnVtKikgb3ZlcnJpZGU7CisgICAg
dm9pZCBkcmF3QnVmZmVyc0VYVChHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4pIG92ZXJyaWRlOwog
CiAgICAgdm9pZCBkcmF3QXJyYXlzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmly
c3QsIEdDR0xzaXplaSBjb3VudCwgR0NHTHNpemVpIHByaW1jb3VudCkgb3ZlcnJpZGU7CiAgICAg
dm9pZCBkcmF3RWxlbWVudHNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50
LCBHQ0dMZW51bSB0eXBlLCBsb25nIGxvbmcgb2Zmc2V0LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSBv
dmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuY3BwCmluZGV4IGYxNWI3
ZjI5NWE5NTFiMmQ4OTRlYzBmYTkxOTU0ZTk2ZjQ3YTRjMTMuLjg0MmI2YWJmN2I2NmE1MTg5OWZl
ZjI5MjgzZDhiOWRkOTg3MDRkZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdM
LmNwcApAQCAtNzYsOCArNzYsOCBAQCBib29sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp0ZXhJ
bWFnZTJEUmVzb3VyY2VTYWZlKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZQogewogICAgIEFT
U0VSVCh1bnBhY2tBbGlnbm1lbnQgPT0gMSB8fCB1bnBhY2tBbGlnbm1lbnQgPT0gMiB8fCB1bnBh
Y2tBbGlnbm1lbnQgPT0gNCB8fCB1bnBhY2tBbGlnbm1lbnQgPT0gOCk7CiAgICAgVW5pcXVlQXJy
YXk8dW5zaWduZWQgY2hhcj4gemVybzsKKyAgICB1bnNpZ25lZCBzaXplID0gMDsKICAgICBpZiAo
d2lkdGggPiAwICYmIGhlaWdodCA+IDApIHsKLSAgICAgICAgdW5zaWduZWQgc2l6ZTsKICAgICAg
ICAgUGl4ZWxTdG9yZVBhcmFtcyBwYXJhbXM7CiAgICAgICAgIHBhcmFtcy5hbGlnbm1lbnQgPSB1
bnBhY2tBbGlnbm1lbnQ7CiAgICAgICAgIEdDR0xlbnVtIGVycm9yID0gY29tcHV0ZUltYWdlU2l6
ZUluQnl0ZXMoZm9ybWF0LCB0eXBlLCB3aWR0aCwgaGVpZ2h0LCAxLCBwYXJhbXMsICZzaXplLCBu
dWxscHRyLCBudWxscHRyKTsKQEAgLTkyLDcgKzkyLDcgQEAgYm9vbCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6dGV4SW1hZ2UyRFJlc291cmNlU2FmZShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQg
bGUKICAgICAgICAgfQogICAgICAgICBtZW1zZXQoemVyby5nZXQoKSwgMCwgc2l6ZSk7CiAgICAg
fQotICAgIHJldHVybiB0ZXhJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3
aWR0aCwgaGVpZ2h0LCBib3JkZXIsIGZvcm1hdCwgdHlwZSwgemVyby5nZXQoKSk7CisgICAgcmV0
dXJuIHRleEltYWdlMkQodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWln
aHQsIGJvcmRlciwgZm9ybWF0LCB0eXBlLCBtYWtlR0NHTFNwYW4oemVyby5nZXQoKSwgc2l6ZSkp
OwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKaW5kZXggMDk5
MjY3OGI4ZGMxZTE4M2Q5ODI1OWI3NzMxNWMzNjEyMTcwMTMwZi4uNTQxMzQ2ZmQxZjg1M2Q0NWJl
MzIzYTcyZjJlZjIzNzgwMzkyMDE3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdM
LmgKQEAgLTExOSw5ICsxMTksNiBAQCBwdWJsaWM6CiAgICAgLy8gV2l0aCBtdWx0aXNhbXBsaW5n
IG9uLCBibGl0IGZyb20gbXVsdGlzYW1wbGVGQk8gdG8gcmVndWxhciBGQk8uCiAgICAgdm9pZCBw
cmVwYXJlVGV4dHVyZSgpOwogCi0gICAgLy8gRXF1aXZhbGVudCB0byA6OmdsVGV4SW1hZ2UyRCgp
LiBBbGxvd3MgcGl4ZWxzPT0wIHdpdGggbm8gYWxsb2NhdGlvbi4KLSAgICB2b2lkIHRleEltYWdl
MkREaXJlY3QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5h
bGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRl
ciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBjb25zdCB2b2lkKiBwaXhlbHMpOwot
CiAgICAgLy8gR2V0IGFuIGF0dHJpYnV0ZSBsb2NhdGlvbiB3aXRob3V0IGNoZWNraW5nIHRoZSBu
YW1lIC0+IG1hbmdsZWRuYW1lIG1hcHBpbmcuCiAgICAgaW50IGdldEF0dHJpYkxvY2F0aW9uRGly
ZWN0KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgY29uc3QgU3RyaW5nJiBuYW1lKTsKIApAQCAt
MTI5LDYgKzEyNiw5IEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbXBpbGVTaGFkZXJEaXJlY3QoUGxh
dGZvcm1HTE9iamVjdCk7CiAKICNpZiAhVVNFKEFOR0xFKQorICAgIC8vIEVxdWl2YWxlbnQgdG8g
OjpnbFRleEltYWdlMkQoKS4gQWxsb3dzIHBpeGVscz09MCB3aXRoIG5vIGFsbG9jYXRpb24uCisg
ICAgdm9pZCB0ZXhJbWFnZTJERGlyZWN0KEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwg
R0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdo
dCwgR0NHTGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgY29uc3Qg
dm9pZCogcGl4ZWxzKTsKKwogICAgIC8vIEhlbHBlciB0byB0ZXhJbWFnZTJEIHdpdGggcGl4ZWw9
PTAgY2FzZTogcGl4ZWxzIGFyZSBpbml0aWFsaXplZCB0byAwLgogICAgIC8vIFJldHVybiB0cnVl
IGlmIG5vIEdMIGVycm9yIGlzIHN5bnRoZXNpemVkLgogICAgIC8vIEJ5IGRlZmF1bHQsIGFsaWdu
bWVudCBpcyA0LCB0aGUgT3BlbkdMIGRlZmF1bHQgc2V0dGluZy4KQEAgLTE1NSw4ICsxNTUsOCBA
QCBwdWJsaWM6CiAgICAgdm9pZCBibGVuZEZ1bmNTZXBhcmF0ZShHQ0dMZW51bSBzcmNSR0IsIEdD
R0xlbnVtIGRzdFJHQiwgR0NHTGVudW0gc3JjQWxwaGEsIEdDR0xlbnVtIGRzdEFscGhhKSBmaW5h
bDsKIAogICAgIHZvaWQgYnVmZmVyRGF0YShHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaXB0ciBz
aXplLCBHQ0dMZW51bSB1c2FnZSkgZmluYWw7Ci0gICAgdm9pZCBidWZmZXJEYXRhKEdDR0xlbnVt
IHRhcmdldCwgR0NHTHNpemVpcHRyIHNpemUsIGNvbnN0IHZvaWQqIGRhdGEsIEdDR0xlbnVtIHVz
YWdlKSBmaW5hbDsKLSAgICB2b2lkIGJ1ZmZlclN1YkRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
aW50cHRyIG9mZnNldCwgR0NHTHNpemVpcHRyIHNpemUsIGNvbnN0IHZvaWQqIGRhdGEpIGZpbmFs
OworICAgIHZvaWQgYnVmZmVyRGF0YShHQ0dMZW51bSB0YXJnZXQsIEdDR0xTcGFuPGNvbnN0IEdD
R0x2b2lkPiBkYXRhLCBHQ0dMZW51bSB1c2FnZSkgZmluYWw7CisgICAgdm9pZCBidWZmZXJTdWJE
YXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludHB0ciBvZmZzZXQsIEdDR0xTcGFuPGNvbnN0IEdD
R0x2b2lkPiBkYXRhKSBmaW5hbDsKIAogICAgIEdDR0xlbnVtIGNoZWNrRnJhbWVidWZmZXJTdGF0
dXMoR0NHTGVudW0gdGFyZ2V0KSBmaW5hbDsKICAgICB2b2lkIGNsZWFyKEdDR0xiaXRmaWVsZCBt
YXNrKSBmaW5hbDsKQEAgLTI1MywzMCArMjUzLDMwIEBAIHB1YmxpYzoKICAgICB2b2lkIHN0ZW5j
aWxPcChHQ0dMZW51bSBmYWlsLCBHQ0dMZW51bSB6ZmFpbCwgR0NHTGVudW0genBhc3MpIGZpbmFs
OwogICAgIHZvaWQgc3RlbmNpbE9wU2VwYXJhdGUoR0NHTGVudW0gZmFjZSwgR0NHTGVudW0gZmFp
bCwgR0NHTGVudW0gemZhaWwsIEdDR0xlbnVtIHpwYXNzKSBmaW5hbDsKIAotICAgIGJvb2wgdGV4
SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFs
Zm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVy
LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIGNvbnN0IHZvaWQqIHBpeGVscykgZmlu
YWw7CisgICAgYm9vbCB0ZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwg
R0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdo
dCwgR0NHTGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTFNw
YW48Y29uc3QgR0NHTHZvaWQ+IHBpeGVscykgZmluYWw7CiAgICAgdm9pZCB0ZXhQYXJhbWV0ZXJm
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xmbG9hdCBwYXJhbSkgZmluYWw7
CiAgICAgdm9pZCB0ZXhQYXJhbWV0ZXJpKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUs
IEdDR0xpbnQgcGFyYW0pIGZpbmFsOwotICAgIHZvaWQgdGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0
YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBH
Q0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVu
dW0gdHlwZSwgY29uc3Qgdm9pZCogcGl4ZWxzKSBmaW5hbDsKKyAgICB2b2lkIHRleFN1YkltYWdl
MkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xp
bnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBm
b3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBwaXhlbHMpIGZp
bmFsOwogCiAgICAgdm9pZCB1bmlmb3JtMWYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGZsb2F0IHgp
IGZpbmFsOwotICAgIHZvaWQgdW5pZm9ybTFmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWks
IGNvbnN0IEdDR0xmbG9hdCogdikgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtMWZ2KEdDR0xpbnQg
bG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gdikgZmluYWw7CiAgICAgdm9pZCB1
bmlmb3JtMWkoR0NHTGludCBsb2NhdGlvbiwgR0NHTGludCB4KSBmaW5hbDsKLSAgICB2b2lkIHVu
aWZvcm0xaXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpLCBjb25zdCBHQ0dMaW50KiB2KSBm
aW5hbDsKKyAgICB2b2lkIHVuaWZvcm0xaXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29u
c3QgR0NHTGludD4gdikgZmluYWw7CiAgICAgdm9pZCB1bmlmb3JtMmYoR0NHTGludCBsb2NhdGlv
biwgR0NHTGZsb2F0IHgsIEdDR0xmbG9hdCB5KSBmaW5hbDsKLSAgICB2b2lkIHVuaWZvcm0yZnYo
R0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpLCBjb25zdCBHQ0dMZmxvYXQqIHYpIGZpbmFsOwor
ICAgIHZvaWQgdW5pZm9ybTJmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dM
ZmxvYXQ+IHYpIGZpbmFsOwogICAgIHZvaWQgdW5pZm9ybTJpKEdDR0xpbnQgbG9jYXRpb24sIEdD
R0xpbnQgeCwgR0NHTGludCB5KSBmaW5hbDsKLSAgICB2b2lkIHVuaWZvcm0yaXYoR0NHTGludCBs
b2NhdGlvbiwgR0NHTHNpemVpLCBjb25zdCBHQ0dMaW50KiB2KSBmaW5hbDsKKyAgICB2b2lkIHVu
aWZvcm0yaXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gdikgZmlu
YWw7CiAgICAgdm9pZCB1bmlmb3JtM2YoR0NHTGludCBsb2NhdGlvbiwgR0NHTGZsb2F0IHgsIEdD
R0xmbG9hdCB5LCBHQ0dMZmxvYXQgeikgZmluYWw7Ci0gICAgdm9pZCB1bmlmb3JtM2Z2KEdDR0xp
bnQgbG9jYXRpb24sIEdDR0xzaXplaSwgY29uc3QgR0NHTGZsb2F0KiB2KSBmaW5hbDsKKyAgICB2
b2lkIHVuaWZvcm0zZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0
PiB2KSBmaW5hbDsKICAgICB2b2lkIHVuaWZvcm0zaShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMaW50
IHgsIEdDR0xpbnQgeSwgR0NHTGludCB6KSBmaW5hbDsKLSAgICB2b2lkIHVuaWZvcm0zaXYoR0NH
TGludCBsb2NhdGlvbiwgR0NHTHNpemVpLCBjb25zdCBHQ0dMaW50KiB2KSBmaW5hbDsKKyAgICB2
b2lkIHVuaWZvcm0zaXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4g
dikgZmluYWw7CiAgICAgdm9pZCB1bmlmb3JtNGYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGZsb2F0
IHgsIEdDR0xmbG9hdCB5LCBHQ0dMZmxvYXQgeiwgR0NHTGZsb2F0IHcpIGZpbmFsOwotICAgIHZv
aWQgdW5pZm9ybTRmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWksIGNvbnN0IEdDR0xmbG9h
dCogdikgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtNGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xT
cGFuPGNvbnN0IEdDR0xmbG9hdD4gdikgZmluYWw7CiAgICAgdm9pZCB1bmlmb3JtNGkoR0NHTGlu
dCBsb2NhdGlvbiwgR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xpbnQgeiwgR0NHTGludCB3KSBm
aW5hbDsKLSAgICB2b2lkIHVuaWZvcm00aXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpLCBj
b25zdCBHQ0dMaW50KiB2KSBmaW5hbDsKLSAgICB2b2lkIHVuaWZvcm1NYXRyaXgyZnYoR0NHTGlu
dCBsb2NhdGlvbiwgR0NHTHNpemVpLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xm
bG9hdCogdmFsdWUpIGZpbmFsOwotICAgIHZvaWQgdW5pZm9ybU1hdHJpeDNmdihHQ0dMaW50IGxv
Y2F0aW9uLCBHQ0dMc2l6ZWksIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0
KiB2YWx1ZSkgZmluYWw7Ci0gICAgdm9pZCB1bmlmb3JtTWF0cml4NGZ2KEdDR0xpbnQgbG9jYXRp
b24sIEdDR0xzaXplaSwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHQ0dMZmxvYXQqIHZh
bHVlKSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm00aXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNw
YW48Y29uc3QgR0NHTGludD4gdikgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtTWF0cml4MmZ2KEdD
R0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NH
TGZsb2F0PiB2YWx1ZSkgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtTWF0cml4M2Z2KEdDR0xpbnQg
bG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0
PiB2YWx1ZSkgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtTWF0cml4NGZ2KEdDR0xpbnQgbG9jYXRp
b24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiB2YWx1
ZSkgZmluYWw7CiAKICAgICB2b2lkIHVzZVByb2dyYW0oUGxhdGZvcm1HTE9iamVjdCkgZmluYWw7
CiAgICAgdm9pZCB2YWxpZGF0ZVByb2dyYW0oUGxhdGZvcm1HTE9iamVjdCkgZmluYWw7CkBAIC0y
ODYsMTMgKzI4NiwxMyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogICAgIHZvaWQgdmVydGV4QXR0cmli
MWYoR0NHTHVpbnQgaW5kZXgsIEdDR0xmbG9hdCB4KSBmaW5hbDsKLSAgICB2b2lkIHZlcnRleEF0
dHJpYjFmdihHQ0dMdWludCBpbmRleCwgY29uc3QgR0NHTGZsb2F0KiB2YWx1ZXMpIGZpbmFsOwor
ICAgIHZvaWQgdmVydGV4QXR0cmliMWZ2KEdDR0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxjb25zdCBH
Q0dMZmxvYXQsIDE+IHZhbHVlcykgZmluYWw7CiAgICAgdm9pZCB2ZXJ0ZXhBdHRyaWIyZihHQ0dM
dWludCBpbmRleCwgR0NHTGZsb2F0IHgsIEdDR0xmbG9hdCB5KSBmaW5hbDsKLSAgICB2b2lkIHZl
cnRleEF0dHJpYjJmdihHQ0dMdWludCBpbmRleCwgY29uc3QgR0NHTGZsb2F0KiB2YWx1ZXMpIGZp
bmFsOworICAgIHZvaWQgdmVydGV4QXR0cmliMmZ2KEdDR0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxj
b25zdCBHQ0dMZmxvYXQsIDI+IHZhbHVlcykgZmluYWw7CiAgICAgdm9pZCB2ZXJ0ZXhBdHRyaWIz
ZihHQ0dMdWludCBpbmRleCwgR0NHTGZsb2F0IHgsIEdDR0xmbG9hdCB5LCBHQ0dMZmxvYXQgeikg
ZmluYWw7Ci0gICAgdm9pZCB2ZXJ0ZXhBdHRyaWIzZnYoR0NHTHVpbnQgaW5kZXgsIGNvbnN0IEdD
R0xmbG9hdCogdmFsdWVzKSBmaW5hbDsKKyAgICB2b2lkIHZlcnRleEF0dHJpYjNmdihHQ0dMdWlu
dCBpbmRleCwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0LCAzPiB2YWx1ZXMpIGZpbmFsOwogICAg
IHZvaWQgdmVydGV4QXR0cmliNGYoR0NHTHVpbnQgaW5kZXgsIEdDR0xmbG9hdCB4LCBHQ0dMZmxv
YXQgeSwgR0NHTGZsb2F0IHosIEdDR0xmbG9hdCB3KSBmaW5hbDsKLSAgICB2b2lkIHZlcnRleEF0
dHJpYjRmdihHQ0dMdWludCBpbmRleCwgY29uc3QgR0NHTGZsb2F0KiB2YWx1ZXMpIGZpbmFsOwor
ICAgIHZvaWQgdmVydGV4QXR0cmliNGZ2KEdDR0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxjb25zdCBH
Q0dMZmxvYXQsIDQ+IHZhbHVlcykgZmluYWw7CiAgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJQb2ludGVy
KEdDR0x1aW50IGluZGV4LCBHQ0dMaW50IHNpemUsIEdDR0xlbnVtIHR5cGUsIEdDR0xib29sZWFu
IG5vcm1hbGl6ZWQsIEdDR0xzaXplaSBzdHJpZGUsIEdDR0xpbnRwdHIgb2Zmc2V0KSBmaW5hbDsK
IAogICAgIHZvaWQgdmlld3BvcnQoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0
aCwgR0NHTHNpemVpIGhlaWdodCkgZmluYWw7CkBAIC0zMjMsOCArMzIzLDggQEAgcHVibGljOgog
CiAgICAgdm9pZCBibGl0RnJhbWVidWZmZXIoR0NHTGludCBzcmNYMCwgR0NHTGludCBzcmNZMCwg
R0NHTGludCBzcmNYMSwgR0NHTGludCBzcmNZMSwgR0NHTGludCBkc3RYMCwgR0NHTGludCBkc3RZ
MCwgR0NHTGludCBkc3RYMSwgR0NHTGludCBkc3RZMSwgR0NHTGJpdGZpZWxkIG1hc2ssIEdDR0xl
bnVtIGZpbHRlcikgZmluYWw7CiAgICAgdm9pZCBmcmFtZWJ1ZmZlclRleHR1cmVMYXllcihHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xlbnVtIGF0dGFjaG1lbnQsIFBsYXRmb3JtR0xPYmplY3QgdGV4dHVy
ZSwgR0NHTGludCBsZXZlbCwgR0NHTGludCBsYXllcikgZmluYWw7Ci0gICAgdm9pZCBpbnZhbGlk
YXRlRnJhbWVidWZmZXIoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgbnVtQXR0YWNobWVudHMs
IGNvbnN0IEdDR0xlbnVtKiBhdHRhY2htZW50cykgZmluYWw7Ci0gICAgdm9pZCBpbnZhbGlkYXRl
U3ViRnJhbWVidWZmZXIoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgbnVtQXR0YWNobWVudHMs
IGNvbnN0IEdDR0xlbnVtKiBhdHRhY2htZW50cywgR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xz
aXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkgZmluYWw7CisgICAgdm9pZCBpbnZhbGlkYXRl
RnJhbWVidWZmZXIoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4gYXR0
YWNobWVudHMpIGZpbmFsOworICAgIHZvaWQgaW52YWxpZGF0ZVN1YkZyYW1lYnVmZmVyKEdDR0xl
bnVtIHRhcmdldCwgR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+IGF0dGFjaG1lbnRzLCBHQ0dMaW50
IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KSBmaW5hbDsK
ICAgICB2b2lkIHJlYWRCdWZmZXIoR0NHTGVudW0gc3JjKSBmaW5hbDsKIAogICAgIC8vIGdldElu
dGVybmFsRm9ybWF0UGFyYW1ldGVyCkBAIC0zNDIsMjggKzM0MiwyOCBAQCBwdWJsaWM6CiAgICAg
dm9pZCB1bmlmb3JtMnVpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0x1aW50IHYwLCBHQ0dMdWludCB2
MSkgZmluYWw7CiAgICAgdm9pZCB1bmlmb3JtM3VpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0x1aW50
IHYwLCBHQ0dMdWludCB2MSwgR0NHTHVpbnQgdjIpIGZpbmFsOwogICAgIHZvaWQgdW5pZm9ybTR1
aShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMdWludCB2MCwgR0NHTHVpbnQgdjEsIEdDR0x1aW50IHYy
LCBHQ0dMdWludCB2MykgZmluYWw7Ci0gICAgdm9pZCB1bmlmb3JtMXVpdihHQ0dMaW50IGxvY2F0
aW9uLCBjb25zdCBHQ0dMdWludCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBz
cmNMZW5ndGgpIGZpbmFsOwotICAgIHZvaWQgdW5pZm9ybTJ1aXYoR0NHTGludCBsb2NhdGlvbiwg
Y29uc3QgR0NHTHVpbnQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVu
Z3RoKSBmaW5hbDsKLSAgICB2b2lkIHVuaWZvcm0zdWl2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0
IEdDR0x1aW50KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkg
ZmluYWw7Ci0gICAgdm9pZCB1bmlmb3JtNHVpdihHQ0dMaW50IGxvY2F0aW9uLCBjb25zdCBHQ0dM
dWludCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpIGZpbmFs
OwotICAgIHZvaWQgdW5pZm9ybU1hdHJpeDJ4M2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29s
ZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQs
IEdDR0x1aW50IHNyY0xlbmd0aCkgZmluYWw7Ci0gICAgdm9pZCB1bmlmb3JtTWF0cml4M3gyZnYo
R0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHQ0dMZmxvYXQq
IGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKSBmaW5hbDsKLSAg
ICB2b2lkIHVuaWZvcm1NYXRyaXgyeDRmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0
cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dM
dWludCBzcmNMZW5ndGgpIGZpbmFsOwotICAgIHZvaWQgdW5pZm9ybU1hdHJpeDR4MmZ2KEdDR0xp
bnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiBkYXRh
LCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkgZmluYWw7Ci0gICAgdm9p
ZCB1bmlmb3JtTWF0cml4M3g0ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNw
b3NlLCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQg
c3JjTGVuZ3RoKSBmaW5hbDsKLSAgICB2b2lkIHVuaWZvcm1NYXRyaXg0eDNmdihHQ0dMaW50IGxv
Y2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NH
THVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpIGZpbmFsOworICAgIHZvaWQgdW5p
Zm9ybTF1aXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTHVpbnQ+KSBmaW5h
bDsKKyAgICB2b2lkIHVuaWZvcm0ydWl2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0
IEdDR0x1aW50PikgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtM3VpdihHQ0dMaW50IGxvY2F0aW9u
LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdWludD4pIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybTR1aXYo
R0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTHVpbnQ+KSBmaW5hbDsKKyAgICB2
b2lkIHVuaWZvcm1NYXRyaXgyeDNmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFu
c3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gZGF0YSkgZmluYWw7CisgICAgdm9pZCB1
bmlmb3JtTWF0cml4M3gyZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3Nl
LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEpIGZpbmFsOworICAgIHZvaWQgdW5pZm9y
bU1hdHJpeDJ4NGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NH
TFNwYW48Y29uc3QgR0NHTGZsb2F0PiBkYXRhKSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm1NYXRy
aXg0eDJmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFu
PGNvbnN0IEdDR0xmbG9hdD4gZGF0YSkgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtTWF0cml4M3g0
ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25z
dCBHQ0dMZmxvYXQ+IGRhdGEpIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybU1hdHJpeDR4M2Z2KEdD
R0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NH
TGZsb2F0PiBkYXRhKSBmaW5hbDsKICAgICB2b2lkIHZlcnRleEF0dHJpYkk0aShHQ0dMdWludCBp
bmRleCwgR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xpbnQgeiwgR0NHTGludCB3KSBmaW5hbDsK
LSAgICB2b2lkIHZlcnRleEF0dHJpYkk0aXYoR0NHTHVpbnQgaW5kZXgsIGNvbnN0IEdDR0xpbnQq
IHZhbHVlcykgZmluYWw7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJJNGl2KEdDR0x1aW50IGluZGV4
LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50LCA0PiB2YWx1ZXMpIGZpbmFsOwogICAgIHZvaWQgdmVy
dGV4QXR0cmliSTR1aShHQ0dMdWludCBpbmRleCwgR0NHTHVpbnQgeCwgR0NHTHVpbnQgeSwgR0NH
THVpbnQgeiwgR0NHTHVpbnQgdykgZmluYWw7Ci0gICAgdm9pZCB2ZXJ0ZXhBdHRyaWJJNHVpdihH
Q0dMdWludCBpbmRleCwgY29uc3QgR0NHTHVpbnQqIHZhbHVlcykgZmluYWw7CisgICAgdm9pZCB2
ZXJ0ZXhBdHRyaWJJNHVpdihHQ0dMdWludCBpbmRleCwgR0NHTFNwYW48Y29uc3QgR0NHTHVpbnQs
IDQ+IHZhbHVlcykgZmluYWw7CiAgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJJUG9pbnRlcihHQ0dMdWlu
dCBpbmRleCwgR0NHTGludCBzaXplLCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgc3RyaWRlLCBH
Q0dMaW50cHRyIG9mZnNldCkgZmluYWw7CiAKICAgICB2b2lkIGRyYXdSYW5nZUVsZW1lbnRzKEdD
R0xlbnVtIG1vZGUsIEdDR0x1aW50IHN0YXJ0LCBHQ0dMdWludCBlbmQsIEdDR0xzaXplaSBjb3Vu
dCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpIGZpbmFsOwogCi0gICAgdm9pZCBk
cmF3QnVmZmVycyhHQ0dMc2l6ZWkgbiwgY29uc3QgR0NHTGVudW0qIGJ1ZnMpIGZpbmFsOwotICAg
IHZvaWQgY2xlYXJCdWZmZXJpdihHQ0dMZW51bSBidWZmZXIsIEdDR0xpbnQgZHJhd2J1ZmZlciwg
Y29uc3QgR0NHTGludCogdmFsdWVzLCBHQ0dMdWludCBzcmNPZmZzZXQpIGZpbmFsOwotICAgIHZv
aWQgY2xlYXJCdWZmZXJ1aXYoR0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50IGRyYXdidWZmZXIsIGNv
bnN0IEdDR0x1aW50KiB2YWx1ZXMsIEdDR0x1aW50IHNyY09mZnNldCkgZmluYWw7Ci0gICAgdm9p
ZCBjbGVhckJ1ZmZlcmZ2KEdDR0xlbnVtIGJ1ZmZlciwgR0NHTGludCBkcmF3YnVmZmVyLCBjb25z
dCBHQ0dMZmxvYXQqIHZhbHVlcywgR0NHTHVpbnQgc3JjT2Zmc2V0KSBmaW5hbDsKKyAgICB2b2lk
IGRyYXdCdWZmZXJzKEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVtPiBidWZzKSBmaW5hbDsKKyAgICB2
b2lkIGNsZWFyQnVmZmVyaXYoR0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50IGRyYXdidWZmZXIsIEdD
R0xTcGFuPGNvbnN0IEdDR0xpbnQ+IHZhbHVlcykgZmluYWw7CisgICAgdm9pZCBjbGVhckJ1ZmZl
cnVpdihHQ0dMZW51bSBidWZmZXIsIEdDR0xpbnQgZHJhd2J1ZmZlciwgR0NHTFNwYW48Y29uc3Qg
R0NHTHVpbnQ+IHZhbHVlcykgZmluYWw7CisgICAgdm9pZCBjbGVhckJ1ZmZlcmZ2KEdDR0xlbnVt
IGJ1ZmZlciwgR0NHTGludCBkcmF3YnVmZmVyLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IHZh
bHVlcykgZmluYWw7CiAgICAgdm9pZCBjbGVhckJ1ZmZlcmZpKEdDR0xlbnVtIGJ1ZmZlciwgR0NH
TGludCBkcmF3YnVmZmVyLCBHQ0dMZmxvYXQgZGVwdGgsIEdDR0xpbnQgc3RlbmNpbCkgZmluYWw7
CiAKICAgICBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZVF1ZXJ5KCkgZmluYWw7CkBAIC00MjQsMTkg
KzQyNCw2IEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZz
ZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBj
b25zdCB2b2lkKiBzcmNEYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0
aE92ZXJyaWRlKTsKICNlbmRpZgogCi0gICAgdm9pZCB1bmlmb3JtMWZ2KEdDR0xpbnQgbG9jYXRp
b24sIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBz
cmNMZW5ndGgpIGZpbmFsOwotICAgIHZvaWQgdW5pZm9ybTJmdihHQ0dMaW50IGxvY2F0aW9uLCBj
b25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVu
Z3RoKSBmaW5hbDsKLSAgICB2b2lkIHVuaWZvcm0zZnYoR0NHTGludCBsb2NhdGlvbiwgY29uc3Qg
R0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkg
ZmluYWw7Ci0gICAgdm9pZCB1bmlmb3JtNGZ2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0xm
bG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpIGZpbmFs
OwotCi0gICAgdm9pZCB1bmlmb3JtMWl2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0xpbnQq
IGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKSBmaW5hbDsKLSAg
ICB2b2lkIHVuaWZvcm0yaXYoR0NHTGludCBsb2NhdGlvbiwgY29uc3QgR0NHTGludCogZGF0YSwg
R0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpIGZpbmFsOwotICAgIHZvaWQg
dW5pZm9ybTNpdihHQ0dMaW50IGxvY2F0aW9uLCBjb25zdCBHQ0dMaW50KiBkYXRhLCBHQ0dMdWlu
dCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkgZmluYWw7Ci0gICAgdm9pZCB1bmlmb3Jt
NGl2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0xpbnQqIGRhdGEsIEdDR0x1aW50IHNyY09m
ZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKSBmaW5hbDsKLQotICAgIHZvaWQgdW5pZm9ybU1hdHJp
eDJmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xm
bG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpIGZpbmFs
OwotICAgIHZvaWQgdW5pZm9ybU1hdHJpeDNmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVh
biB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBH
Q0dMdWludCBzcmNMZW5ndGgpIGZpbmFsOwotICAgIHZvaWQgdW5pZm9ybU1hdHJpeDRmdihHQ0dM
aW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogZGF0
YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpIGZpbmFsOwogICAgIHZv
aWQgZ2V0QWN0aXZlVW5pZm9ybUJsb2NraXYoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTHVpbnQgdW5p
Zm9ybUJsb2NrSW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMaW50PiBwYXJhbXMp
IGZpbmFsOwogCiAjaWYgIVVTRShBTkdMRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEJhc2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdM
T3BlbkdMQmFzZS5jcHAKaW5kZXggOWQ3Y2M5MjE2ZTdhNDJjZjBkOTcxNjQ1NzIwODUxZjE0NTUx
NzBkNS4uZTI2MjQ0OTYzMWUzMWZjMmZlMTAyYmUzYjE3YjkyZjA0ZWU3NmQ3ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4
dEdMT3BlbkdMQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHAKQEAgLTM0MSw5ICszNDEsOSBA
QCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQo
R0NHTGVudW0gc2hhZGVyVHlwZSwgR0NHTAogICAgIH0KIH0KIAotYm9vbCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6dGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdD
R0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQs
IEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIGNvbnN0IHZv
aWQqIHBpeGVscykKK2Jvb2wgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnRleEltYWdlMkQoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NH
THNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTGVudW0g
Zm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gcGl4ZWxzKQog
ewotICAgIGlmICh3aWR0aCAmJiBoZWlnaHQgJiYgIXBpeGVscykgeworICAgIGlmICh3aWR0aCAm
JiBoZWlnaHQgJiYgIXBpeGVscy5kYXRhKSB7CiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKElO
VkFMSURfVkFMVUUpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpAQCAtNDAzLDcgKzQw
Myw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnRleEltYWdlMkQoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51CiAgICAgICAgIH0KICAgICB9CiAKLSAgICB0
ZXhJbWFnZTJERGlyZWN0KHRhcmdldCwgbGV2ZWwsIG9wZW5HTEludGVybmFsRm9ybWF0LCB3aWR0
aCwgaGVpZ2h0LCBib3JkZXIsIG9wZW5HTEZvcm1hdCwgdHlwZSwgcGl4ZWxzKTsKKyAgICB0ZXhJ
bWFnZTJERGlyZWN0KHRhcmdldCwgbGV2ZWwsIG9wZW5HTEludGVybmFsRm9ybWF0LCB3aWR0aCwg
aGVpZ2h0LCBib3JkZXIsIG9wZW5HTEZvcm1hdCwgdHlwZSwgcGl4ZWxzLmRhdGEpOwogICAgIHJl
dHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb21tb24uY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29t
bW9uLmNwcAppbmRleCBhYmI3ZTI1YTA2ZjA4NWNjZWFjZmY1YWI2ZTgyMDQ1N2NlOWEyZDkzLi4x
MzRiNjY5M2NmNTNjODdjNjIyZDlhMzZkOTY0NzMxZWFhYWZmNzlmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0xDb21tb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5n
bC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvbW1vbi5jcHAKQEAgLTU1MiwyMCArNTUyLDIwIEBA
IHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmJ1ZmZlckRhdGEoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMc2l6ZWlwdHIgc2l6ZSwgR0NHCiAgICAgOjpnbEJ1ZmZlckRhdGEodGFyZ2V0LCBzaXpl
LCAwLCB1c2FnZSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmJ1ZmZlckRh
dGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWlwdHIgc2l6ZSwgY29uc3Qgdm9pZCogZGF0YSwg
R0NHTGVudW0gdXNhZ2UpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpidWZmZXJEYXRh
KEdDR0xlbnVtIHRhcmdldCwgR0NHTFNwYW48Y29uc3Qgdm9pZD4gZGF0YSwgR0NHTGVudW0gdXNh
Z2UpCiB7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgOjpnbEJ1ZmZlckRhdGEodGFyZ2V0LCBzaXplLCBkYXRhLCB1c2FnZSk7CisgICAgOjpn
bEJ1ZmZlckRhdGEodGFyZ2V0LCBkYXRhLmJ1ZlNpemUsIGRhdGEuZGF0YSwgdXNhZ2UpOwogfQog
Ci12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpidWZmZXJTdWJEYXRhKEdDR0xlbnVtIHRh
cmdldCwgR0NHTGludHB0ciBvZmZzZXQsIEdDR0xzaXplaXB0ciBzaXplLCBjb25zdCB2b2lkKiBk
YXRhKQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6YnVmZmVyU3ViRGF0YShHQ0dMZW51
bSB0YXJnZXQsIEdDR0xpbnRwdHIgb2Zmc2V0LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gZGF0
YSkKIHsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CiAK
LSAgICA6OmdsQnVmZmVyU3ViRGF0YSh0YXJnZXQsIG9mZnNldCwgc2l6ZSwgZGF0YSk7CisgICAg
OjpnbEJ1ZmZlclN1YkRhdGEodGFyZ2V0LCBvZmZzZXQsIGRhdGEuYnVmU2l6ZSwgZGF0YS5kYXRh
KTsKIH0KIAogR0NHTGVudW0gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNoZWNrRnJhbWVidWZm
ZXJTdGF0dXMoR0NHTGVudW0gdGFyZ2V0KQpAQCAtMTQxNSwxMiArMTQxNSwxMiBAQCB2b2lkIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMWYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGZs
b2F0IHYwKQogICAgIDo6Z2xVbmlmb3JtMWYobG9jYXRpb24sIHYwKTsKIH0KIAotdm9pZCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTFmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6
ZWkgc2l6ZSwgY29uc3QgR0NHTGZsb2F0KiBhcnJheSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OnVuaWZvcm0xZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGZs
b2F0PiBhcnJheSkKIHsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICA6OmdsVW5pZm9ybTFmdihsb2NhdGlvbiwgc2l6ZSwgYXJyYXkpOworICAg
IDo6Z2xVbmlmb3JtMWZ2KGxvY2F0aW9uLCBhcnJheS5idWZTaXplLCBhcnJheS5kYXRhKTsKIH0K
IAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTJmKEdDR0xpbnQgbG9jYXRp
b24sIEdDR0xmbG9hdCB2MCwgR0NHTGZsb2F0IHYxKQpAQCAtMTQzMSwxMyArMTQzMSwxMyBAQCB2
b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMmYoR0NHTGludCBsb2NhdGlvbiwg
R0NHTGZsb2F0IHYwLCBHQ0dMZmxvYQogICAgIDo6Z2xVbmlmb3JtMmYobG9jYXRpb24sIHYwLCB2
MSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0yZnYoR0NHTGlu
dCBsb2NhdGlvbiwgR0NHTHNpemVpIHNpemUsIGNvbnN0IEdDR0xmbG9hdCogYXJyYXkpCit2b2lk
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdD
R0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gYXJyYXkpCiB7Ci0gICAgLy8gRklYTUU6IGxlbmd0aCBu
ZWVkcyB0byBiZSBhIG11bHRpcGxlIG9mIDIuCisgICAgQVNTRVJUKCEoYXJyYXkuYnVmU2l6ZSAl
IDIpKTsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CiAK
LSAgICA6OmdsVW5pZm9ybTJmdihsb2NhdGlvbiwgc2l6ZSwgYXJyYXkpOworICAgIDo6Z2xVbmlm
b3JtMmZ2KGxvY2F0aW9uLCBhcnJheS5idWZTaXplIC8gMiwgYXJyYXkuZGF0YSk7CiB9CiAKIHZv
aWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0zZihHQ0dMaW50IGxvY2F0aW9uLCBH
Q0dMZmxvYXQgdjAsIEdDR0xmbG9hdCB2MSwgR0NHTGZsb2F0IHYyKQpAQCAtMTQ0OCwxMyArMTQ0
OCwxMyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtM2YoR0NHTGludCBs
b2NhdGlvbiwgR0NHTGZsb2F0IHYwLCBHQ0dMZmxvYQogICAgIDo6Z2xVbmlmb3JtM2YobG9jYXRp
b24sIHYwLCB2MSwgdjIpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlm
b3JtM2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBzaXplLCBjb25zdCBHQ0dMZmxvYXQq
IGFycmF5KQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTNmdihHQ0dMaW50
IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGFycmF5KQogewotICAgIC8vIEZJ
WE1FOiBsZW5ndGggbmVlZHMgdG8gYmUgYSBtdWx0aXBsZSBvZiAzLgorICAgIEFTU0VSVCghKGFy
cmF5LmJ1ZlNpemUgJSAzKSk7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgOjpnbFVuaWZvcm0zZnYobG9jYXRpb24sIHNpemUsIGFycmF5KTsK
KyAgICA6OmdsVW5pZm9ybTNmdihsb2NhdGlvbiwgYXJyYXkuYnVmU2l6ZSAvIDMsIGFycmF5LmRh
dGEpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtNGYoR0NHTGlu
dCBsb2NhdGlvbiwgR0NHTGZsb2F0IHYwLCBHQ0dMZmxvYXQgdjEsIEdDR0xmbG9hdCB2MiwgR0NH
TGZsb2F0IHYzKQpAQCAtMTQ2NSwxMyArMTQ2NSwxMyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjp1bmlmb3JtNGYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGZsb2F0IHYwLCBHQ0dMZmxv
YQogICAgIDo6Z2xVbmlmb3JtNGYobG9jYXRpb24sIHYwLCB2MSwgdjIsIHYzKTsKIH0KIAotdm9p
ZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTRmdihHQ0dMaW50IGxvY2F0aW9uLCBH
Q0dMc2l6ZWkgc2l6ZSwgY29uc3QgR0NHTGZsb2F0KiBhcnJheSkKK3ZvaWQgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OnVuaWZvcm00ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3Qg
R0NHTGZsb2F0PiBhcnJheSkKIHsKLSAgICAvLyBGSVhNRTogbGVuZ3RoIG5lZWRzIHRvIGJlIGEg
bXVsdGlwbGUgb2YgNC4KKyAgICBBU1NFUlQoIShhcnJheS5idWZTaXplICUgNCkpOwogICAgIGlm
ICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIDo6Z2xVbmlm
b3JtNGZ2KGxvY2F0aW9uLCBzaXplLCBhcnJheSk7CisgICAgOjpnbFVuaWZvcm00ZnYobG9jYXRp
b24sIGFycmF5LmJ1ZlNpemUgLyA0LCBhcnJheS5kYXRhKTsKIH0KIAogdm9pZCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6dW5pZm9ybTFpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xpbnQgdjApCkBA
IC0xNDgyLDEyICsxNDgyLDEyIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZv
cm0xaShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMaW50IHYwKQogICAgIDo6Z2xVbmlmb3JtMWkobG9j
YXRpb24sIHYwKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTFp
dihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgc2l6ZSwgY29uc3QgR0NHTGludCogYXJyYXkp
Cit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMWl2KEdDR0xpbnQgbG9jYXRp
b24sIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+IGFycmF5KQogewogICAgIGlmICghbWFrZUNvbnRl
eHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIDo6Z2xVbmlmb3JtMWl2KGxvY2F0
aW9uLCBzaXplLCBhcnJheSk7CisgICAgOjpnbFVuaWZvcm0xaXYobG9jYXRpb24sIGFycmF5LmJ1
ZlNpemUsIGFycmF5LmRhdGEpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1
bmlmb3JtMmkoR0NHTGludCBsb2NhdGlvbiwgR0NHTGludCB2MCwgR0NHTGludCB2MSkKQEAgLTE0
OTgsMTMgKzE0OTgsMTMgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTJp
KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xpbnQgdjAsIEdDR0xpbnQgdjEKICAgICA6OmdsVW5pZm9y
bTJpKGxvY2F0aW9uLCB2MCwgdjEpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
Ojp1bmlmb3JtMml2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBzaXplLCBjb25zdCBHQ0dM
aW50KiBhcnJheSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0yaXYoR0NH
TGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gYXJyYXkpCiB7Ci0gICAgLy8g
RklYTUU6IGxlbmd0aCBuZWVkcyB0byBiZSBhIG11bHRpcGxlIG9mIDIuCisgICAgQVNTRVJUKCEo
YXJyYXkuYnVmU2l6ZSAlIDIpKTsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICA6OmdsVW5pZm9ybTJpdihsb2NhdGlvbiwgc2l6ZSwgYXJyYXkp
OworICAgIDo6Z2xVbmlmb3JtMml2KGxvY2F0aW9uLCBhcnJheS5idWZTaXplIC8gMiwgYXJyYXku
ZGF0YSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0zaShHQ0dM
aW50IGxvY2F0aW9uLCBHQ0dMaW50IHYwLCBHQ0dMaW50IHYxLCBHQ0dMaW50IHYyKQpAQCAtMTUx
NSwxMyArMTUxNSwxMyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtM2ko
R0NHTGludCBsb2NhdGlvbiwgR0NHTGludCB2MCwgR0NHTGludCB2MQogICAgIDo6Z2xVbmlmb3Jt
M2kobG9jYXRpb24sIHYwLCB2MSwgdjIpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjp1bmlmb3JtM2l2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBzaXplLCBjb25zdCBH
Q0dMaW50KiBhcnJheSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0zaXYo
R0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gYXJyYXkpCiB7Ci0gICAg
Ly8gRklYTUU6IGxlbmd0aCBuZWVkcyB0byBiZSBhIG11bHRpcGxlIG9mIDMuCisgICAgQVNTRVJU
KCEoYXJyYXkuYnVmU2l6ZSAlIDMpKTsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQog
ICAgICAgICByZXR1cm47CiAKLSAgICA6OmdsVW5pZm9ybTNpdihsb2NhdGlvbiwgc2l6ZSwgYXJy
YXkpOworICAgIDo6Z2xVbmlmb3JtM2l2KGxvY2F0aW9uLCBhcnJheS5idWZTaXplIC8gMywgYXJy
YXkuZGF0YSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm00aShH
Q0dMaW50IGxvY2F0aW9uLCBHQ0dMaW50IHYwLCBHQ0dMaW50IHYxLCBHQ0dMaW50IHYyLCBHQ0dM
aW50IHYzKQpAQCAtMTUzMiw0MCArMTUzMiw0MCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjp1bmlmb3JtNGkoR0NHTGludCBsb2NhdGlvbiwgR0NHTGludCB2MCwgR0NHTGludCB2MQog
ICAgIDo6Z2xVbmlmb3JtNGkobG9jYXRpb24sIHYwLCB2MSwgdjIsIHYzKTsKIH0KIAotdm9pZCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTRpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dM
c2l6ZWkgc2l6ZSwgY29uc3QgR0NHTGludCogYXJyYXkpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjp1bmlmb3JtNGl2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xp
bnQ+IGFycmF5KQogewotICAgIC8vIEZJWE1FOiBsZW5ndGggbmVlZHMgdG8gYmUgYSBtdWx0aXBs
ZSBvZiA0LgorICAgIEFTU0VSVCghKGFycmF5LmJ1ZlNpemUgJSA0KSk7CiAgICAgaWYgKCFtYWtl
Q29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgOjpnbFVuaWZvcm00aXYo
bG9jYXRpb24sIHNpemUsIGFycmF5KTsKKyAgICA6OmdsVW5pZm9ybTRpdihsb2NhdGlvbiwgYXJy
YXkuYnVmU2l6ZSAvIDQsIGFycmF5LmRhdGEpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjp1bmlmb3JtTWF0cml4MmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBzaXpl
LCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogYXJyYXkpCit2b2lkIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4MmZ2KEdDR0xpbnQgbG9jYXRpb24s
IEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiBhcnJheSkK
IHsKLSAgICAvLyBGSVhNRTogbGVuZ3RoIG5lZWRzIHRvIGJlIGEgbXVsdGlwbGUgb2YgNC4KKyAg
ICBBU1NFUlQoIShhcnJheS5idWZTaXplICUgNCkpOwogICAgIGlmICghbWFrZUNvbnRleHRDdXJy
ZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIDo6Z2xVbmlmb3JtTWF0cml4MmZ2KGxvY2F0
aW9uLCBzaXplLCB0cmFuc3Bvc2UsIGFycmF5KTsKKyAgICA6OmdsVW5pZm9ybU1hdHJpeDJmdihs
b2NhdGlvbiwgYXJyYXkuYnVmU2l6ZSAvIDQsIHRyYW5zcG9zZSwgYXJyYXkuZGF0YSk7CiB9CiAK
LXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXgzZnYoR0NHTGludCBs
b2NhdGlvbiwgR0NHTHNpemVpIHNpemUsIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NH
TGZsb2F0KiBhcnJheSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRy
aXgzZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxj
b25zdCBHQ0dMZmxvYXQ+IGFycmF5KQogewotICAgIC8vIEZJWE1FOiBsZW5ndGggbmVlZHMgdG8g
YmUgYSBtdWx0aXBsZSBvZiA5LgorICAgIEFTU0VSVCghKGFycmF5LmJ1ZlNpemUgJSA5KSk7CiAg
ICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgOjpn
bFVuaWZvcm1NYXRyaXgzZnYobG9jYXRpb24sIHNpemUsIHRyYW5zcG9zZSwgYXJyYXkpOworICAg
IDo6Z2xVbmlmb3JtTWF0cml4M2Z2KGxvY2F0aW9uLCBhcnJheS5idWZTaXplIC8gOSwgdHJhbnNw
b3NlLCBhcnJheS5kYXRhKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5p
Zm9ybU1hdHJpeDRmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgc2l6ZSwgR0NHTGJvb2xl
YW4gdHJhbnNwb3NlLCBjb25zdCBHQ0dMZmxvYXQqIGFycmF5KQordm9pZCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6dW5pZm9ybU1hdHJpeDRmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVh
biB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gYXJyYXkpCiB7Ci0gICAgLy8g
RklYTUU6IGxlbmd0aCBuZWVkcyB0byBiZSBhIG11bHRpcGxlIG9mIDE2LgorICAgIEFTU0VSVCgh
KGFycmF5LmJ1ZlNpemUgJSAxNikpOwogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIDo6Z2xVbmlmb3JtTWF0cml4NGZ2KGxvY2F0aW9uLCBzaXpl
LCB0cmFuc3Bvc2UsIGFycmF5KTsKKyAgICA6OmdsVW5pZm9ybU1hdHJpeDRmdihsb2NhdGlvbiwg
YXJyYXkuYnVmU2l6ZSAvIDE2LCB0cmFuc3Bvc2UsIGFycmF5LmRhdGEpOwogfQogCiB2b2lkIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1c2VQcm9ncmFtKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3Jh
bSkKQEAgLTE1OTQsMTIgKzE1OTQsMTIgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
dmVydGV4QXR0cmliMWYoR0NHTHVpbnQgaW5kZXgsIEdDR0xmbG9hdCB2MCkKICAgICA6OmdsVmVy
dGV4QXR0cmliMWYoaW5kZXgsIHYwKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6dmVydGV4QXR0cmliMWZ2KEdDR0x1aW50IGluZGV4LCBjb25zdCBHQ0dMZmxvYXQqIGFycmF5
KQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliMWZ2KEdDR0x1aW50
IGluZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQsIDE+IGFycmF5KQogewogICAgIGlmICgh
bWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIDo6Z2xWZXJ0ZXhB
dHRyaWIxZnYoaW5kZXgsIGFycmF5KTsKKyAgICA6OmdsVmVydGV4QXR0cmliMWZ2KGluZGV4LCBh
cnJheS5kYXRhKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0
cmliMmYoR0NHTHVpbnQgaW5kZXgsIEdDR0xmbG9hdCB2MCwgR0NHTGZsb2F0IHYxKQpAQCAtMTYx
MCwxMiArMTYxMCwxMiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2ZXJ0ZXhBdHRy
aWIyZihHQ0dMdWludCBpbmRleCwgR0NHTGZsb2F0IHYwLCBHQ0dMZgogICAgIDo6Z2xWZXJ0ZXhB
dHRyaWIyZihpbmRleCwgdjAsIHYxKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6dmVydGV4QXR0cmliMmZ2KEdDR0x1aW50IGluZGV4LCBjb25zdCBHQ0dMZmxvYXQqIGFycmF5
KQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliMmZ2KEdDR0x1aW50
IGluZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQsIDI+IGFycmF5KQogewogICAgIGlmICgh
bWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIDo6Z2xWZXJ0ZXhB
dHRyaWIyZnYoaW5kZXgsIGFycmF5KTsKKyAgICA6OmdsVmVydGV4QXR0cmliMmZ2KGluZGV4LCBh
cnJheS5kYXRhKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0
cmliM2YoR0NHTHVpbnQgaW5kZXgsIEdDR0xmbG9hdCB2MCwgR0NHTGZsb2F0IHYxLCBHQ0dMZmxv
YXQgdjIpCkBAIC0xNjI2LDEyICsxNjI2LDEyIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OnZlcnRleEF0dHJpYjNmKEdDR0x1aW50IGluZGV4LCBHQ0dMZmxvYXQgdjAsIEdDR0xmCiAg
ICAgOjpnbFZlcnRleEF0dHJpYjNmKGluZGV4LCB2MCwgdjEsIHYyKTsKIH0KIAotdm9pZCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliM2Z2KEdDR0x1aW50IGluZGV4LCBjb25z
dCBHQ0dMZmxvYXQqIGFycmF5KQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4
QXR0cmliM2Z2KEdDR0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQsIDM+IGFy
cmF5KQogewogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIDo6Z2xWZXJ0ZXhBdHRyaWIzZnYoaW5kZXgsIGFycmF5KTsKKyAgICA6OmdsVmVydGV4
QXR0cmliM2Z2KGluZGV4LCBhcnJheS5kYXRhKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6dmVydGV4QXR0cmliNGYoR0NHTHVpbnQgaW5kZXgsIEdDR0xmbG9hdCB2MCwgR0NH
TGZsb2F0IHYxLCBHQ0dMZmxvYXQgdjIsIEdDR0xmbG9hdCB2MykKQEAgLTE2NDIsMTIgKzE2NDIs
MTIgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliNGYoR0NHTHVp
bnQgaW5kZXgsIEdDR0xmbG9hdCB2MCwgR0NHTGYKICAgICA6OmdsVmVydGV4QXR0cmliNGYoaW5k
ZXgsIHYwLCB2MSwgdjIsIHYzKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
dmVydGV4QXR0cmliNGZ2KEdDR0x1aW50IGluZGV4LCBjb25zdCBHQ0dMZmxvYXQqIGFycmF5KQor
dm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliNGZ2KEdDR0x1aW50IGlu
ZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQsIDQ+IGFycmF5KQogewogICAgIGlmICghbWFr
ZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIDo6Z2xWZXJ0ZXhBdHRy
aWI0ZnYoaW5kZXgsIGFycmF5KTsKKyAgICA6OmdsVmVydGV4QXR0cmliNGZ2KGluZGV4LCBhcnJh
eS5kYXRhKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmli
UG9pbnRlcihHQ0dMdWludCBpbmRleCwgR0NHTGludCBzaXplLCBHQ0dMZW51bSB0eXBlLCBHQ0dM
Ym9vbGVhbiBub3JtYWxpemVkLCBHQ0dMc2l6ZWkgc3RyaWRlLCBHQ0dMaW50cHRyIG9mZnNldCkK
QEAgLTIwNTUsNyArMjA1NSw3IEBAIEdDR0xzaXplaXB0ciBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6Z2V0VmVydGV4QXR0cmliT2Zmc2V0KEdDR0x1aW50IGluZGV4LCBHQ0dMCiAgICAgcmV0dXJu
IHN0YXRpY19jYXN0PEdDR0xzaXplaXB0cj4ocmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4ocG9p
bnRlcikpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp0ZXhTdWJJbWFnZTJE
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2ZmLCBHQ0dMaW50IHlv
ZmYsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBH
Q0dMZW51bSB0eXBlLCBjb25zdCB2b2lkKiBwaXhlbHMpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjp0ZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NH
TGludCB4b2ZmLCBHQ0dMaW50IHlvZmYsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdo
dCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9p
ZD4gcGl4ZWxzKQogewogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJl
dHVybjsKQEAgLTIwODMsNyArMjA4Myw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OnRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMCiAgICAg
fQogCiAgICAgLy8gRklYTUU6IHdlIHdpbGwgbmVlZCB0byBkZWFsIHdpdGggUGl4ZWxTdG9yZSBw
YXJhbXMgd2hlbiBkZWFsaW5nIHdpdGggaW1hZ2UgYnVmZmVycyB0aGF0IGRpZmZlciBmcm9tIHRo
ZSBzdWJpbWFnZSBzaXplLgotICAgIDo6Z2xUZXhTdWJJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIHhv
ZmYsIHlvZmYsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgcGl4ZWxzKTsKKyAgICA6Omds
VGV4U3ViSW1hZ2UyRCh0YXJnZXQsIGxldmVsLCB4b2ZmLCB5b2ZmLCB3aWR0aCwgaGVpZ2h0LCBm
b3JtYXQsIHR5cGUsIHBpeGVscy5kYXRhKTsKICAgICBtX3N0YXRlLnRleHR1cmVTZWVkQ291bnQu
YWRkKG1fc3RhdGUuY3VycmVudEJvdW5kVGV4dHVyZSgpKTsKIH0KIApAQCAtMjM5NSwxNyArMjM5
NSwxNSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpmcmFtZWJ1ZmZlclRleHR1cmVM
YXllcihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtCiAgICAgVU5VU0VEX1BBUkFNKGxheWVyKTsK
IH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6aW52YWxpZGF0ZUZyYW1lYnVmZmVy
KEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpIG51bUF0dGFjaG1lbnRzLCBjb25zdCBHQ0dMZW51
bSogYXR0YWNobWVudHMpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjppbnZhbGlkYXRl
RnJhbWVidWZmZXIoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4gYXR0
YWNobWVudHMpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHRhcmdldCk7Ci0gICAgVU5VU0VEX1BBUkFN
KG51bUF0dGFjaG1lbnRzKTsKICAgICBVTlVTRURfUEFSQU0oYXR0YWNobWVudHMpOwogfQogCi12
b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjppbnZhbGlkYXRlU3ViRnJhbWVidWZmZXIoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgbnVtQXR0YWNobWVudHMsIGNvbnN0IEdDR0xlbnVtKiBh
dHRhY2htZW50cywgR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNp
emVpIGhlaWdodCkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmludmFsaWRhdGVTdWJG
cmFtZWJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQsIEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVtPiBhdHRh
Y2htZW50cywgR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVp
IGhlaWdodCkKIHsKICAgICBVTlVTRURfUEFSQU0odGFyZ2V0KTsKLSAgICBVTlVTRURfUEFSQU0o
bnVtQXR0YWNobWVudHMpOwogICAgIFVOVVNFRF9QQVJBTShhdHRhY2htZW50cyk7CiAgICAgVU5V
U0VEX1BBUkFNKHgpOwogICAgIFVOVVNFRF9QQVJBTSh5KTsKQEAgLTI1MjksOTAgKzI1MjcsNzAg
QEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTR1aShHQ0dMaW50IGxvY2F0
aW9uLCBHQ0dMdWludCB2MCwgR0NHTHVpbnQKICAgICBVTlVTRURfUEFSQU0odjMpOwogfQogCi12
b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMXVpdihHQ0dMaW50IGxvY2F0aW9u
LCBjb25zdCBHQ0dMdWludCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNM
ZW5ndGgpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMXVpdihHQ0dMaW50
IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdWludD4gZGF0YSkKIHsKICAgICBVTlVTRURf
UEFSQU0obG9jYXRpb24pOwogICAgIFVOVVNFRF9QQVJBTShkYXRhKTsKLSAgICBVTlVTRURfUEFS
QU0oc3JjT2Zmc2V0KTsKLSAgICBVTlVTRURfUEFSQU0oc3JjTGVuZ3RoKTsKIH0KIAotdm9pZCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTJ1aXYoR0NHTGludCBsb2NhdGlvbiwgY29u
c3QgR0NHTHVpbnQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3Ro
KQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTJ1aXYoR0NHTGludCBsb2Nh
dGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTHVpbnQ+IGRhdGEpCiB7CiAgICAgVU5VU0VEX1BBUkFN
KGxvY2F0aW9uKTsKICAgICBVTlVTRURfUEFSQU0oZGF0YSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNy
Y09mZnNldCk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY0xlbmd0aCk7CiB9CiAKLXZvaWQgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0zdWl2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdD
R0x1aW50KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKK3Zv
aWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0zdWl2KEdDR0xpbnQgbG9jYXRpb24s
IEdDR0xTcGFuPGNvbnN0IEdDR0x1aW50PiBkYXRhKQogewogICAgIFVOVVNFRF9QQVJBTShsb2Nh
dGlvbik7CiAgICAgVU5VU0VEX1BBUkFNKGRhdGEpOwotICAgIFVOVVNFRF9QQVJBTShzcmNPZmZz
ZXQpOwotICAgIFVOVVNFRF9QQVJBTShzcmNMZW5ndGgpOwogfQogCi12b2lkIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjp1bmlmb3JtNHVpdihHQ0dMaW50IGxvY2F0aW9uLCBjb25zdCBHQ0dMdWlu
dCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCit2b2lkIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtNHVpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dM
U3Bhbjxjb25zdCBHQ0dMdWludD4gZGF0YSkKIHsKICAgICBVTlVTRURfUEFSQU0obG9jYXRpb24p
OwogICAgIFVOVVNFRF9QQVJBTShkYXRhKTsKLSAgICBVTlVTRURfUEFSQU0oc3JjT2Zmc2V0KTsK
LSAgICBVTlVTRURfUEFSQU0oc3JjTGVuZ3RoKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6dW5pZm9ybU1hdHJpeDJ4M2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFu
IHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdD
R0x1aW50IHNyY0xlbmd0aCkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1N
YXRyaXgyeDNmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xT
cGFuPGNvbnN0IEdDR0xmbG9hdD4gZGF0YSkKIHsKICAgICBVTlVTRURfUEFSQU0obG9jYXRpb24p
OwogICAgIFVOVVNFRF9QQVJBTSh0cmFuc3Bvc2UpOwogICAgIFVOVVNFRF9QQVJBTShkYXRhKTsK
LSAgICBVTlVTRURfUEFSQU0oc3JjT2Zmc2V0KTsKLSAgICBVTlVTRURfUEFSQU0oc3JjTGVuZ3Ro
KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybU1hdHJpeDN4MmZ2
KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0
KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKK3ZvaWQgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXgzeDJmdihHQ0dMaW50IGxvY2F0aW9u
LCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gZGF0YSkK
IHsKICAgICBVTlVTRURfUEFSQU0obG9jYXRpb24pOwogICAgIFVOVVNFRF9QQVJBTSh0cmFuc3Bv
c2UpOwogICAgIFVOVVNFRF9QQVJBTShkYXRhKTsKLSAgICBVTlVTRURfUEFSQU0oc3JjT2Zmc2V0
KTsKLSAgICBVTlVTRURfUEFSQU0oc3JjTGVuZ3RoKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6dW5pZm9ybU1hdHJpeDJ4NGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29s
ZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQs
IEdDR0x1aW50IHNyY0xlbmd0aCkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZv
cm1NYXRyaXgyeDRmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdD
R0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gZGF0YSkKIHsKICAgICBVTlVTRURfUEFSQU0obG9jYXRp
b24pOwogICAgIFVOVVNFRF9QQVJBTSh0cmFuc3Bvc2UpOwogICAgIFVOVVNFRF9QQVJBTShkYXRh
KTsKLSAgICBVTlVTRURfUEFSQU0oc3JjT2Zmc2V0KTsKLSAgICBVTlVTRURfUEFSQU0oc3JjTGVu
Z3RoKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybU1hdHJpeDR4
MmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZs
b2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKK3ZvaWQg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXg0eDJmdihHQ0dMaW50IGxvY2F0
aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gZGF0
YSkKIHsKICAgICBVTlVTRURfUEFSQU0obG9jYXRpb24pOwogICAgIFVOVVNFRF9QQVJBTSh0cmFu
c3Bvc2UpOwogICAgIFVOVVNFRF9QQVJBTShkYXRhKTsKLSAgICBVTlVTRURfUEFSQU0oc3JjT2Zm
c2V0KTsKLSAgICBVTlVTRURfUEFSQU0oc3JjTGVuZ3RoKTsKIH0KIAotdm9pZCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6dW5pZm9ybU1hdHJpeDN4NGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xi
b29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZz
ZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVu
aWZvcm1NYXRyaXgzeDRmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2Us
IEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gZGF0YSkKIHsKICAgICBVTlVTRURfUEFSQU0obG9j
YXRpb24pOwogICAgIFVOVVNFRF9QQVJBTSh0cmFuc3Bvc2UpOwogICAgIFVOVVNFRF9QQVJBTShk
YXRhKTsKLSAgICBVTlVTRURfUEFSQU0oc3JjT2Zmc2V0KTsKLSAgICBVTlVTRURfUEFSQU0oc3Jj
TGVuZ3RoKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybU1hdHJp
eDR4M2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NH
TGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKK3Zv
aWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXg0eDNmdihHQ0dMaW50IGxv
Y2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4g
ZGF0YSkKIHsKICAgICBVTlVTRURfUEFSQU0obG9jYXRpb24pOwogICAgIFVOVVNFRF9QQVJBTSh0
cmFuc3Bvc2UpOwogICAgIFVOVVNFRF9QQVJBTShkYXRhKTsKLSAgICBVTlVTRURfUEFSQU0oc3Jj
T2Zmc2V0KTsKLSAgICBVTlVTRURfUEFSQU0oc3JjTGVuZ3RoKTsKIH0KIAogdm9pZCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliSTRpKEdDR0x1aW50IGluZGV4LCBHQ0dMaW50
IHgsIEdDR0xpbnQgeSwgR0NHTGludCB6LCBHQ0dMaW50IHcpCkBAIC0yNjI0LDcgKzI2MDIsNyBA
QCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2ZXJ0ZXhBdHRyaWJJNGkoR0NHTHVpbnQg
aW5kZXgsIEdDR0xpbnQgeCwgR0NHTGludAogICAgIFVOVVNFRF9QQVJBTSh3KTsKIH0KIAotdm9p
ZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliSTRpdihHQ0dMdWludCBpbmRl
eCwgY29uc3QgR0NHTGludCogdmFsdWVzKQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
dmVydGV4QXR0cmliSTRpdihHQ0dMdWludCBpbmRleCwgR0NHTFNwYW48Y29uc3QgR0NHTGludCwg
ND4gdmFsdWVzKQogewogICAgIFVOVVNFRF9QQVJBTShpbmRleCk7CiAgICAgVU5VU0VEX1BBUkFN
KHZhbHVlcyk7CkBAIC0yNjM5LDcgKzI2MTcsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjp2ZXJ0ZXhBdHRyaWJJNHVpKEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCB4LCBHQ0dMdQog
ICAgIFVOVVNFRF9QQVJBTSh3KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
dmVydGV4QXR0cmliSTR1aXYoR0NHTHVpbnQgaW5kZXgsIGNvbnN0IEdDR0x1aW50KiB2YWx1ZXMp
Cit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2ZXJ0ZXhBdHRyaWJJNHVpdihHQ0dMdWlu
dCBpbmRleCwgR0NHTFNwYW48Y29uc3QgR0NHTHVpbnQsIDQ+IHZhbHVlcykKIHsKICAgICBVTlVT
RURfUEFSQU0oaW5kZXgpOwogICAgIFVOVVNFRF9QQVJBTSh2YWx1ZXMpOwpAQCAtMjY2NCwzNCAr
MjY0MiwzMCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpkcmF3UmFuZ2VFbGVtZW50
cyhHQ0dMZW51bSBtb2RlLCBHQ0dMdWludCBzdGFydCwgRwogICAgIFVOVVNFRF9QQVJBTShvZmZz
ZXQpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpkcmF3QnVmZmVycyhHQ0dM
c2l6ZWkgbiwgY29uc3QgR0NHTGVudW0qIGJ1ZnMpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpkcmF3QnVmZmVycyhHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4gYnVmcykKIHsKLSAgICBV
TlVTRURfUEFSQU0obik7CiAgICAgVU5VU0VEX1BBUkFNKGJ1ZnMpOwogfQogCi12b2lkIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpjbGVhckJ1ZmZlcml2KEdDR0xlbnVtIGJ1ZmZlciwgR0NHTGlu
dCBkcmF3YnVmZmVyLCBjb25zdCBHQ0dMaW50KiB2YWx1ZXMsIEdDR0x1aW50IHNyY09mZnNldCkK
K3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNsZWFyQnVmZmVyaXYoR0NHTGVudW0gYnVm
ZmVyLCBHQ0dMaW50IGRyYXdidWZmZXIsIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+IHZhbHVlcykK
IHsKICAgICBVTlVTRURfUEFSQU0oYnVmZmVyKTsKICAgICBVTlVTRURfUEFSQU0oZHJhd2J1ZmZl
cik7CiAgICAgVU5VU0VEX1BBUkFNKHZhbHVlcyk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY09mZnNl
dCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNsZWFyQnVmZmVydWl2KEdD
R0xlbnVtIGJ1ZmZlciwgR0NHTGludCBkcmF3YnVmZmVyLCBjb25zdCBHQ0dMdWludCogdmFsdWVz
LCBHQ0dMdWludCBzcmNPZmZzZXQpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjbGVh
ckJ1ZmZlcnVpdihHQ0dMZW51bSBidWZmZXIsIEdDR0xpbnQgZHJhd2J1ZmZlciwgR0NHTFNwYW48
Y29uc3QgR0NHTHVpbnQ+IHZhbHVlcykKIHsKICAgICBVTlVTRURfUEFSQU0oYnVmZmVyKTsKICAg
ICBVTlVTRURfUEFSQU0oZHJhd2J1ZmZlcik7CiAgICAgVU5VU0VEX1BBUkFNKHZhbHVlcyk7Ci0g
ICAgVU5VU0VEX1BBUkFNKHNyY09mZnNldCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OmNsZWFyQnVmZmVyZnYoR0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50IGRyYXdidWZmZXIs
IGNvbnN0IEdDR0xmbG9hdCogdmFsdWVzLCBHQ0dMdWludCBzcmNPZmZzZXQpCit2b2lkIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpjbGVhckJ1ZmZlcmZ2KEdDR0xlbnVtIGJ1ZmZlciwgR0NHTGlu
dCBkcmF3YnVmZmVyLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IHZhbHVlcykKIHsKICAgICBV
TlVTRURfUEFSQU0oYnVmZmVyKTsKICAgICBVTlVTRURfUEFSQU0oZHJhd2J1ZmZlcik7CiAgICAg
VU5VU0VEX1BBUkFNKHZhbHVlcyk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY09mZnNldCk7CiB9CiAK
IHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNsZWFyQnVmZmVyZmkoR0NHTGVudW0gYnVm
ZmVyLCBHQ0dMaW50IGRyYXdidWZmZXIsIEdDR0xmbG9hdCBkZXB0aCwgR0NHTGludCBzdGVuY2ls
KQpAQCAtMzAyMSw5NiArMjk5NSw2IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNv
bXByZXNzZWRUZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsCiAgICAgVU5V
U0VEX1BBUkFNKHNyY0xlbmd0aE92ZXJyaWRlKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6dW5pZm9ybTFmdihHQ0dMaW50IGxvY2F0aW9uLCBjb25zdCBHQ0dMZmxvYXQqIGRh
dGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQotewotICAgIFVOVVNF
RF9QQVJBTShsb2NhdGlvbik7Ci0gICAgVU5VU0VEX1BBUkFNKGRhdGEpOwotICAgIFVOVVNFRF9Q
QVJBTShzcmNPZmZzZXQpOwotICAgIFVOVVNFRF9QQVJBTShzcmNMZW5ndGgpOwotfQotCi12b2lk
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMmZ2KEdDR0xpbnQgbG9jYXRpb24sIGNv
bnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5n
dGgpCi17Ci0gICAgVU5VU0VEX1BBUkFNKGxvY2F0aW9uKTsKLSAgICBVTlVTRURfUEFSQU0oZGF0
YSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY09mZnNldCk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY0xl
bmd0aCk7Ci19Ci0KLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0zZnYoR0NH
TGludCBsb2NhdGlvbiwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQs
IEdDR0x1aW50IHNyY0xlbmd0aCkKLXsKLSAgICBVTlVTRURfUEFSQU0obG9jYXRpb24pOwotICAg
IFVOVVNFRF9QQVJBTShkYXRhKTsKLSAgICBVTlVTRURfUEFSQU0oc3JjT2Zmc2V0KTsKLSAgICBV
TlVTRURfUEFSQU0oc3JjTGVuZ3RoKTsKLX0KLQotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6dW5pZm9ybTRmdihHQ0dMaW50IGxvY2F0aW9uLCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdD
R0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQotewotICAgIFVOVVNFRF9QQVJB
TShsb2NhdGlvbik7Ci0gICAgVU5VU0VEX1BBUkFNKGRhdGEpOwotICAgIFVOVVNFRF9QQVJBTShz
cmNPZmZzZXQpOwotICAgIFVOVVNFRF9QQVJBTShzcmNMZW5ndGgpOwotfQotCi12b2lkIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMWl2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdD
R0xpbnQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQotewot
ICAgIFVOVVNFRF9QQVJBTShsb2NhdGlvbik7Ci0gICAgVU5VU0VEX1BBUkFNKGRhdGEpOwotICAg
IFVOVVNFRF9QQVJBTShzcmNPZmZzZXQpOwotICAgIFVOVVNFRF9QQVJBTShzcmNMZW5ndGgpOwot
fQotCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMml2KEdDR0xpbnQgbG9j
YXRpb24sIGNvbnN0IEdDR0xpbnQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQg
c3JjTGVuZ3RoKQotewotICAgIFVOVVNFRF9QQVJBTShsb2NhdGlvbik7Ci0gICAgVU5VU0VEX1BB
UkFNKGRhdGEpOwotICAgIFVOVVNFRF9QQVJBTShzcmNPZmZzZXQpOwotICAgIFVOVVNFRF9QQVJB
TShzcmNMZW5ndGgpOwotfQotCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3Jt
M2l2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0xpbnQqIGRhdGEsIEdDR0x1aW50IHNyY09m
ZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQotewotICAgIFVOVVNFRF9QQVJBTShsb2NhdGlvbik7
Ci0gICAgVU5VU0VEX1BBUkFNKGRhdGEpOwotICAgIFVOVVNFRF9QQVJBTShzcmNPZmZzZXQpOwot
ICAgIFVOVVNFRF9QQVJBTShzcmNMZW5ndGgpOwotfQotCi12b2lkIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjp1bmlmb3JtNGl2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0xpbnQqIGRhdGEs
IEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQotewotICAgIFVOVVNFRF9Q
QVJBTShsb2NhdGlvbik7Ci0gICAgVU5VU0VEX1BBUkFNKGRhdGEpOwotICAgIFVOVVNFRF9QQVJB
TShzcmNPZmZzZXQpOwotICAgIFVOVVNFRF9QQVJBTShzcmNMZW5ndGgpOwotfQotCi12b2lkIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4MmZ2KEdDR0xpbnQgbG9jYXRpb24s
IEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBz
cmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKLXsKLSAgICBVTlVTRURfUEFSQU0obG9jYXRp
b24pOwotICAgIFVOVVNFRF9QQVJBTSh0cmFuc3Bvc2UpOwotICAgIFVOVVNFRF9QQVJBTShkYXRh
KTsKLSAgICBVTlVTRURfUEFSQU0oc3JjT2Zmc2V0KTsKLSAgICBVTlVTRURfUEFSQU0oc3JjTGVu
Z3RoKTsKLX0KLQotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybU1hdHJpeDNm
dihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9h
dCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCi17Ci0gICAg
VU5VU0VEX1BBUkFNKGxvY2F0aW9uKTsKLSAgICBVTlVTRURfUEFSQU0odHJhbnNwb3NlKTsKLSAg
ICBVTlVTRURfUEFSQU0oZGF0YSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY09mZnNldCk7Ci0gICAg
VU5VU0VEX1BBUkFNKHNyY0xlbmd0aCk7Ci19Ci0KLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OnVuaWZvcm1NYXRyaXg0ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNw
b3NlLCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQg
c3JjTGVuZ3RoKQotewotICAgIFVOVVNFRF9QQVJBTShsb2NhdGlvbik7Ci0gICAgVU5VU0VEX1BB
UkFNKHRyYW5zcG9zZSk7Ci0gICAgVU5VU0VEX1BBUkFNKGRhdGEpOwotICAgIFVOVVNFRF9QQVJB
TShzcmNPZmZzZXQpOwotICAgIFVOVVNFRF9QQVJBTShzcmNMZW5ndGgpOwotfQogCiB2b2lkIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBH
Q0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVu
dW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xFUy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0xFUy5jcHAKaW5kZXggYTFkODA5MmJjY2FlMDA4ZDZlNjllOGNkOGY2ZGRmYjE3YWNh
ZjAwZi4uNTAxZWNhZTVkYzQ5OGM3N2ZlOWVhODFlNDQxYzJhNDg0OWZiYzliMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4
dEdMT3BlbkdMRVMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEVTLmNwcApAQCAtMjE1LDE0ICsyMTUsMTQgQEAg
dm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0KEdD
R0xlbnVtIHNoYWRlclR5cGUsIEdDR0wKICAgICA6OmdsR2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0
KHNoYWRlclR5cGUsIHByZWNpc2lvblR5cGUsIHJhbmdlLmRhdGEsIHByZWNpc2lvbik7CiB9CiAK
LWJvb2wgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRo
LCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dM
ZW51bSB0eXBlLCBjb25zdCB2b2lkKiBwaXhlbHMpCitib29sIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjp0ZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0g
aW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGlu
dCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48Y29uc3Qg
R0NHTHZvaWQ+IHBpeGVscykKIHsKLSAgICBpZiAod2lkdGggJiYgaGVpZ2h0ICYmICFwaXhlbHMp
IHsKKyAgICBpZiAod2lkdGggJiYgaGVpZ2h0ICYmICFwaXhlbHMuZGF0YSkgewogICAgICAgICBz
eW50aGVzaXplR0xFcnJvcihJTlZBTElEX1ZBTFVFKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIH0KIAotICAgIHRleEltYWdlMkREaXJlY3QodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3Jt
YXQsIHdpZHRoLCBoZWlnaHQsIGJvcmRlciwgZm9ybWF0LCB0eXBlLCBwaXhlbHMpOworICAgIHRl
eEltYWdlMkREaXJlY3QodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWln
aHQsIGJvcmRlciwgZm9ybWF0LCB0eXBlLCBwaXhlbHMuZGF0YSk7CiAgICAgcmV0dXJuIHRydWU7
CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>414840</attachid>
            <date>2020-11-24 07:17:36 -0800</date>
            <delta_ts>2020-11-26 05:16:53 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219256-20201124171733.patch</filename>
            <type>text/plain</type>
            <size>192054</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwMTY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzIzYWI2YjRlNmM0NDFj
MDYzZWM1Mzg0YzZmOTA5NDdiZDFhNDY5ZC4uYWFhZmZkMjEwZWViMzliNDA4ZGEzNTYyNWY4MDFm
OTM1ZTg3ZDk2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyNiBAQAorMjAyMC0xMS0yMyAgS2lt
bW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIEdyYXBoaWNzQ29u
dGV4dEdMIHNob3VsZCBoYXZlIHJvYnVzdCBtdWx0aXZhbHVlIHNldHRlcnMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxOTI1NgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlcGxhY2UgYnVmU2l6ZSwgcG9p
bnRlciBwYWlycyBhbmQgcGxhaW4gcG9pbnRlcnMgaW4gR3JhcGhpY3NDb250ZXh0R0wKKyAgICAg
ICAgd2l0aCBHQ0dMU3Bhbi4gVGhpcyBtYWtlcyBpdCBlYXNpZXIgdG8gdW5kZXJzdGFuZCBob3cg
bWFueSB2YWx1ZXMgdGhlcmUKKyAgICAgICAgYXJlIHBvaW50ZWQgYnkgdGhlIHBvaW50ZXIuIFRo
aXMgaXMgbmVlZGVkIGZvciBzaW1wbGVyIGltcGxlbWVudGF0aW9uIG9mIEdQVQorICAgICAgICBw
cm9jZXNzIElQQywgd2hlcmUgdGhlIElQQyBsYXllciBkb2VzIG5vdCBuZWVkIHRvIGludGVycHJl
dCB0aGUgT3BlbkdMCisgICAgICAgIHByb3BlcnRpZXMuCisKKyAgICAgICAgSW4gV2ViR0wgaW1w
bGVtZW50YXRpb24sIGNoYW5nZXMgdGhlIHZhbGlkYXRpb24gZnVuY3Rpb25zIHRvIHJldHVybgor
ICAgICAgICB0aGUgbWVtb3J5IHJlZmVyZW5jZSB0aGF0IHdpbGwgYmUgdG91Y2hlZCBieSB0aGUg
dmFsaWQgZnVuY3Rpb24gY2FsbC4KKyAgICAgICAgT24gdmFsaWRhdGlvbiBmYWlsdXJlLCBudWxs
b3B0IHdpbGwgYmUgcmV0dXJuZWQuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBhIHJlZmFjdG9y
LgorCisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjppbnZhbGlkYXRlRnJhbWVi
dWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6aW52YWxp
ZGF0ZVN1YkZyYW1lYnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0Nv
bnRleHQ6OnVuaWZvcm0xdWl2KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0Nv
bnRleHQ6OnVuaWZvcm0ydWl2KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0Nv
bnRleHQ6OnVuaWZvcm0zdWl2KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0Nv
bnRleHQ6OnVuaWZvcm00dWl2KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0Nv
bnRleHQ6OnVuaWZvcm1NYXRyaXgyeDNmdik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5k
ZXJpbmdDb250ZXh0Ojp1bmlmb3JtTWF0cml4M3gyZnYpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
R0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybU1hdHJpeDJ4NGZ2KToKKyAgICAgICAgKFdlYkNv
cmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm1NYXRyaXg0eDJmdik6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtTWF0cml4M3g0ZnYpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybU1hdHJpeDR4
M2Z2KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnZlcnRleEF0
dHJpYkk0aXYpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dmVy
dGV4QXR0cmliSTR1aXYpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4
dDo6ZHJhd0J1ZmZlcnMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4
dDo6Y2xlYXJCdWZmZXJpdik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250
ZXh0OjpjbGVhckJ1ZmZlcnVpdik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdD
b250ZXh0OjpjbGVhckJ1ZmZlcmZ2KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmlu
Z0NvbnRleHQ6OnZhbGlkYXRlQ2xlYXJCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wy
UmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTFmdik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJS
ZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtMmZ2KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJl
bmRlcmluZ0NvbnRleHQ6OnVuaWZvcm0zZnYpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVu
ZGVyaW5nQ29udGV4dDo6dW5pZm9ybTRmdik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5k
ZXJpbmdDb250ZXh0Ojp1bmlmb3JtMWl2KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRl
cmluZ0NvbnRleHQ6OnVuaWZvcm0yaXYpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVy
aW5nQ29udGV4dDo6dW5pZm9ybTNpdik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJp
bmdDb250ZXh0Ojp1bmlmb3JtNGl2KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmlu
Z0NvbnRleHQ6OnVuaWZvcm1NYXRyaXgyZnYpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVu
ZGVyaW5nQ29udGV4dDo6dW5pZm9ybU1hdHJpeDNmdik6CisgICAgICAgIChXZWJDb3JlOjpXZWJH
TDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtTWF0cml4NGZ2KToKKyAgICAgICAgKiBodG1sL2Nh
bnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0Lmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2Vi
R0xEcmF3QnVmZmVycy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTERyYXdCdWZmZXJzOjpk
cmF3QnVmZmVyc1dFQkdMKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTEZyYW1lYnVmZmVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMRnJhbWVidWZmZXI6OmRyYXdCdWZmZXJzSWZO
ZWNlc3NhcnkpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6YnVm
ZmVyRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpi
dWZmZXJTdWJEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U6OnVuaWZvcm0xZnYpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZTo6dW5pZm9ybTJmdik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlOjp1bmlmb3JtM2Z2KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OnVuaWZvcm00ZnYpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6dW5pZm9ybTFpdik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlOjp1bmlmb3JtMml2KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2U6OnVuaWZvcm0zaXYpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybTRpdik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtTWF0cml4MmZ2KToKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm1NYXRyaXgzZnYpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybU1hdHJpeDRmdik6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZVVuaWZv
cm1NYXRyaXhQYXJhbWV0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OnZlcnRleEF0dHJpYmZ2SW1wbCk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6dmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycyk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvRXh0ZW5zaW9uc0dMLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0R0wuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc1R5cGVzR0wuaDoKKyAgICAgICAgKEdDR0xTcGFuOjpHQ0dMU3Bhbik6CisgICAgICAgIChz
dGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCk6CisgICAgICAgIChtYWtlR0NHTFNwYW4p
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpkcmF3QnVmZmVyc0VYVCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xF
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpidWZmZXJE
YXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpidWZmZXJT
dWJEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlm
b3JtMWZ2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlm
b3JtMmZ2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlm
b3JtM2Z2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlm
b3JtNGZ2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlm
b3JtMWl2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlm
b3JtMml2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlm
b3JtM2l2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlm
b3JtNGl2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlm
b3JtTWF0cml4MmZ2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
Ojp1bmlmb3JtTWF0cml4M2Z2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjp1bmlmb3JtTWF0cml4NGZ2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjp2ZXJ0ZXhBdHRyaWIxZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYjJmdik6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliM2Z2KToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2ZXJ0ZXhBdHRyaWI0ZnYpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmludmFsaWRhdGVGcmFtZWJ1ZmZlcik6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6aW52YWxpZGF0ZVN1
YkZyYW1lYnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
Ojp1bmlmb3JtMXVpdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6dW5pZm9ybTJ1aXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OnVuaWZvcm0zdWl2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjp1bmlmb3JtNHVpdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6dW5pZm9ybU1hdHJpeDJ4M2Z2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4M3gyZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXgyeDRmdik6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybU1hdHJpeDR4MmZ2KToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4M3g0ZnYp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRy
aXg0eDNmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVy
dGV4QXR0cmliSTRpdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6dmVydGV4QXR0cmliSTR1aXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmRyYXdCdWZmZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpjbGVhckJ1ZmZlcml2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpjbGVhckJ1ZmZlcnVpdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6Y2xlYXJCdWZmZXJmdik6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY3YvR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMQ1ZBTkdMRTo6aW5pdGlhbGl6ZVVWQ29udGV4dE9iamVjdHMpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFOjpjb3B5UGl4ZWxCdWZm
ZXJUb1RleHR1cmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGlj
c0NvbnRleHRHTE9wZW5HTC5oOgorCiAyMDIwLTExLTIyICBBbnR0aSBLb2l2aXN0byAgPGFudHRp
QGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXVtJbnRlZ3JhdGlvbl0gQ29udmVydCBzb21lIHJl
bWFpbmluZyBJbmxpbmVCb3ggYWNjZXNzIHRvIHVzZSBpbmxpbmUgaXRlcmF0b3IKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHAK
aW5kZXggNTViYzFmOGRiMjQ5ZDMzODIyZTc4ODljYTc4M2Y1YmVjMDI1YTI5OS4uZTc5ZmU0ZWRi
ZmY4NDBkZGNkNTRlNjcxYTE0YTU3OThhNTBiZGJmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTY3Niw3ICs2
NzYsNyBAQCB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldEJ1ZmZlclN1YkRhdGEoR0NH
TGVudW0gdGFyZ2V0LCBsb25nIGxvbmcgc3JjQnl0ZQogICAgICAgICBzeW50aGVzaXplR0xFcnJv
cihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9WQUxVRSwgImdldEJ1ZmZlclN1YkRhdGEiLCAi
UGFyYW1ldGVycyB3b3VsZCByZWFkIG91dHNpZGUgdGhlIGJvdW5kcyBvZiB0aGUgc291cmNlIGJ1
ZmZlciIpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIAorCiAgICAgaWYgKCFjb3B5TGVu
Z3RoKQogICAgICAgICByZXR1cm47CiAKQEAgLTg5NSw3ICs4OTUsNyBAQCB2b2lkIFdlYkdMMlJl
bmRlcmluZ0NvbnRleHQ6OmludmFsaWRhdGVGcmFtZWJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQsIGNv
bnN0IFZlY3RvcgogICAgIFZlY3RvcjxHQ0dMZW51bT4gdHJhbnNsYXRlZEF0dGFjaG1lbnRzID0g
YXR0YWNobWVudHM7CiAgICAgaWYgKCFjaGVja0FuZFRyYW5zbGF0ZUF0dGFjaG1lbnRzKCJpbnZh
bGlkYXRlRnJhbWVidWZmZXIiLCB0YXJnZXQsIHRyYW5zbGF0ZWRBdHRhY2htZW50cykpCiAgICAg
ICAgIHJldHVybjsKLSAgICBtX2NvbnRleHQtPmludmFsaWRhdGVGcmFtZWJ1ZmZlcih0YXJnZXQs
IHRyYW5zbGF0ZWRBdHRhY2htZW50cy5zaXplKCksIHRyYW5zbGF0ZWRBdHRhY2htZW50cy5kYXRh
KCkpOworICAgIG1fY29udGV4dC0+aW52YWxpZGF0ZUZyYW1lYnVmZmVyKHRhcmdldCwgdHJhbnNs
YXRlZEF0dGFjaG1lbnRzKTsKIH0KIAogdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjppbnZh
bGlkYXRlU3ViRnJhbWVidWZmZXIoR0NHTGVudW0gdGFyZ2V0LCBjb25zdCBWZWN0b3I8R0NHTGVu
dW0+JiBhdHRhY2htZW50cywgR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwg
R0NHTHNpemVpIGhlaWdodCkKQEAgLTkwNiw3ICs5MDYsNyBAQCB2b2lkIFdlYkdMMlJlbmRlcmlu
Z0NvbnRleHQ6OmludmFsaWRhdGVTdWJGcmFtZWJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQsIGNvbnN0
IFZlYwogICAgIFZlY3RvcjxHQ0dMZW51bT4gdHJhbnNsYXRlZEF0dGFjaG1lbnRzID0gYXR0YWNo
bWVudHM7CiAgICAgaWYgKCFjaGVja0FuZFRyYW5zbGF0ZUF0dGFjaG1lbnRzKCJpbnZhbGlkYXRl
U3ViRnJhbWVidWZmZXIiLCB0YXJnZXQsIHRyYW5zbGF0ZWRBdHRhY2htZW50cykpCiAgICAgICAg
IHJldHVybjsKLSAgICBtX2NvbnRleHQtPmludmFsaWRhdGVTdWJGcmFtZWJ1ZmZlcih0YXJnZXQs
IHRyYW5zbGF0ZWRBdHRhY2htZW50cy5zaXplKCksIHRyYW5zbGF0ZWRBdHRhY2htZW50cy5kYXRh
KCksIHgsIHksIHdpZHRoLCBoZWlnaHQpOworICAgIG1fY29udGV4dC0+aW52YWxpZGF0ZVN1YkZy
YW1lYnVmZmVyKHRhcmdldCwgdHJhbnNsYXRlZEF0dGFjaG1lbnRzLCB4LCB5LCB3aWR0aCwgaGVp
Z2h0KTsKIH0KIAogdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpyZWFkQnVmZmVyKEdDR0xl
bnVtIHNyYykKQEAgLTExMjksNyArMTEyOSw3IEBAIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4
dDo6dGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQKICAg
ICBpZiAoIXZhbGlkYXRlVGV4RnVuYygidGV4SW1hZ2UyRCIsIFRleEltYWdlRnVuY3Rpb25UeXBl
OjpUZXhJbWFnZSwgU291cmNlVW5wYWNrQnVmZmVyLCB0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZv
cm1hdCwgd2lkdGgsIGhlaWdodCwgMSwgYm9yZGVyLCBmb3JtYXQsIHR5cGUsIDAsIDAsIDApKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS50ZXhJbWFn
ZTJEUm9idXN0QU5HTEUodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWln
aHQsIGJvcmRlciwgZm9ybWF0LCB0eXBlLCAwLCByZWludGVycHJldF9jYXN0PHZvaWQqPihvZmZz
ZXQpKTsKKyAgICBtX2NvbnRleHQtPnRleEltYWdlMkQodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxm
b3JtYXQsIHdpZHRoLCBoZWlnaHQsIGJvcmRlciwgZm9ybWF0LCB0eXBlLCBvZmZzZXQpOwogfQog
CiBFeGNlcHRpb25Pcjx2b2lkPiBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp0ZXhJbWFnZTJEKEdD
R0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCBpbnRlcm5hbGZvcm1hdCwgR0NH
THNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTGVudW0g
Zm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBUZXhJbWFnZVNvdXJjZSYmIHNvdXJjZSkKQEAgLTExNzMs
NyArMTE3Myw3IEBAIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dGV4SW1hZ2UzRChHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQKICAgICBpZiAoIXZhbGlkYXRlVGV4
RnVuYygidGV4SW1hZ2UzRCIsIFRleEltYWdlRnVuY3Rpb25UeXBlOjpUZXhJbWFnZSwgU291cmNl
VW5wYWNrQnVmZmVyLCB0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdo
dCwgZGVwdGgsIGJvcmRlciwgZm9ybWF0LCB0eXBlLCAwLCAwLCAwKSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkudGV4SW1hZ2UzRFJvYnVzdEFOR0xF
KHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgYm9y
ZGVyLCBmb3JtYXQsIHR5cGUsIDAsIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KG9mZnNldCkpOwor
ICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnRleEltYWdlM0RSb2J1c3RBTkdMRSh0YXJn
ZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGJvcmRlciwg
Zm9ybWF0LCB0eXBlLCAgc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KG9mZnNldCkpOwogfQogCiBFeGNl
cHRpb25Pcjx2b2lkPiBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp0ZXhJbWFnZTNEKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVp
IHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xpbnQgYm9yZGVy
LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIFRleEltYWdlU291cmNlJiYgc291cmNl
KQpAQCAtMTI1OSw3ICsxMjU5LDcgQEAgdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp0ZXhT
dWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGkKICAgICBpZiAo
IXZhbGlkYXRlVGV4RnVuYygidGV4U3ViSW1hZ2UyRCIsIFRleEltYWdlRnVuY3Rpb25UeXBlOjpU
ZXhTdWJJbWFnZSwgU291cmNlVW5wYWNrQnVmZmVyLCB0YXJnZXQsIGxldmVsLCAwLCB3aWR0aCwg
aGVpZ2h0LCAxLCAwLCBmb3JtYXQsIHR5cGUsIHhvZmZzZXQsIHlvZmZzZXQsIDApKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS50ZXhTdWJJbWFnZTJE
Um9idXN0QU5HTEUodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdo
dCwgZm9ybWF0LCB0eXBlLCAwLCByZWludGVycHJldF9jYXN0PHZvaWQqPihvZmZzZXQpKTsKKyAg
ICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS50ZXhTdWJJbWFnZTJEUm9idXN0QU5HTEUodGFy
Z2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBl
LCBvZmZzZXQpOwogfQogCiBFeGNlcHRpb25Pcjx2b2lkPiBXZWJHTDJSZW5kZXJpbmdDb250ZXh0
Ojp0ZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4
b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdo
dCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBUZXhJbWFnZVNvdXJjZSYmIHNvdXJj
ZSkKQEAgLTEzMDMsNyArMTMwMyw3IEBAIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dGV4
U3ViSW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpCiAgICAgaWYg
KCF2YWxpZGF0ZVRleEZ1bmMoInRleFN1YkltYWdlM0QiLCBUZXhJbWFnZUZ1bmN0aW9uVHlwZTo6
VGV4U3ViSW1hZ2UsIFNvdXJjZVVucGFja0J1ZmZlciwgdGFyZ2V0LCBsZXZlbCwgMCwgd2lkdGgs
IGhlaWdodCwgZGVwdGgsIDAsIGZvcm1hdCwgdHlwZSwgeG9mZnNldCwgeW9mZnNldCwgem9mZnNl
dCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnRl
eFN1YkltYWdlM0RSb2J1c3RBTkdMRSh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB6
b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgZm9ybWF0LCB0eXBlLCAwLCByZWludGVycHJl
dF9jYXN0PHZvaWQqPihvZmZzZXQpKTsKKyAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS50
ZXhTdWJJbWFnZTNEUm9idXN0QU5HTEUodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwg
em9mZnNldCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGZvcm1hdCwgdHlwZSwgc3RhdGljX2Nhc3Q8
aW50cHRyX3Q+KG9mZnNldCkpOwogfQogCiB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnRl
eFN1YkltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZz
ZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTGludCB6b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdD
R0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51
bSB0eXBlLCBSZWZQdHI8QXJyYXlCdWZmZXJWaWV3PiYmIHNyY0RhdGEsIEdDR0x1aW50IHNyY09m
ZnNldCkKQEAgLTEzNzIsNyArMTM3Miw3IEBAIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6
Y29tcHJlc3NlZFRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsCiAgICAg
bV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuY29tcHJlc3NlZFRleEltYWdlMkRSb2J1c3RBTkdM
RSgKICAgICAgICAgdGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLAogICAgICAg
ICBoZWlnaHQsIGJvcmRlciwgaW1hZ2VTaXplLAotICAgICAgICAwLCByZWludGVycHJldF9jYXN0
PHVpbnQ4X3QqPihvZmZzZXQpKTsKKyAgICAgICAgc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KG9mZnNl
dCkpOwogfQogCiB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmNvbXByZXNzZWRUZXhJbWFn
ZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3Jt
YXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEFy
cmF5QnVmZmVyVmlldyYgc3JjRGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNM
ZW5ndGhPdmVycmlkZSkKQEAgLTEzOTMsNyArMTM5Myw3IEBAIHZvaWQgV2ViR0wyUmVuZGVyaW5n
Q29udGV4dDo6Y29tcHJlc3NlZFRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxl
dmVsCiAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuY29tcHJlc3NlZFRleEltYWdlMkRS
b2J1c3RBTkdMRSgKICAgICAgICAgdGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRo
LCBoZWlnaHQsCiAgICAgICAgIGJvcmRlciwgc2xpY2UtPmJ5dGVMZW5ndGgoKSwKLSAgICAgICAg
c2xpY2UtPmJ5dGVMZW5ndGgoKSwgc2xpY2UtPmJhc2VBZGRyZXNzKCkpOworICAgICAgICBtYWtl
R0NHTFNwYW4oc2xpY2UtPmJhc2VBZGRyZXNzKCksIHNsaWNlLT5ieXRlTGVuZ3RoKCkpKTsKIH0K
IAogdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojpjb21wcmVzc2VkVGV4SW1hZ2UzRChHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dM
c2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGludCBi
b3JkZXIsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xpbnQ2NCBvZmZzZXQpCkBAIC0xNDExLDcg
KzE0MTEsNyBAQCB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmNvbXByZXNzZWRUZXhJbWFn
ZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbAogICAgIG1fY29udGV4dC0+Z2V0RXh0
ZW5zaW9ucygpLmNvbXByZXNzZWRUZXhJbWFnZTNEUm9idXN0QU5HTEUoCiAgICAgICAgIHRhcmdl
dCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwKICAgICAgICAgaGVpZ2h0LCBkZXB0aCwg
Ym9yZGVyLCBpbWFnZVNpemUsCi0gICAgICAgIDAsIHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+
KG9mZnNldCkpOworICAgICAgICBzdGF0aWNfY2FzdDxpbnRwdHJfdD4ob2Zmc2V0KSk7CiB9CiAK
IHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Y29tcHJlc3NlZFRleEltYWdlM0QoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNp
emVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xpbnQgYm9y
ZGVyLCBBcnJheUJ1ZmZlclZpZXcmIHNyY0RhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVp
bnQgc3JjTGVuZ3RoT3ZlcnJpZGUpCkBAIC0xNDMyLDcgKzE0MzIsNyBAQCB2b2lkIFdlYkdMMlJl
bmRlcmluZ0NvbnRleHQ6OmNvbXByZXNzZWRUZXhJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NH
TGludCBsZXZlbAogICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmNvbXByZXNzZWRUZXhJ
bWFnZTNEUm9idXN0QU5HTEUoCiAgICAgICAgIHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0
LCB3aWR0aCwgaGVpZ2h0LAogICAgICAgICBkZXB0aCwgYm9yZGVyLCBzbGljZS0+Ynl0ZUxlbmd0
aCgpLAotICAgICAgICBzbGljZS0+Ynl0ZUxlbmd0aCgpLCBzbGljZS0+YmFzZUFkZHJlc3MoKSk7
CisgICAgICAgIG1ha2VHQ0dMU3BhbihzbGljZS0+YmFzZUFkZHJlc3MoKSwgc2xpY2UtPmJ5dGVM
ZW5ndGgoKSkpOwogfQogCiB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmNvbXByZXNzZWRU
ZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zm
c2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwg
R0NHTGVudW0gZm9ybWF0LCBBcnJheUJ1ZmZlclZpZXcmIHNyY0RhdGEpCkBAIC0xNDYzLDcgKzE0
NjMsNyBAQCB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmNvbXByZXNzZWRUZXhTdWJJbWFn
ZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZQogICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5z
aW9ucygpLmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEUm9idXN0QU5HTEUoCiAgICAgICAgIHRhcmdl
dCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsCiAgICAgICAgIHdpZHRoLCBoZWlnaHQsIGZvcm1h
dCwgaW1hZ2VTaXplLAotICAgICAgICAwLCByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihvZmZz
ZXQpKTsKKyAgICAgICAgb2Zmc2V0KTsKIH0KIAogdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0
Ojpjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWws
IEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xz
aXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgQXJyYXlCdWZmZXJWaWV3JiBzcmNEYXRhLCBH
Q0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aE92ZXJyaWRlKQpAQCAtMTQ4NCw3
ICsxNDg0LDcgQEAgdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojpjb21wcmVzc2VkVGV4U3Vi
SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGUKICAgICBtX2NvbnRleHQtPmdldEV4
dGVuc2lvbnMoKS5jb21wcmVzc2VkVGV4U3ViSW1hZ2UyRFJvYnVzdEFOR0xFKAogICAgICAgICB0
YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LAogICAgICAgICB3aWR0aCwgaGVpZ2h0LCBm
b3JtYXQsIHNsaWNlLT5ieXRlTGVuZ3RoKCksCi0gICAgICAgIHNsaWNlLT5ieXRlTGVuZ3RoKCks
IHNsaWNlLT5iYXNlQWRkcmVzcygpKTsKKyAgICAgICAgbWFrZUdDR0xTcGFuKHNsaWNlLT5iYXNl
QWRkcmVzcygpLCBzbGljZS0+Ynl0ZUxlbmd0aCgpKSk7CiB9CiAKIHZvaWQgV2ViR0wyUmVuZGVy
aW5nQ29udGV4dDo6Y29tcHJlc3NlZFRleFN1YkltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
aW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTGludCB6b2Zm
c2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwg
R0NHTGVudW0gZm9ybWF0LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMaW50NjQgb2Zmc2V0KQpA
QCAtMTUwMiw3ICsxNTAyLDcgQEAgdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojpjb21wcmVz
c2VkVGV4U3ViSW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGUKICAgICBtX2NvbnRl
eHQtPmdldEV4dGVuc2lvbnMoKS5jb21wcmVzc2VkVGV4U3ViSW1hZ2UzRFJvYnVzdEFOR0xFKAog
ICAgICAgICB0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB6b2Zmc2V0LAogICAgICAg
ICB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgZm9ybWF0LCBpbWFnZVNpemUsCi0gICAgICAgIDAsIHJl
aW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KG9mZnNldCkpOworICAgICAgICBzdGF0aWNfY2FzdDxp
bnRwdHJfdD4ob2Zmc2V0KSk7CiB9CiAKIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Y29t
cHJlc3NlZFRleFN1YkltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dM
aW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTGludCB6b2Zmc2V0LCBHQ0dMc2l6ZWkg
d2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGVudW0gZm9ybWF0
LCBBcnJheUJ1ZmZlclZpZXcmIHNyY0RhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQg
c3JjTGVuZ3RoT3ZlcnJpZGUpCkBAIC0xNTIzLDcgKzE1MjMsNyBAQCB2b2lkIFdlYkdMMlJlbmRl
cmluZ0NvbnRleHQ6OmNvbXByZXNzZWRUZXhTdWJJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NH
TGludCBsZQogICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmNvbXByZXNzZWRUZXhTdWJJ
bWFnZTNEUm9idXN0QU5HTEUoCiAgICAgICAgIHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZz
ZXQsIHpvZmZzZXQsCiAgICAgICAgIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBmb3JtYXQsIHNsaWNl
LT5ieXRlTGVuZ3RoKCksCi0gICAgICAgIHNsaWNlLT5ieXRlTGVuZ3RoKCksIHNsaWNlLT5iYXNl
QWRkcmVzcygpKTsKKyAgICAgICAgbWFrZUdDR0xTcGFuKHNsaWNlLT5iYXNlQWRkcmVzcygpLCBz
bGljZS0+Ynl0ZUxlbmd0aCgpKSk7CiB9CiAKIEdDR0xpbnQgV2ViR0wyUmVuZGVyaW5nQ29udGV4
dDo6Z2V0RnJhZ0RhdGFMb2NhdGlvbihXZWJHTFByb2dyYW0mIHByb2dyYW0sIGNvbnN0IFN0cmlu
ZyYgbmFtZSkKQEAgLTE1NjMsNzIgKzE1NjMsMTAyIEBAIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29u
dGV4dDo6dW5pZm9ybTR1aShXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEdDR0x1aW50
CiAKIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTF1aXYoV2ViR0xVbmlmb3Jt
TG9jYXRpb24qIGxvY2F0aW9uLCBVaW50MzJMaXN0JiYgdmFsdWUsIEdDR0x1aW50IHNyY09mZnNl
dCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQogewotICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5n
KCkgfHwgIXZhbGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMoInVuaWZvcm0xdWl2IiwgbG9jYXRpb24s
IHZhbHVlLCAxLCBzcmNPZmZzZXQsIHNyY0xlbmd0aCkpCisgICAgaWYgKGlzQ29udGV4dExvc3RP
clBlbmRpbmcoKSkKKyAgICAgICAgcmV0dXJuOworICAgIGF1dG8gZGF0YSA9IHZhbGlkYXRlVW5p
Zm9ybVBhcmFtZXRlcnMoInVuaWZvcm0xdWl2IiwgbG9jYXRpb24sIHZhbHVlLCAxLCBzcmNPZmZz
ZXQsIHNyY0xlbmd0aCk7CisgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm47Ci0gICAgbV9j
b250ZXh0LT51bmlmb3JtMXVpdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgdmFsdWUuZGF0YSgpLCBz
cmNPZmZzZXQsIHNyY0xlbmd0aCA/IHNyY0xlbmd0aCA6ICh2YWx1ZS5sZW5ndGgoKSAtIHNyY09m
ZnNldCkpOworICAgIG1fY29udGV4dC0+dW5pZm9ybTF1aXYobG9jYXRpb24tPmxvY2F0aW9uKCks
IGRhdGEudmFsdWUoKSk7CiB9CiAKIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9y
bTJ1aXYoV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBVaW50MzJMaXN0JiYgdmFsdWUs
IEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQogewotICAgIGlmIChpc0Nv
bnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMoInVuaWZv
cm0ydWl2IiwgbG9jYXRpb24sIHZhbHVlLCAyLCBzcmNPZmZzZXQsIHNyY0xlbmd0aCkpCisgICAg
aWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSkKKyAgICAgICAgcmV0dXJuOworICAgIGF1dG8g
ZGF0YSA9IHZhbGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMoInVuaWZvcm0ydWl2IiwgbG9jYXRpb24s
IHZhbHVlLCAyLCBzcmNPZmZzZXQsIHNyY0xlbmd0aCk7CisgICAgaWYgKCFkYXRhKQogICAgICAg
ICByZXR1cm47Ci0gICAgbV9jb250ZXh0LT51bmlmb3JtMnVpdihsb2NhdGlvbi0+bG9jYXRpb24o
KSwgdmFsdWUuZGF0YSgpLCBzcmNPZmZzZXQsIChzcmNMZW5ndGggPyBzcmNMZW5ndGggOiB2YWx1
ZS5sZW5ndGgoKSAtIHNyY09mZnNldCkgLyAyKTsKKyAgICBtX2NvbnRleHQtPnVuaWZvcm0ydWl2
KGxvY2F0aW9uLT5sb2NhdGlvbigpLCBkYXRhLnZhbHVlKCkpOwogfQogCiB2b2lkIFdlYkdMMlJl
bmRlcmluZ0NvbnRleHQ6OnVuaWZvcm0zdWl2KFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlv
biwgVWludDMyTGlzdCYmIHZhbHVlLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xl
bmd0aCkKIHsKLSAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVVu
aWZvcm1QYXJhbWV0ZXJzKCJ1bmlmb3JtM3VpdiIsIGxvY2F0aW9uLCB2YWx1ZSwgMywgc3JjT2Zm
c2V0LCBzcmNMZW5ndGgpKQorICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCisgICAg
ICAgIHJldHVybjsKKyAgICBhdXRvIGRhdGEgPSB2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKCJ1
bmlmb3JtM3VpdiIsIGxvY2F0aW9uLCB2YWx1ZSwgMywgc3JjT2Zmc2V0LCBzcmNMZW5ndGgpOwor
ICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuOwotICAgIG1fY29udGV4dC0+dW5pZm9ybTN1
aXYobG9jYXRpb24tPmxvY2F0aW9uKCksIHZhbHVlLmRhdGEoKSwgc3JjT2Zmc2V0LCAoc3JjTGVu
Z3RoID8gc3JjTGVuZ3RoIDogdmFsdWUubGVuZ3RoKCkgLSBzcmNPZmZzZXQpIC8gMyk7CisgICAg
bV9jb250ZXh0LT51bmlmb3JtM3Vpdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgZGF0YS52YWx1ZSgp
KTsKIH0KIAogdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtNHVpdihXZWJHTFVu
aWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIFVpbnQzMkxpc3QmJiB2YWx1ZSwgR0NHTHVpbnQgc3Jj
T2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCiB7Ci0gICAgaWYgKGlzQ29udGV4dExvc3RPclBl
bmRpbmcoKSB8fCAhdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycygidW5pZm9ybTR1aXYiLCBsb2Nh
dGlvbiwgdmFsdWUsIDQsIHNyY09mZnNldCwgc3JjTGVuZ3RoKSkKKyAgICBpZiAoaXNDb250ZXh0
TG9zdE9yUGVuZGluZygpKQorICAgICAgICByZXR1cm47CisgICAgYXV0byBkYXRhID0gdmFsaWRh
dGVVbmlmb3JtUGFyYW1ldGVycygidW5pZm9ybTR1aXYiLCBsb2NhdGlvbiwgdmFsdWUsIDQsIHNy
Y09mZnNldCwgc3JjTGVuZ3RoKTsKKyAgICBpZiAoIWRhdGEpCiAgICAgICAgIHJldHVybjsKLSAg
ICBtX2NvbnRleHQtPnVuaWZvcm00dWl2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCB2YWx1ZS5kYXRh
KCksIHNyY09mZnNldCwgKHNyY0xlbmd0aCA/IHNyY0xlbmd0aCA6IHZhbHVlLmxlbmd0aCgpIC0g
c3JjT2Zmc2V0KSAvIDQpOworICAgIG1fY29udGV4dC0+dW5pZm9ybTR1aXYobG9jYXRpb24tPmxv
Y2F0aW9uKCksIGRhdGEudmFsdWUoKSk7CiB9CiAKIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4
dDo6dW5pZm9ybU1hdHJpeDJ4M2Z2KFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgR0NH
TGJvb2xlYW4gdHJhbnNwb3NlLCBGbG9hdDMyTGlzdCYmIHYsIEdDR0x1aW50IHNyY09mZnNldCwg
R0NHTHVpbnQgc3JjTGVuZ3RoKQogewotICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkg
fHwgIXZhbGlkYXRlVW5pZm9ybU1hdHJpeFBhcmFtZXRlcnMoInVuaWZvcm1NYXRyaXgyeDNmdiIs
IGxvY2F0aW9uLCB0cmFuc3Bvc2UsIHYsIDYsIHNyY09mZnNldCwgc3JjTGVuZ3RoKSkKKyAgICBp
ZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpKQorICAgICAgICByZXR1cm47CisgICAgYXV0byBk
YXRhID0gdmFsaWRhdGVVbmlmb3JtTWF0cml4UGFyYW1ldGVycygidW5pZm9ybU1hdHJpeDJ4M2Z2
IiwgbG9jYXRpb24sIHRyYW5zcG9zZSwgdiwgNiwgc3JjT2Zmc2V0LCBzcmNMZW5ndGgpOworICAg
IGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuOwotICAgIG1fY29udGV4dC0+dW5pZm9ybU1hdHJp
eDJ4M2Z2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCB0cmFuc3Bvc2UsIHYuZGF0YSgpLCBzcmNPZmZz
ZXQsIChzcmNMZW5ndGggPyBzcmNMZW5ndGggOiB2Lmxlbmd0aCgpIC0gc3JjT2Zmc2V0KSAvIDYp
OworICAgIG1fY29udGV4dC0+dW5pZm9ybU1hdHJpeDJ4M2Z2KGxvY2F0aW9uLT5sb2NhdGlvbigp
LCB0cmFuc3Bvc2UsIGRhdGEudmFsdWUoKSk7CiB9CiAKIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29u
dGV4dDo6dW5pZm9ybU1hdHJpeDN4MmZ2KFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwg
R0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBGbG9hdDMyTGlzdCYmIHYsIEdDR0x1aW50IHNyY09mZnNl
dCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQogewotICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5n
KCkgfHwgIXZhbGlkYXRlVW5pZm9ybU1hdHJpeFBhcmFtZXRlcnMoInVuaWZvcm1NYXRyaXgzeDJm
diIsIGxvY2F0aW9uLCB0cmFuc3Bvc2UsIHYsIDYsIHNyY09mZnNldCwgc3JjTGVuZ3RoKSkKKyAg
ICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpKQogICAgICAgICByZXR1cm47Ci0gICAgbV9j
b250ZXh0LT51bmlmb3JtTWF0cml4M3gyZnYobG9jYXRpb24tPmxvY2F0aW9uKCksIHRyYW5zcG9z
ZSwgdi5kYXRhKCksIHNyY09mZnNldCwgKHNyY0xlbmd0aCA/IHNyY0xlbmd0aCA6IHYubGVuZ3Ro
KCkgLSBzcmNPZmZzZXQpIC8gNik7CisgICAgYXV0byBkYXRhID0gdmFsaWRhdGVVbmlmb3JtTWF0
cml4UGFyYW1ldGVycygidW5pZm9ybU1hdHJpeDN4MmZ2IiwgbG9jYXRpb24sIHRyYW5zcG9zZSwg
diwgNiwgc3JjT2Zmc2V0LCBzcmNMZW5ndGgpOworICAgIGlmICghZGF0YSkKKyAgICAgICAgcmV0
dXJuOworICAgIG1fY29udGV4dC0+dW5pZm9ybU1hdHJpeDN4MmZ2KGxvY2F0aW9uLT5sb2NhdGlv
bigpLCB0cmFuc3Bvc2UsIGRhdGEudmFsdWUoKSk7CiB9CiAKIHZvaWQgV2ViR0wyUmVuZGVyaW5n
Q29udGV4dDo6dW5pZm9ybU1hdHJpeDJ4NGZ2KFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlv
biwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBGbG9hdDMyTGlzdCYmIHYsIEdDR0x1aW50IHNyY09m
ZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQogewotICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5k
aW5nKCkgfHwgIXZhbGlkYXRlVW5pZm9ybU1hdHJpeFBhcmFtZXRlcnMoInVuaWZvcm1NYXRyaXgy
eDRmdiIsIGxvY2F0aW9uLCB0cmFuc3Bvc2UsIHYsIDgsIHNyY09mZnNldCwgc3JjTGVuZ3RoKSkK
KyAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpKQogICAgICAgICByZXR1cm47Ci0gICAg
bV9jb250ZXh0LT51bmlmb3JtTWF0cml4Mng0ZnYobG9jYXRpb24tPmxvY2F0aW9uKCksIHRyYW5z
cG9zZSwgdi5kYXRhKCksIHNyY09mZnNldCwgKHNyY0xlbmd0aCA/IHNyY0xlbmd0aCA6IHYubGVu
Z3RoKCkgLSBzcmNPZmZzZXQpIC8gOCk7CisgICAgYXV0byBkYXRhID0gdmFsaWRhdGVVbmlmb3Jt
TWF0cml4UGFyYW1ldGVycygidW5pZm9ybU1hdHJpeDJ4NGZ2IiwgbG9jYXRpb24sIHRyYW5zcG9z
ZSwgdiwgOCwgc3JjT2Zmc2V0LCBzcmNMZW5ndGgpOworICAgIGlmICghZGF0YSkKKyAgICAgICAg
cmV0dXJuOworICAgIG1fY29udGV4dC0+dW5pZm9ybU1hdHJpeDJ4NGZ2KGxvY2F0aW9uLT5sb2Nh
dGlvbigpLCB0cmFuc3Bvc2UsIGRhdGEudmFsdWUoKSk7CiB9CiAKIHZvaWQgV2ViR0wyUmVuZGVy
aW5nQ29udGV4dDo6dW5pZm9ybU1hdHJpeDR4MmZ2KFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2Nh
dGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBGbG9hdDMyTGlzdCYmIHYsIEdDR0x1aW50IHNy
Y09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQogewotICAgIGlmIChpc0NvbnRleHRMb3N0T3JQ
ZW5kaW5nKCkgfHwgIXZhbGlkYXRlVW5pZm9ybU1hdHJpeFBhcmFtZXRlcnMoInVuaWZvcm1NYXRy
aXg0eDJmdiIsIGxvY2F0aW9uLCB0cmFuc3Bvc2UsIHYsIDgsIHNyY09mZnNldCwgc3JjTGVuZ3Ro
KSkKKyAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpKQogICAgICAgICByZXR1cm47Ci0g
ICAgbV9jb250ZXh0LT51bmlmb3JtTWF0cml4NHgyZnYobG9jYXRpb24tPmxvY2F0aW9uKCksIHRy
YW5zcG9zZSwgdi5kYXRhKCksIHNyY09mZnNldCwgKHNyY0xlbmd0aCA/IHNyY0xlbmd0aCA6IHYu
bGVuZ3RoKCkgLSBzcmNPZmZzZXQpIC8gOCk7CisgICAgYXV0byBkYXRhID0gdmFsaWRhdGVVbmlm
b3JtTWF0cml4UGFyYW1ldGVycygidW5pZm9ybU1hdHJpeDR4MmZ2IiwgbG9jYXRpb24sIHRyYW5z
cG9zZSwgdiwgOCwgc3JjT2Zmc2V0LCBzcmNMZW5ndGgpOworICAgIGlmICghZGF0YSkKKyAgICAg
ICAgcmV0dXJuOworICAgIG1fY29udGV4dC0+dW5pZm9ybU1hdHJpeDR4MmZ2KGxvY2F0aW9uLT5s
b2NhdGlvbigpLCB0cmFuc3Bvc2UsIGRhdGEudmFsdWUoKSk7CiB9CiAKIHZvaWQgV2ViR0wyUmVu
ZGVyaW5nQ29udGV4dDo6dW5pZm9ybU1hdHJpeDN4NGZ2KFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBs
b2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBGbG9hdDMyTGlzdCYmIHYsIEdDR0x1aW50
IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQogewotICAgIGlmIChpc0NvbnRleHRMb3N0
T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlVW5pZm9ybU1hdHJpeFBhcmFtZXRlcnMoInVuaWZvcm1N
YXRyaXgzeDRmdiIsIGxvY2F0aW9uLCB0cmFuc3Bvc2UsIHYsIDEyLCBzcmNPZmZzZXQsIHNyY0xl
bmd0aCkpCisgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSkKICAgICAgICAgcmV0dXJu
OwotICAgIG1fY29udGV4dC0+dW5pZm9ybU1hdHJpeDN4NGZ2KGxvY2F0aW9uLT5sb2NhdGlvbigp
LCB0cmFuc3Bvc2UsIHYuZGF0YSgpLCBzcmNPZmZzZXQsIChzcmNMZW5ndGggPyBzcmNMZW5ndGgg
OiB2Lmxlbmd0aCgpIC0gc3JjT2Zmc2V0KSAvIDEyKTsKKyAgICBhdXRvIGRhdGEgPSB2YWxpZGF0
ZVVuaWZvcm1NYXRyaXhQYXJhbWV0ZXJzKCJ1bmlmb3JtTWF0cml4M3g0ZnYiLCBsb2NhdGlvbiwg
dHJhbnNwb3NlLCB2LCAxMiwgc3JjT2Zmc2V0LCBzcmNMZW5ndGgpOworICAgIGlmICghZGF0YSkK
KyAgICAgICAgcmV0dXJuOworICAgIG1fY29udGV4dC0+dW5pZm9ybU1hdHJpeDN4NGZ2KGxvY2F0
aW9uLT5sb2NhdGlvbigpLCB0cmFuc3Bvc2UsIGRhdGEudmFsdWUoKSk7CiB9CiAKIHZvaWQgV2Vi
R0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybU1hdHJpeDR4M2Z2KFdlYkdMVW5pZm9ybUxvY2F0
aW9uKiBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBGbG9hdDMyTGlzdCYmIHYsIEdD
R0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQogewotICAgIGlmIChpc0NvbnRl
eHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlVW5pZm9ybU1hdHJpeFBhcmFtZXRlcnMoInVu
aWZvcm1NYXRyaXg0eDNmdiIsIGxvY2F0aW9uLCB0cmFuc3Bvc2UsIHYsIDEyLCBzcmNPZmZzZXQs
IHNyY0xlbmd0aCkpCisgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSkKKyAgICAgICAg
cmV0dXJuOworICAgIGF1dG8gZGF0YSA9IHZhbGlkYXRlVW5pZm9ybU1hdHJpeFBhcmFtZXRlcnMo
InVuaWZvcm1NYXRyaXg0eDNmdiIsIGxvY2F0aW9uLCB0cmFuc3Bvc2UsIHYsIDEyLCBzcmNPZmZz
ZXQsIHNyY0xlbmd0aCk7CisgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm47Ci0gICAgbV9j
b250ZXh0LT51bmlmb3JtTWF0cml4NHgzZnYobG9jYXRpb24tPmxvY2F0aW9uKCksIHRyYW5zcG9z
ZSwgdi5kYXRhKCksIHNyY09mZnNldCwgKHNyY0xlbmd0aCA/IHNyY0xlbmd0aCA6IHYubGVuZ3Ro
KCkgLSBzcmNPZmZzZXQpIC8gMTIpOworICAgIG1fY29udGV4dC0+dW5pZm9ybU1hdHJpeDR4M2Z2
KGxvY2F0aW9uLT5sb2NhdGlvbigpLCB0cmFuc3Bvc2UsIGRhdGEudmFsdWUoKSk7CiB9CiAKIHZv
aWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dmVydGV4QXR0cmliSTRpKEdDR0x1aW50IGluZGV4
LCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTGludCB6LCBHQ0dMaW50IHcpCkBAIC0xNjY0LDcg
KzE2OTQsNyBAQCB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnZlcnRleEF0dHJpYkk0aXYo
R0NHTHVpbnQgaW5kZXgsIEludDMyTGlzdCYmIGxpc3QpCiAgICAgICAgIHN5bnRoZXNpemVHTEVy
cm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX1ZBTFVFLCAidmVydGV4QXR0cmliSTRpdiIs
ICJpbmRleCBvdXQgb2YgcmFuZ2UiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBtX2Nv
bnRleHQtPnZlcnRleEF0dHJpYkk0aXYoaW5kZXgsIGRhdGEpOworICAgIG1fY29udGV4dC0+dmVy
dGV4QXR0cmliSTRpdihpbmRleCwgbWFrZUdDR0xTcGFuPDQ+KGRhdGEpKTsKICAgICBtX3ZlcnRl
eEF0dHJpYlZhbHVlW2luZGV4XS50eXBlID0gR3JhcGhpY3NDb250ZXh0R0w6OklOVDsKICAgICBt
ZW1jcHkobV92ZXJ0ZXhBdHRyaWJWYWx1ZVtpbmRleF0uaVZhbHVlLCBkYXRhLCBzaXplb2YobV92
ZXJ0ZXhBdHRyaWJWYWx1ZVtpbmRleF0uaVZhbHVlKSk7CiB9CkBAIC0xNjkyLDcgKzE3MjIsNyBA
QCB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnZlcnRleEF0dHJpYkk0dWl2KEdDR0x1aW50
IGluZGV4LCBVaW50MzJMaXN0JiYgbGlzdAogICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFw
aGljc0NvbnRleHRHTDo6SU5WQUxJRF9WQUxVRSwgInZlcnRleEF0dHJpYkk0dWl2IiwgIm5vIGFy
cmF5Iik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgCisKICAgICBpbnQgc2l6ZSA9IGxp
c3QubGVuZ3RoKCk7CiAgICAgaWYgKHNpemUgPCA0KSB7CiAgICAgICAgIHN5bnRoZXNpemVHTEVy
cm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX1ZBTFVFLCAidmVydGV4QXR0cmliSTR1aXYi
LCAiYXJyYXkgdG9vIHNtYWxsIik7CkBAIC0xNzAyLDcgKzE3MzIsNyBAQCB2b2lkIFdlYkdMMlJl
bmRlcmluZ0NvbnRleHQ6OnZlcnRleEF0dHJpYkk0dWl2KEdDR0x1aW50IGluZGV4LCBVaW50MzJM
aXN0JiYgbGlzdAogICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6
SU5WQUxJRF9WQUxVRSwgInZlcnRleEF0dHJpYkk0dWl2IiwgImluZGV4IG91dCBvZiByYW5nZSIp
OwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIG1fY29udGV4dC0+dmVydGV4QXR0cmliSTR1
aXYoaW5kZXgsIGRhdGEpOworICAgIG1fY29udGV4dC0+dmVydGV4QXR0cmliSTR1aXYoaW5kZXgs
IG1ha2VHQ0dMU3Bhbjw0PihkYXRhKSk7CiAgICAgbV92ZXJ0ZXhBdHRyaWJWYWx1ZVtpbmRleF0u
dHlwZSA9IEdyYXBoaWNzQ29udGV4dEdMOjpVTlNJR05FRF9JTlQ7CiAgICAgbWVtY3B5KG1fdmVy
dGV4QXR0cmliVmFsdWVbaW5kZXhdLnVpVmFsdWUsIGRhdGEsIHNpemVvZihtX3ZlcnRleEF0dHJp
YlZhbHVlW2luZGV4XS51aVZhbHVlKSk7CiB9CkBAIC0xNzYzLDggKzE3OTMsOCBAQCB2b2lkIFdl
YkdMMlJlbmRlcmluZ0NvbnRleHQ6OmRyYXdCdWZmZXJzKGNvbnN0IFZlY3RvcjxHQ0dMZW51bT4m
IGJ1ZmZlcnMpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgLy8gQmVj
YXVzZSB0aGUgYmFja2J1ZmZlciBpcyBzaW11bGF0ZWQgb24gYWxsIGN1cnJlbnQgV2ViS2l0IHBv
cnRzLCB3ZSBuZWVkIHRvIGNoYW5nZSBCQUNLIHRvIENPTE9SX0FUVEFDSE1FTlQwLgotICAgICAg
ICBHQ0dMZW51bSB2YWx1ZSA9IChidWZzWzBdID09IEdyYXBoaWNzQ29udGV4dEdMOjpCQUNLKSA/
IEdyYXBoaWNzQ29udGV4dEdMOjpDT0xPUl9BVFRBQ0hNRU5UMCA6IEdyYXBoaWNzQ29udGV4dEdM
OjpOT05FOwotICAgICAgICBtX2NvbnRleHQtPmRyYXdCdWZmZXJzKDEsICZ2YWx1ZSk7CisgICAg
ICAgIEdDR0xlbnVtIHZhbHVlWzFdIHsgKGJ1ZnNbMF0gPT0gR3JhcGhpY3NDb250ZXh0R0w6OkJB
Q0spID8gR3JhcGhpY3NDb250ZXh0R0w6OkNPTE9SX0FUVEFDSE1FTlQwIDogR3JhcGhpY3NDb250
ZXh0R0w6Ok5PTkUgfTsKKyAgICAgICAgbV9jb250ZXh0LT5kcmF3QnVmZmVycyh2YWx1ZSk7CiAg
ICAgICAgIHNldEJhY2tEcmF3QnVmZmVyKGJ1ZnNbMF0pOwogICAgIH0gZWxzZSB7CiAgICAgICAg
IGlmIChuID4gZ2V0TWF4RHJhd0J1ZmZlcnMoKSkgewpAQCAtMTc4MywyOCArMTgxMywzNiBAQCB2
b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmRyYXdCdWZmZXJzKGNvbnN0IFZlY3RvcjxHQ0dM
ZW51bT4mIGJ1ZmZlcnMpCiAKIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Y2xlYXJCdWZm
ZXJpdihHQ0dMZW51bSBidWZmZXIsIEdDR0xpbnQgZHJhd2J1ZmZlciwgSW50MzJMaXN0JiYgdmFs
dWVzLCBHQ0dMdWludCBzcmNPZmZzZXQpCiB7Ci0gICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRp
bmcoKSB8fCAhdmFsaWRhdGVDbGVhckJ1ZmZlcigiY2xlYXJCdWZmZXJpdiIsIGJ1ZmZlciwgdmFs
dWVzLmxlbmd0aCgpLCBzcmNPZmZzZXQpKQorICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5n
KCkpCisgICAgICAgIHJldHVybjsKKyAgICBhdXRvIGRhdGEgPSB2YWxpZGF0ZUNsZWFyQnVmZmVy
KCJjbGVhckJ1ZmZlcml2IiwgYnVmZmVyLCB2YWx1ZXMsIHNyY09mZnNldCk7CisgICAgaWYgKCFk
YXRhKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2NvbnRleHQtPmNsZWFyQnVmZmVyaXYoYnVm
ZmVyLCBkcmF3YnVmZmVyLCB2YWx1ZXMuZGF0YSgpLCBzcmNPZmZzZXQpOworICAgIG1fY29udGV4
dC0+Y2xlYXJCdWZmZXJpdihidWZmZXIsIGRyYXdidWZmZXIsIGRhdGEudmFsdWUoKSk7CiAgICAg
dXBkYXRlQnVmZmVyc1RvQXV0b0NsZWFyKENsZWFyQnVmZmVyQ2FsbGVyOjpDbGVhckJ1ZmZlcml2
LCBidWZmZXIsIGRyYXdidWZmZXIpOwogfQogCiB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6
OmNsZWFyQnVmZmVydWl2KEdDR0xlbnVtIGJ1ZmZlciwgR0NHTGludCBkcmF3YnVmZmVyLCBVaW50
MzJMaXN0JiYgdmFsdWVzLCBHQ0dMdWludCBzcmNPZmZzZXQpCiB7Ci0gICAgaWYgKGlzQ29udGV4
dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVDbGVhckJ1ZmZlcigiY2xlYXJCdWZmZXJ1aXYi
LCBidWZmZXIsIHZhbHVlcy5sZW5ndGgoKSwgc3JjT2Zmc2V0KSkKKyAgICBpZiAoaXNDb250ZXh0
TG9zdE9yUGVuZGluZygpKQogICAgICAgICByZXR1cm47Ci0KLSAgICBtX2NvbnRleHQtPmNsZWFy
QnVmZmVydWl2KGJ1ZmZlciwgZHJhd2J1ZmZlciwgdmFsdWVzLmRhdGEoKSwgc3JjT2Zmc2V0KTsK
KyAgICBhdXRvIGRhdGEgPSB2YWxpZGF0ZUNsZWFyQnVmZmVyKCJjbGVhckJ1ZmZlcnVpdiIsIGJ1
ZmZlciwgdmFsdWVzLCBzcmNPZmZzZXQpOworICAgIGlmICghZGF0YSkKKyAgICAgICAgcmV0dXJu
OworICAgIG1fY29udGV4dC0+Y2xlYXJCdWZmZXJ1aXYoYnVmZmVyLCBkcmF3YnVmZmVyLCBkYXRh
LnZhbHVlKCkpOwogICAgIHVwZGF0ZUJ1ZmZlcnNUb0F1dG9DbGVhcihDbGVhckJ1ZmZlckNhbGxl
cjo6Q2xlYXJCdWZmZXJ1aXYsIGJ1ZmZlciwgZHJhd2J1ZmZlcik7CiB9CiAKIHZvaWQgV2ViR0wy
UmVuZGVyaW5nQ29udGV4dDo6Y2xlYXJCdWZmZXJmdihHQ0dMZW51bSBidWZmZXIsIEdDR0xpbnQg
ZHJhd2J1ZmZlciwgRmxvYXQzMkxpc3QmJiB2YWx1ZXMsIEdDR0x1aW50IHNyY09mZnNldCkKIHsK
LSAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZUNsZWFyQnVmZmVy
KCJjbGVhckJ1ZmZlcmZ2IiwgYnVmZmVyLCB2YWx1ZXMubGVuZ3RoKCksIHNyY09mZnNldCkpCisg
ICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSkKKyAgICAgICAgcmV0dXJuOworICAgIGF1
dG8gZGF0YSA9IHZhbGlkYXRlQ2xlYXJCdWZmZXIoImNsZWFyQnVmZmVyZnYiLCBidWZmZXIsIHZh
bHVlcywgc3JjT2Zmc2V0KTsKKyAgICBpZiAoIWRhdGEpCiAgICAgICAgIHJldHVybjsKIAotICAg
IG1fY29udGV4dC0+Y2xlYXJCdWZmZXJmdihidWZmZXIsIGRyYXdidWZmZXIsIHZhbHVlcy5kYXRh
KCksIHNyY09mZnNldCk7CisgICAgbV9jb250ZXh0LT5jbGVhckJ1ZmZlcmZ2KGJ1ZmZlciwgZHJh
d2J1ZmZlciwgZGF0YS52YWx1ZSgpKTsKICAgICAvLyBjbGVhckJ1ZmZlcml2IGFuZCBjbGVhckJ1
ZmZlcnVpdiB3aWxsIGN1cnJlbnRseSBnZW5lcmF0ZSBhbiBlcnJvcgogICAgIC8vIGlmIHRoZXkn
cmUgY2FsbGVkIGFnYWluc3QgdGhlIGRlZmF1bHQgYmFjayBidWZmZXIuIElmIHN1cHBvcnQgZm9y
CiAgICAgLy8gZXh0ZW5kZWQgY2FudmFzIGNvbG9yIHNwYWNlcyBpcyBhZGRlZCwgdGhpcyBjYWxs
IG1pZ2h0IG5lZWQgdG8gYmUKQEAgLTE5OTYsNyArMjAzNCw3IEBAIHZvaWQgV2ViR0wyUmVuZGVy
aW5nQ29udGV4dDo6YmluZFNhbXBsZXIoR0NHTHVpbnQgdW5pdCwgV2ViR0xTYW1wbGVyKiBzYW1w
bGVyKQogCiAgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSkKICAgICAgICAgcmV0dXJu
OwotICAgIAorCiAgICAgaWYgKHVuaXQgPj0gbV9ib3VuZFNhbXBsZXJzLnNpemUoKSkgewogICAg
ICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9WQUxVRSwg
ImJpbmRTYW1wbGVyIiwgImludmFsaWQgdGV4dHVyZSB1bml0Iik7CiAgICAgICAgIHJldHVybjsK
QEAgLTIxMDAsNyArMjEzOCw3IEBAIEdDR0xlbnVtIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmNs
aWVudFdhaXRTeW5jKFdlYkdMU3luYyYgc3luYywgR0NHTGJpdGZpZWxkIGZsCiAgICAgICAgIHN5
bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX09QRVJBVElPTiwgImNs
aWVudFdhaXRTeW5jIiwgInRpbWVvdXQgPiBNQVhfQ0xJRU5UX1dBSVRfVElNRU9VVF9XRUJHTCIp
OwogICAgICAgICByZXR1cm4gR3JhcGhpY3NDb250ZXh0R0w6OldBSVRfRkFJTEVEX1dFQkdMOwog
ICAgIH0KLSAgICAKKwogICAgIGlmIChmbGFncyAmJiBmbGFncyAhPSBHcmFwaGljc0NvbnRleHRH
TDo6U1lOQ19GTFVTSF9DT01NQU5EU19CSVQpIHsKICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3Io
R3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfVkFMVUUsICJjbGllbnRXYWl0U3luYyIsICJpbnZh
bGlkIGZsYWdzIik7CiAgICAgICAgIHJldHVybiBHcmFwaGljc0NvbnRleHRHTDo6V0FJVF9GQUlM
RURfV0VCR0w7CkBAIC0yMTYxLDkgKzIxOTksOSBAQCB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRl
eHQ6OmRlbGV0ZVRyYW5zZm9ybUZlZWRiYWNrKFdlYkdMVHJhbnNmb3JtRmVlZGJhY2sqIGZlZQog
CiAgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhZmVlZGJhY2tPYmplY3QgfHwg
ZmVlZGJhY2tPYmplY3QtPmlzRGVsZXRlZCgpIHx8ICF2YWxpZGF0ZVdlYkdMT2JqZWN0KCJkZWxl
dGVUcmFuc2Zvcm1GZWVkYmFjayIsIGZlZWRiYWNrT2JqZWN0KSkKICAgICAgICAgcmV0dXJuOwot
ICAgIAorCiAgICAgQVNTRVJUKGZlZWRiYWNrT2JqZWN0ICE9IG1fZGVmYXVsdFRyYW5zZm9ybUZl
ZWRiYWNrKTsKLSAgICAKKwogICAgIGlmIChmZWVkYmFja09iamVjdC0+aXNBY3RpdmUoKSkgewog
ICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9PUEVS
QVRJT04sICJkZWxldGVUcmFuc2Zvcm1GZWVkYmFjayIsICJhdHRlbXB0IHRvIGRlbGV0ZSBhbiBh
Y3RpdmUgdHJhbnNmb3JtIGZlZWRiYWNrIG9iamVjdCIpOwogICAgICAgICByZXR1cm47CkBAIC0y
MjMwLDcgKzIyNjgsNyBAQCB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmJlZ2luVHJhbnNm
b3JtRmVlZGJhY2soR0NHTGVudW0gcHJpbWl0aXZlTW9kZSkKIHsKICAgICBpZiAoaXNDb250ZXh0
TG9zdE9yUGVuZGluZygpKQogICAgICAgICByZXR1cm47Ci0gICAgCisKICAgICBpZiAoIVZhbGlk
YXRlVHJhbnNmb3JtRmVlZGJhY2tQcmltaXRpdmVNb2RlKHByaW1pdGl2ZU1vZGUpKSB7CiAgICAg
ICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX0VOVU0sICJi
ZWdpblRyYW5zZm9ybUZlZWRiYWNrIiwgImludmFsaWQgdHJhbnNmb3JtIGZlZWRiYWNrIHByaW1p
dGl2ZSBtb2RlIik7CiAgICAgICAgIHJldHVybjsKQEAgLTIyNzAsNyArMjMwOCw3IEBAIHZvaWQg
V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6ZW5kVHJhbnNmb3JtRmVlZGJhY2soKQogICAgICAgICBz
eW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9PUEVSQVRJT04sICJl
bmRUcmFuc2Zvcm1GZWVkYmFjayIsICJ0cmFuc2Zvcm0gZmVlZGJhY2sgaXMgbm90IGFjdGl2ZSIp
OwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIAorCiAgICAgbV9jb250ZXh0LT5lbmRUcmFu
c2Zvcm1GZWVkYmFjaygpOwogCiAgICAgbV9ib3VuZFRyYW5zZm9ybUZlZWRiYWNrLT5zZXRQYXVz
ZWQoZmFsc2UpOwpAQCAtMjI4MSw3ICsyMzE5LDcgQEAgdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250
ZXh0Ojp0cmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzKFdlYkdMUHJvZ3JhbSYgcHJvZ3JhbSwgY28K
IHsKICAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVdlYkdMUHJv
Z3JhbU9yU2hhZGVyKCJ0cmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzIiwgJnByb2dyYW0pKQogICAg
ICAgICByZXR1cm47Ci0gICAgCisKICAgICBzd2l0Y2ggKGJ1ZmZlck1vZGUpIHsKICAgICBjYXNl
IEdyYXBoaWNzQ29udGV4dEdMOjpTRVBBUkFURV9BVFRSSUJTOgogICAgICAgICBpZiAodmFyeWlu
Z3Muc2l6ZSgpID4gbV9tYXhUcmFuc2Zvcm1GZWVkYmFja1NlcGFyYXRlQXR0cmlicykgewpAQCAt
MjQ2OCw3ICsyNTA2LDcgQEAgV2ViR0xBbnkgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0QWN0
aXZlVW5pZm9ybXMoV2ViR0xQcm9ncmFtJiBwcm9ncmFtLCBjb25zdAogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAogICAgIFZlY3RvcjxHQ0dMaW50PiByZXN1bHQodW5pZm9ybUluZGljZXMuc2l6
ZSgpLCAwKTsKLSAgICAKKwogICAgIHN3aXRjaCAocG5hbWUpIHsKICAgICBjYXNlIEdyYXBoaWNz
Q29udGV4dEdMOjpVTklGT1JNX1RZUEU6CiAgICAgICAgIG1fY29udGV4dC0+Z2V0QWN0aXZlVW5p
Zm9ybXMocHJvZ3JhbS5vYmplY3QoKSwgdW5pZm9ybUluZGljZXMsIHBuYW1lLCByZXN1bHQpOwpA
QCAtMzM3MiwxMTAgKzM0MTAsMTQ0IEBAIGJvb2wgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dmFs
aWRhdGVDYXBhYmlsaXR5KGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgR0NHTGVuCiAgICAgfQog
fQogCi1ib29sIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnZhbGlkYXRlQ2xlYXJCdWZmZXIoY29u
c3QgY2hhciogZnVuY3Rpb25OYW1lLCBHQ0dMZW51bSBidWZmZXIsIHNpemVfdCBzaXplLCBHQ0dM
dWludCBzcmNPZmZzZXQpCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBUeXBlZEFycmF5
VHlwZT4KK09wdGlvbmFsPEdDR0xTcGFuPGNvbnN0IFQ+PiBXZWJHTDJSZW5kZXJpbmdDb250ZXh0
Ojp2YWxpZGF0ZUNsZWFyQnVmZmVyKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgR0NHTGVudW0g
YnVmZmVyLCBUeXBlZExpc3Q8VHlwZWRBcnJheVR5cGUsIFQ+JiB2YWx1ZXMsIEdDR0x1aW50IHNy
Y09mZnNldCkKIHsKLSAgICBDaGVja2VkPEdDR0xzaXplaSwgUmVjb3JkT3ZlcmZsb3c+IGNoZWNr
ZWRTaXplKHNpemUpOworICAgIENoZWNrZWQ8R0NHTHNpemVpLCBSZWNvcmRPdmVyZmxvdz4gY2hl
Y2tlZFNpemUodmFsdWVzLmxlbmd0aCgpKTsKICAgICBjaGVja2VkU2l6ZSAtPSBzcmNPZmZzZXQ7
CiAgICAgaWYgKGNoZWNrZWRTaXplLmhhc092ZXJmbG93ZWQoKSkgewogICAgICAgICBzeW50aGVz
aXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9WQUxVRSwgZnVuY3Rpb25OYW1l
LCAiaW52YWxpZCBhcnJheSBzaXplIC8gc3JjT2Zmc2V0Iik7Ci0gICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9CiAgICAgc3dpdGNoIChidWZmZXIpIHsKICAg
ICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT0xPUjoKICAgICAgICAgaWYgKGNoZWNrZWRTaXpl
LnVuc2FmZUdldCgpIDwgNCkgewogICAgICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhp
Y3NDb250ZXh0R0w6OklOVkFMSURfVkFMVUUsIGZ1bmN0aW9uTmFtZSwgImludmFsaWQgYXJyYXkg
c2l6ZSAvIHNyY09mZnNldCIpOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAg
ICAgcmV0dXJuIHsgfTsKICAgICAgICAgfQotICAgICAgICBicmVhazsKKyAgICAgICAgcmV0dXJu
IG1ha2VHQ0dMU3Bhbih2YWx1ZXMuZGF0YSgpICsgc3JjT2Zmc2V0LCA0KTsKICAgICBjYXNlIEdy
YXBoaWNzQ29udGV4dEdMOjpERVBUSDoKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpTVEVO
Q0lMOgogICAgICAgICBpZiAoY2hlY2tlZFNpemUudW5zYWZlR2V0KCkgPCAxKSB7CiAgICAgICAg
ICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9WQUxVRSwg
ZnVuY3Rpb25OYW1lLCAiaW52YWxpZCBhcnJheSBzaXplIC8gc3JjT2Zmc2V0Iik7Ci0gICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICByZXR1cm4geyB9OwogICAgICAgICB9Ci0g
ICAgICAgIGJyZWFrOworICAgICAgICByZXR1cm4gbWFrZUdDR0xTcGFuKHZhbHVlcy5kYXRhKCkg
KyBzcmNPZmZzZXQsIDEpOworCiAgICAgZGVmYXVsdDoKICAgICAgICAgc3ludGhlc2l6ZUdMRXJy
b3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfRU5VTSwgZnVuY3Rpb25OYW1lLCAiaW52YWxp
ZCBidWZmZXIiKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4geyB9Owog
ICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsKIH0KIAogdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0
Ojp1bmlmb3JtMWZ2KFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgRmxvYXQzMkxpc3Qg
ZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCiB7Ci0gICAgaWYg
KGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycygi
dW5pZm9ybTFmdiIsIGxvY2F0aW9uLCBkYXRhLCAxLCBzcmNPZmZzZXQsIHNyY0xlbmd0aCkpCisg
ICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSkKICAgICAgICAgcmV0dXJuOwotICAgIG1f
Y29udGV4dC0+dW5pZm9ybTFmdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgZGF0YS5kYXRhKCksIHNy
Y09mZnNldCwgc3JjTGVuZ3RoID8gc3JjTGVuZ3RoIDogKGRhdGEubGVuZ3RoKCkgLSBzcmNPZmZz
ZXQpKTsKKyAgICBhdXRvIHJlc3VsdCA9IHZhbGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMoInVuaWZv
cm0xZnYiLCBsb2NhdGlvbiwgZGF0YSwgMSwgc3JjT2Zmc2V0LCBzcmNMZW5ndGgpOworICAgIGlm
ICghcmVzdWx0KQorICAgICAgICByZXR1cm47CisgICAgbV9jb250ZXh0LT51bmlmb3JtMWZ2KGxv
Y2F0aW9uLT5sb2NhdGlvbigpLCByZXN1bHQudmFsdWUoKSk7CiB9CiAKIHZvaWQgV2ViR0wyUmVu
ZGVyaW5nQ29udGV4dDo6dW5pZm9ybTJmdihXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24s
IEZsb2F0MzJMaXN0IGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3Ro
KQogewotICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlVW5pZm9y
bVBhcmFtZXRlcnMoInVuaWZvcm0yZnYiLCBsb2NhdGlvbiwgZGF0YSwgMiwgc3JjT2Zmc2V0LCBz
cmNMZW5ndGgpKQorICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCiAgICAgICAgIHJl
dHVybjsKLSAgICBtX2NvbnRleHQtPnVuaWZvcm0yZnYobG9jYXRpb24tPmxvY2F0aW9uKCksIGRh
dGEuZGF0YSgpLCBzcmNPZmZzZXQsIChzcmNMZW5ndGggPyBzcmNMZW5ndGggOiBkYXRhLmxlbmd0
aCgpIC0gc3JjT2Zmc2V0KSAvIDIpOworICAgIGF1dG8gcmVzdWx0ID0gdmFsaWRhdGVVbmlmb3Jt
UGFyYW1ldGVycygidW5pZm9ybTJmdiIsIGxvY2F0aW9uLCBkYXRhLCAyLCBzcmNPZmZzZXQsIHNy
Y0xlbmd0aCk7CisgICAgaWYgKCFyZXN1bHQpCisgICAgICAgIHJldHVybjsKKyAgICBtX2NvbnRl
eHQtPnVuaWZvcm0yZnYobG9jYXRpb24tPmxvY2F0aW9uKCksIHJlc3VsdC52YWx1ZSgpKTsKIH0K
IAogdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtM2Z2KFdlYkdMVW5pZm9ybUxv
Y2F0aW9uKiBsb2NhdGlvbiwgRmxvYXQzMkxpc3QgZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBH
Q0dMdWludCBzcmNMZW5ndGgpCiB7Ci0gICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8
fCAhdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycygidW5pZm9ybTNmdiIsIGxvY2F0aW9uLCBkYXRh
LCAzLCBzcmNPZmZzZXQsIHNyY0xlbmd0aCkpCisgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRp
bmcoKSkKICAgICAgICAgcmV0dXJuOwotICAgIG1fY29udGV4dC0+dW5pZm9ybTNmdihsb2NhdGlv
bi0+bG9jYXRpb24oKSwgZGF0YS5kYXRhKCksIHNyY09mZnNldCwgKHNyY0xlbmd0aCA/IHNyY0xl
bmd0aCA6IGRhdGEubGVuZ3RoKCkgLSBzcmNPZmZzZXQpIC8gMyk7CisgICAgYXV0byByZXN1bHQg
PSB2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKCJ1bmlmb3JtM2Z2IiwgbG9jYXRpb24sIGRhdGEs
IDMsIHNyY09mZnNldCwgc3JjTGVuZ3RoKTsKKyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgcmV0
dXJuOworICAgIG1fY29udGV4dC0+dW5pZm9ybTNmdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgcmVz
dWx0LnZhbHVlKCkpOwogfQogCiB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm00
ZnYoV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBGbG9hdDMyTGlzdCBkYXRhLCBHQ0dM
dWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKIHsKLSAgICBpZiAoaXNDb250ZXh0
TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKCJ1bmlmb3JtNGZ2
IiwgbG9jYXRpb24sIGRhdGEsIDQsIHNyY09mZnNldCwgc3JjTGVuZ3RoKSkKKyAgICBpZiAoaXND
b250ZXh0TG9zdE9yUGVuZGluZygpKQorICAgICAgICByZXR1cm47CisgICAgYXV0byByZXN1bHQg
PSB2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKCJ1bmlmb3JtNGZ2IiwgbG9jYXRpb24sIGRhdGEs
IDQsIHNyY09mZnNldCwgc3JjTGVuZ3RoKTsKKyAgICBpZiAoIXJlc3VsdCkKICAgICAgICAgcmV0
dXJuOwotICAgIG1fY29udGV4dC0+dW5pZm9ybTRmdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgZGF0
YS5kYXRhKCksIHNyY09mZnNldCwgKHNyY0xlbmd0aCA/IHNyY0xlbmd0aCA6IGRhdGEubGVuZ3Ro
KCkgLSBzcmNPZmZzZXQpIC8gNCk7CisgICAgbV9jb250ZXh0LT51bmlmb3JtNGZ2KGxvY2F0aW9u
LT5sb2NhdGlvbigpLCByZXN1bHQudmFsdWUoKSk7CiB9CiAKIHZvaWQgV2ViR0wyUmVuZGVyaW5n
Q29udGV4dDo6dW5pZm9ybTFpdihXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEludDMy
TGlzdCBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKIHsKLSAg
ICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0
ZXJzKCJ1bmlmb3JtMWl2IiwgbG9jYXRpb24sIGRhdGEsIDEsIHNyY09mZnNldCwgc3JjTGVuZ3Ro
KSkKKyAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpKQorICAgICAgICByZXR1cm47Cisg
ICAgYXV0byByZXN1bHQgPSB2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKCJ1bmlmb3JtMWl2Iiwg
bG9jYXRpb24sIGRhdGEsIDEsIHNyY09mZnNldCwgc3JjTGVuZ3RoKTsKKyAgICBpZiAoIXJlc3Vs
dCkKICAgICAgICAgcmV0dXJuOwotICAgIG1fY29udGV4dC0+dW5pZm9ybTFpdihsb2NhdGlvbi0+
bG9jYXRpb24oKSwgZGF0YS5kYXRhKCksIHNyY09mZnNldCwgc3JjTGVuZ3RoID8gc3JjTGVuZ3Ro
IDogKGRhdGEubGVuZ3RoKCkgLSBzcmNPZmZzZXQpKTsKKyAgICBtX2NvbnRleHQtPnVuaWZvcm0x
aXYobG9jYXRpb24tPmxvY2F0aW9uKCksIHJlc3VsdC52YWx1ZSgpKTsKIH0KIAogdm9pZCBXZWJH
TDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtMml2KFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2Nh
dGlvbiwgSW50MzJMaXN0IGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVu
Z3RoKQogewotICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlVW5p
Zm9ybVBhcmFtZXRlcnMoInVuaWZvcm0yaXYiLCBsb2NhdGlvbiwgZGF0YSwgMiwgc3JjT2Zmc2V0
LCBzcmNMZW5ndGgpKQorICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCisgICAgICAg
IHJldHVybjsKKyAgICBhdXRvIHJlc3VsdCA9IHZhbGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMoInVu
aWZvcm0yaXYiLCBsb2NhdGlvbiwgZGF0YSwgMiwgc3JjT2Zmc2V0LCBzcmNMZW5ndGgpOworICAg
IGlmICghcmVzdWx0KQogICAgICAgICByZXR1cm47Ci0gICAgbV9jb250ZXh0LT51bmlmb3JtMml2
KGxvY2F0aW9uLT5sb2NhdGlvbigpLCBkYXRhLmRhdGEoKSwgc3JjT2Zmc2V0LCAoc3JjTGVuZ3Ro
ID8gc3JjTGVuZ3RoIDogZGF0YS5sZW5ndGgoKSAtIHNyY09mZnNldCkgLyAyKTsKKyAgICBtX2Nv
bnRleHQtPnVuaWZvcm0yaXYobG9jYXRpb24tPmxvY2F0aW9uKCksIHJlc3VsdC52YWx1ZSgpKTsK
IH0KIAogdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtM2l2KFdlYkdMVW5pZm9y
bUxvY2F0aW9uKiBsb2NhdGlvbiwgSW50MzJMaXN0IGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwg
R0NHTHVpbnQgc3JjTGVuZ3RoKQogewotICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkg
fHwgIXZhbGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMoInVuaWZvcm0zaXYiLCBsb2NhdGlvbiwgZGF0
YSwgMywgc3JjT2Zmc2V0LCBzcmNMZW5ndGgpKQorICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5k
aW5nKCkpCisgICAgICAgIHJldHVybjsKKyAgICBhdXRvIHJlc3VsdCA9IHZhbGlkYXRlVW5pZm9y
bVBhcmFtZXRlcnMoInVuaWZvcm0zaXYiLCBsb2NhdGlvbiwgZGF0YSwgMywgc3JjT2Zmc2V0LCBz
cmNMZW5ndGgpOworICAgIGlmICghcmVzdWx0KQogICAgICAgICByZXR1cm47Ci0gICAgbV9jb250
ZXh0LT51bmlmb3JtM2l2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCBkYXRhLmRhdGEoKSwgc3JjT2Zm
c2V0LCAoc3JjTGVuZ3RoID8gc3JjTGVuZ3RoIDogZGF0YS5sZW5ndGgoKSAtIHNyY09mZnNldCkg
LyAzKTsKKyAgICBtX2NvbnRleHQtPnVuaWZvcm0zaXYobG9jYXRpb24tPmxvY2F0aW9uKCksIHJl
c3VsdC52YWx1ZSgpKTsKIH0KIAogdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3Jt
NGl2KFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgSW50MzJMaXN0IGRhdGEsIEdDR0x1
aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQogewotICAgIGlmIChpc0NvbnRleHRM
b3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMoInVuaWZvcm00aXYi
LCBsb2NhdGlvbiwgZGF0YSwgNCwgc3JjT2Zmc2V0LCBzcmNMZW5ndGgpKQorICAgIGlmIChpc0Nv
bnRleHRMb3N0T3JQZW5kaW5nKCkpCisgICAgICAgIHJldHVybjsKKyAgICBhdXRvIHJlc3VsdCA9
IHZhbGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMoInVuaWZvcm00aXYiLCBsb2NhdGlvbiwgZGF0YSwg
NCwgc3JjT2Zmc2V0LCBzcmNMZW5ndGgpOworICAgIGlmICghcmVzdWx0KQogICAgICAgICByZXR1
cm47Ci0gICAgbV9jb250ZXh0LT51bmlmb3JtNGl2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCBkYXRh
LmRhdGEoKSwgc3JjT2Zmc2V0LCAoc3JjTGVuZ3RoID8gc3JjTGVuZ3RoIDogZGF0YS5sZW5ndGgo
KSAtIHNyY09mZnNldCkgLyA0KTsKKyAgICBtX2NvbnRleHQtPnVuaWZvcm00aXYobG9jYXRpb24t
PmxvY2F0aW9uKCksIHJlc3VsdC52YWx1ZSgpKTsKIH0KIAogdm9pZCBXZWJHTDJSZW5kZXJpbmdD
b250ZXh0Ojp1bmlmb3JtTWF0cml4MmZ2KFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwg
R0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBGbG9hdDMyTGlzdCBkYXRhLCBHQ0dMdWludCBzcmNPZmZz
ZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKIHsKLSAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGlu
ZygpIHx8ICF2YWxpZGF0ZVVuaWZvcm1NYXRyaXhQYXJhbWV0ZXJzKCJ1bmlmb3JtTWF0cml4MmZ2
IiwgbG9jYXRpb24sIHRyYW5zcG9zZSwgZGF0YSwgMioyLCBzcmNPZmZzZXQsIHNyY0xlbmd0aCkp
CisgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSkKKyAgICAgICAgcmV0dXJuOworICAg
IGF1dG8gcmVzdWx0ID0gdmFsaWRhdGVVbmlmb3JtTWF0cml4UGFyYW1ldGVycygidW5pZm9ybU1h
dHJpeDJmdiIsIGxvY2F0aW9uLCB0cmFuc3Bvc2UsIGRhdGEsIDIqMiwgc3JjT2Zmc2V0LCBzcmNM
ZW5ndGgpOworICAgIGlmICghcmVzdWx0KQogICAgICAgICByZXR1cm47Ci0gICAgbV9jb250ZXh0
LT51bmlmb3JtTWF0cml4MmZ2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCB0cmFuc3Bvc2UsIGRhdGEu
ZGF0YSgpLCBzcmNPZmZzZXQsIChzcmNMZW5ndGggPyBzcmNMZW5ndGggOiBkYXRhLmxlbmd0aCgp
IC0gc3JjT2Zmc2V0KSAvICgyKjIpKTsKKyAgICBtX2NvbnRleHQtPnVuaWZvcm1NYXRyaXgyZnYo
bG9jYXRpb24tPmxvY2F0aW9uKCksIHRyYW5zcG9zZSwgcmVzdWx0LnZhbHVlKCkpOwogfQogCiB2
b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm1NYXRyaXgzZnYoV2ViR0xVbmlmb3Jt
TG9jYXRpb24qIGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEZsb2F0MzJMaXN0IGRh
dGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQogewotICAgIGlmIChp
c0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlVW5pZm9ybU1hdHJpeFBhcmFtZXRl
cnMoInVuaWZvcm1NYXRyaXgzZnYiLCBsb2NhdGlvbiwgdHJhbnNwb3NlLCBkYXRhLCAzKjMsIHNy
Y09mZnNldCwgc3JjTGVuZ3RoKSkKKyAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpKQor
ICAgICAgICByZXR1cm47CisgICAgYXV0byByZXN1bHQgPSB2YWxpZGF0ZVVuaWZvcm1NYXRyaXhQ
YXJhbWV0ZXJzKCJ1bmlmb3JtTWF0cml4M2Z2IiwgbG9jYXRpb24sIHRyYW5zcG9zZSwgZGF0YSwg
MyozLCBzcmNPZmZzZXQsIHNyY0xlbmd0aCk7CisgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgIHJl
dHVybjsKLSAgICBtX2NvbnRleHQtPnVuaWZvcm1NYXRyaXgzZnYobG9jYXRpb24tPmxvY2F0aW9u
KCksIHRyYW5zcG9zZSwgZGF0YS5kYXRhKCksIHNyY09mZnNldCwgKHNyY0xlbmd0aCA/IHNyY0xl
bmd0aCA6IGRhdGEubGVuZ3RoKCkgLSBzcmNPZmZzZXQpIC8gKDMqMykpOworICAgIG1fY29udGV4
dC0+dW5pZm9ybU1hdHJpeDNmdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgdHJhbnNwb3NlLCByZXN1
bHQudmFsdWUoKSk7CiB9CiAKIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybU1h
dHJpeDRmdihXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5z
cG9zZSwgRmxvYXQzMkxpc3QgZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNM
ZW5ndGgpCiB7Ci0gICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVV
bmlmb3JtTWF0cml4UGFyYW1ldGVycygidW5pZm9ybU1hdHJpeDRmdiIsIGxvY2F0aW9uLCB0cmFu
c3Bvc2UsIGRhdGEsIDQqNCwgc3JjT2Zmc2V0LCBzcmNMZW5ndGgpKQorICAgIGlmIChpc0NvbnRl
eHRMb3N0T3JQZW5kaW5nKCkpCisgICAgICAgIHJldHVybjsKKyAgICBhdXRvIHJlc3VsdCA9IHZh
bGlkYXRlVW5pZm9ybU1hdHJpeFBhcmFtZXRlcnMoInVuaWZvcm1NYXRyaXg0ZnYiLCBsb2NhdGlv
biwgdHJhbnNwb3NlLCBkYXRhLCA0KjQsIHNyY09mZnNldCwgc3JjTGVuZ3RoKTsKKyAgICBpZiAo
IXJlc3VsdCkKICAgICAgICAgcmV0dXJuOwotICAgIG1fY29udGV4dC0+dW5pZm9ybU1hdHJpeDRm
dihsb2NhdGlvbi0+bG9jYXRpb24oKSwgdHJhbnNwb3NlLCBkYXRhLmRhdGEoKSwgc3JjT2Zmc2V0
LCAoc3JjTGVuZ3RoID8gc3JjTGVuZ3RoIDogZGF0YS5sZW5ndGgoKSAtIHNyY09mZnNldCkgLyAo
NCo0KSk7CisgICAgbV9jb250ZXh0LT51bmlmb3JtTWF0cml4NGZ2KGxvY2F0aW9uLT5sb2NhdGlv
bigpLCB0cmFuc3Bvc2UsIHJlc3VsdC52YWx1ZSgpKTsKIH0KIAogdm9pZCBXZWJHTDJSZW5kZXJp
bmdDb250ZXh0OjpyZWFkUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lk
dGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgQXJy
YXlCdWZmZXJWaWV3JiBwaXhlbHMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmgKaW5kZXggYjhiMDM2ZTQ0NzZhNGYxNWQ0ZTUwNjc1
OGM1NzU5MzVlMGEwNjI0Zi4uNWY0N2U2MWYwYTQ0NDRhMjg4YzFiNDYwZmI0ZTBmNzM2Njc0NjY3
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5n
Q29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmlu
Z0NvbnRleHQuaApAQCAtMjkyLDcgKzI5Miw4IEBAIHByaXZhdGU6CiAgICAgYm9vbCB2YWxpZGF0
ZUluZGV4QXJyYXlDb25zZXJ2YXRpdmUoR0NHTGVudW0gdHlwZSwgdW5zaWduZWQmIG51bUVsZW1l
bnRzUmVxdWlyZWQpIGZpbmFsOwogICAgIGJvb2wgdmFsaWRhdGVCbGVuZEVxdWF0aW9uKGNvbnN0
IGNoYXIqIGZ1bmN0aW9uTmFtZSwgR0NHTGVudW0gbW9kZSkgZmluYWw7CiAgICAgYm9vbCB2YWxp
ZGF0ZUNhcGFiaWxpdHkoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBHQ0dMZW51bSBjYXApIGZp
bmFsOwotICAgIGJvb2wgdmFsaWRhdGVDbGVhckJ1ZmZlcihjb25zdCBjaGFyKiBmdW5jdGlvbk5h
bWUsIEdDR0xlbnVtIGJ1ZmZlciwgc2l6ZV90LCBHQ0dMdWludCBzcmNPZmZzZXQpOworICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFR5cGVkQXJyYXlUeXBlPgorICAgIE9wdGlvbmFs
PEdDR0xTcGFuPGNvbnN0IFQ+PiB2YWxpZGF0ZUNsZWFyQnVmZmVyKGNvbnN0IGNoYXIqIGZ1bmN0
aW9uTmFtZSwgR0NHTGVudW0gYnVmZmVyLCBUeXBlZExpc3Q8VHlwZWRBcnJheVR5cGUsIFQ+JiB2
YWx1ZXMsIEdDR0x1aW50IHNyY09mZnNldCk7CiAgICAgYm9vbCB2YWxpZGF0ZUZyYW1lYnVmZmVy
VGFyZ2V0KEdDR0xlbnVtIHRhcmdldCkgZmluYWw7CiAgICAgV2ViR0xGcmFtZWJ1ZmZlciogZ2V0
RnJhbWVidWZmZXJCaW5kaW5nKEdDR0xlbnVtIHRhcmdldCkgZmluYWw7CiAgICAgV2ViR0xGcmFt
ZWJ1ZmZlciogZ2V0UmVhZEZyYW1lYnVmZmVyQmluZGluZygpIGZpbmFsOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xEcmF3QnVmZmVycy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTERyYXdCdWZmZXJzLmNwcAppbmRleCA0OTQxNTZlMWU2
NWI2MDI5MTkwZGI3YzFjMDI2YWRmODAzZGRhOGQyLi5lNWNlYjRiZGRjYzRjMDUxZGI4YjlhYTlj
ZTAyMDgxYmYyMjMwNTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTERyYXdCdWZmZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TERyYXdCdWZmZXJzLmNwcApAQCAtNzQsOCArNzQsOCBAQCB2b2lkIFdlYkdMRHJhd0J1ZmZlcnM6
OmRyYXdCdWZmZXJzV0VCR0woY29uc3QgVmVjdG9yPEdDR0xlbnVtPiYgYnVmZmVycykKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICAvLyBCZWNhdXNlIHRoZSBiYWNrYnVm
ZmVyIGlzIHNpbXVsYXRlZCBvbiBhbGwgY3VycmVudCBXZWJLaXQgcG9ydHMsIHdlIG5lZWQgdG8g
Y2hhbmdlIEJBQ0sgdG8gQ09MT1JfQVRUQUNITUVOVDAuCi0gICAgICAgIEdDR0xlbnVtIHZhbHVl
ID0gKGJ1ZnNbMF0gPT0gR3JhcGhpY3NDb250ZXh0R0w6OkJBQ0spID8gR3JhcGhpY3NDb250ZXh0
R0w6OkNPTE9SX0FUVEFDSE1FTlQwIDogR3JhcGhpY3NDb250ZXh0R0w6Ok5PTkU7Ci0gICAgICAg
IG1fY29udGV4dC0+Z3JhcGhpY3NDb250ZXh0R0woKS0+Z2V0RXh0ZW5zaW9ucygpLmRyYXdCdWZm
ZXJzRVhUKDEsICZ2YWx1ZSk7CisgICAgICAgIEdDR0xlbnVtIHZhbHVlWzFdIHsgKGJ1ZnNbMF0g
PT0gR3JhcGhpY3NDb250ZXh0R0w6OkJBQ0spID8gR3JhcGhpY3NDb250ZXh0R0w6OkNPTE9SX0FU
VEFDSE1FTlQwIDogR3JhcGhpY3NDb250ZXh0R0w6Ok5PTkUgfTsKKyAgICAgICAgbV9jb250ZXh0
LT5ncmFwaGljc0NvbnRleHRHTCgpLT5nZXRFeHRlbnNpb25zKCkuZHJhd0J1ZmZlcnNFWFQodmFs
dWUpOwogICAgICAgICBtX2NvbnRleHQtPnNldEJhY2tEcmF3QnVmZmVyKGJ1ZnNbMF0pOwogICAg
IH0gZWxzZSB7CiAgICAgICAgIGlmIChuID4gbV9jb250ZXh0LT5nZXRNYXhEcmF3QnVmZmVycygp
KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEZyYW1lYnVm
ZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRnJhbWVidWZmZXIuY3Bw
CmluZGV4IDM2NThlZThlYWFmN2YwZGJiODg2M2NlZDUwMjQyNWY0ZmI0ZTIzYTUuLmIxOThiMzY2
YjExZjE1YjFiODAzYmQwNjNjNzZjNGYyY2Q4ZDExNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMRnJhbWVidWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMRnJhbWVidWZmZXIuY3BwCkBAIC03MDIsMTMgKzcwMiwxMCBAQCB2
b2lkIFdlYkdMRnJhbWVidWZmZXI6OmRyYXdCdWZmZXJzSWZOZWNlc3NhcnkoYm9vbCBmb3JjZSkK
ICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBpZiAocmVzZXQpIHsKLSAgICAgICAg
ICAgIGlmIChjb250ZXh0KCktPmlzV2ViR0wyKCkpIHsKLSAgICAgICAgICAgICAgICBjb250ZXh0
KCktPmdyYXBoaWNzQ29udGV4dEdMKCktPmRyYXdCdWZmZXJzKAotICAgICAgICAgICAgICAgICAg
ICBtX2ZpbHRlcmVkRHJhd0J1ZmZlcnMuc2l6ZSgpLCBtX2ZpbHRlcmVkRHJhd0J1ZmZlcnMuZGF0
YSgpKTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgY29udGV4dCgpLT5n
cmFwaGljc0NvbnRleHRHTCgpLT5nZXRFeHRlbnNpb25zKCkuZHJhd0J1ZmZlcnNFWFQoCi0gICAg
ICAgICAgICAgICAgICAgIG1fZmlsdGVyZWREcmF3QnVmZmVycy5zaXplKCksIG1fZmlsdGVyZWRE
cmF3QnVmZmVycy5kYXRhKCkpOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGNvbnRl
eHQoKS0+aXNXZWJHTDIoKSkKKyAgICAgICAgICAgICAgICBjb250ZXh0KCktPmdyYXBoaWNzQ29u
dGV4dEdMKCktPmRyYXdCdWZmZXJzKG1fZmlsdGVyZWREcmF3QnVmZmVycyk7CisgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgY29udGV4dCgpLT5ncmFwaGljc0NvbnRleHRHTCgpLT5n
ZXRFeHRlbnNpb25zKCkuZHJhd0J1ZmZlcnNFWFQobV9maWx0ZXJlZERyYXdCdWZmZXJzKTsKICAg
ICAgICAgfQogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKaW5kZXggMTg1ZThjNjJlNmZiZTMxZjMx
Mzg4YzBjOWY4MGQ4MWNlZTI0YTNiMS4uZWI4ZmRjMmU3OWY2NWM1MzljZmM2ZDdlNWQzMGRkZjAy
Yjk4ZThlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKQEAgLTE2MDMsNyArMTYwMyw3IEBAIHZvaWQgV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6YnVmZmVyRGF0YShHQ0dMZW51bSB0YXJnZXQsIE9wdGlv
bmFsPEJ1ZmZlckRhdGFTCiAgICAgICAgIH0KIAogICAgICAgICBtX2NvbnRleHQtPm1vdmVFcnJv
cnNUb1N5bnRoZXRpY0Vycm9yTGlzdCgpOwotICAgICAgICBtX2NvbnRleHQtPmJ1ZmZlckRhdGEo
dGFyZ2V0LCBkYXRhLT5ieXRlTGVuZ3RoKCksIGRhdGEtPmRhdGEoKSwgdXNhZ2UpOworICAgICAg
ICBtX2NvbnRleHQtPmJ1ZmZlckRhdGEodGFyZ2V0LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4o
ZGF0YS0+ZGF0YSgpLCBkYXRhLT5ieXRlTGVuZ3RoKCkpLCB1c2FnZSk7CiAgICAgICAgIGlmICht
X2NvbnRleHQtPm1vdmVFcnJvcnNUb1N5bnRoZXRpY0Vycm9yTGlzdCgpKSB7CiAgICAgICAgICAg
ICAvLyBUaGUgYnVmZmVyRGF0YSBmdW5jdGlvbiBmYWlsZWQuIFRlbGwgdGhlIGJ1ZmZlciBpdCBk
b2Vzbid0IGhhdmUgdGhlIGRhdGEgaXQgdGhpbmtzIGl0IGRvZXMuCiAgICAgICAgICAgICBidWZm
ZXItPmRpc2Fzc29jaWF0ZUJ1ZmZlckRhdGEoKTsKQEAgLTE2MzAsNyArMTYzMCw3IEBAIHZvaWQg
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6YnVmZmVyU3ViRGF0YShHQ0dMZW51bSB0YXJnZXQs
IGxvbmcgbG9uZyBvZmZzZXQsCiAgICAgICAgIH0KIAogICAgICAgICBtX2NvbnRleHQtPm1vdmVF
cnJvcnNUb1N5bnRoZXRpY0Vycm9yTGlzdCgpOwotICAgICAgICBtX2NvbnRleHQtPmJ1ZmZlclN1
YkRhdGEodGFyZ2V0LCBzdGF0aWNfY2FzdDxHQ0dMaW50cHRyPihvZmZzZXQpLCBkYXRhLT5ieXRl
TGVuZ3RoKCksIGRhdGEtPmRhdGEoKSk7CisgICAgICAgIG1fY29udGV4dC0+YnVmZmVyU3ViRGF0
YSh0YXJnZXQsIHN0YXRpY19jYXN0PEdDR0xpbnRwdHI+KG9mZnNldCksIEdDR0xTcGFuPGNvbnN0
IEdDR0x2b2lkPihkYXRhLT5kYXRhKCksIGRhdGEtPmJ5dGVMZW5ndGgoKSkpOwogICAgICAgICBp
ZiAobV9jb250ZXh0LT5tb3ZlRXJyb3JzVG9TeW50aGV0aWNFcnJvckxpc3QoKSkgewogICAgICAg
ICAgICAgLy8gVGhlIGJ1ZmZlclN1YkRhdGEgZnVuY3Rpb24gZmFpbGVkLiBUZWxsIHRoZSBidWZm
ZXIgaXQgZG9lc24ndCBoYXZlIHRoZSBkYXRhIGl0IHRoaW5rcyBpdCBkb2VzLgogICAgICAgICAg
ICAgYnVmZmVyLT5kaXNhc3NvY2lhdGVCdWZmZXJEYXRhKCk7CkBAIC0xNzU3LDcgKzE3NTcsNyBA
QCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmNvbXByZXNzZWRUZXhJbWFnZTJEKEdD
R0xlbnVtIHRhcmdldCwgR0NHTGludCBsZQogICAgIGlmICghdmFsaWRhdGVUZXh0dXJlMkRCaW5k
aW5nKCJjb21wcmVzc2VkVGV4SW1hZ2UyRCIsIHRhcmdldCkpCiAgICAgICAgIHJldHVybjsKICAg
ICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5jb21wcmVzc2VkVGV4SW1hZ2UyRFJvYnVzdEFO
R0xFKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LAotICAgICAg
ICBib3JkZXIsIGRhdGEuYnl0ZUxlbmd0aCgpLCBkYXRhLmJ5dGVMZW5ndGgoKSwgZGF0YS5iYXNl
QWRkcmVzcygpKTsKKyAgICAgICAgYm9yZGVyLCBkYXRhLmJ5dGVMZW5ndGgoKSwgbWFrZUdDR0xT
cGFuKGRhdGEuYmFzZUFkZHJlc3MoKSwgZGF0YS5ieXRlTGVuZ3RoKCkpKTsKICNlbHNlCiAgICAg
aWYgKCF2YWxpZGF0ZVRleEZ1bmNMZXZlbCgiY29tcHJlc3NlZFRleEltYWdlMkQiLCB0YXJnZXQs
IGxldmVsKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTgwMSw3ICsxODAxLDcgQEAgdm9pZCBXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlOjpjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0
YXJnZXQsIEdDR0xpbnQKICNpZiBVU0UoQU5HTEUpCiAgICAgaWYgKCF2YWxpZGF0ZVRleHR1cmUy
REJpbmRpbmcoImNvbXByZXNzZWRUZXhTdWJJbWFnZTJEIiwgdGFyZ2V0KSkKICAgICAgICAgcmV0
dXJuOwotICAgIGdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5jb21wcmVzc2Vk
VGV4U3ViSW1hZ2UyRFJvYnVzdEFOR0xFKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQs
IHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgZGF0YS5ieXRlTGVuZ3RoKCksIGRhdGEuYnl0ZUxlbmd0
aCgpLCBkYXRhLmJhc2VBZGRyZXNzKCkpOworICAgIGdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4
dGVuc2lvbnMoKS5jb21wcmVzc2VkVGV4U3ViSW1hZ2UyRFJvYnVzdEFOR0xFKHRhcmdldCwgbGV2
ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgZGF0YS5ieXRlTGVu
Z3RoKCksIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPihkYXRhLmJhc2VBZGRyZXNzKCksIGRhdGEu
Ynl0ZUxlbmd0aCgpKSk7CiAjZWxzZQogICAgIGlmICghdmFsaWRhdGVUZXhGdW5jTGV2ZWwoImNv
bXByZXNzZWRUZXhTdWJJbWFnZTJEIiwgdGFyZ2V0LCBsZXZlbCkpCiAgICAgICAgIHJldHVybjsK
QEAgLTE5MDAsOCArMTkwMCw4IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Y29w
eVRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsCiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgVW5pcXVlQXJyYXk8dW5zaWduZWQgY2hhcj4g
emVybzsKKyAgICAgICAgdW5zaWduZWQgc2l6ZSA9IDA7CiAgICAgICAgIGlmICh3aWR0aCAmJiBo
ZWlnaHQpIHsKLSAgICAgICAgICAgIHVuc2lnbmVkIHNpemU7CiAgICAgICAgICAgICBHQ0dMZW51
bSBlcnJvciA9IG1fY29udGV4dC0+Y29tcHV0ZUltYWdlU2l6ZUluQnl0ZXMoZm9ybWF0LCB0eXBl
LCB3aWR0aCwgaGVpZ2h0LCAxLCBnZXRVbnBhY2tQaXhlbFN0b3JlUGFyYW1zKFRleEltYWdlRGlt
ZW5zaW9uOjpUZXgyRCksICZzaXplLCBudWxscHRyLCBudWxscHRyKTsKICAgICAgICAgICAgIGlm
IChlcnJvciAhPSBHcmFwaGljc0NvbnRleHRHTDo6Tk9fRVJST1IpIHsKICAgICAgICAgICAgICAg
ICBzeW50aGVzaXplR0xFcnJvcihlcnJvciwgImNvcHlUZXhTdWJJbWFnZTJEIiwgImJhZCBkaW1l
bnNpb25zIik7CkBAIC0xOTE0LDcgKzE5MTQsNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2U6OmNvcHlUZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbAog
ICAgICAgICAgICAgfQogICAgICAgICAgICAgbWVtc2V0KHplcm8uZ2V0KCksIDAsIHNpemUpOwog
ICAgICAgICB9Ci0gICAgICAgIG1fY29udGV4dC0+dGV4U3ViSW1hZ2UyRCh0YXJnZXQsIGxldmVs
LCB4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIHplcm8uZ2V0
KCkpOworICAgICAgICBtX2NvbnRleHQtPnRleFN1YkltYWdlMkQodGFyZ2V0LCBsZXZlbCwgeG9m
ZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBtYWtlR0NHTFNwYW4o
emVyby5nZXQoKSwgc2l6ZSkpOwogICAgICAgICBpZiAoY2xpcHBlZFdpZHRoID4gMCAmJiBjbGlw
cGVkSGVpZ2h0ID4gMCkKICAgICAgICAgICAgIG1fY29udGV4dC0+Y29weVRleFN1YkltYWdlMkQo
dGFyZ2V0LCBsZXZlbCwgeG9mZnNldCArIGNsaXBwZWRYIC0geCwgeW9mZnNldCArIGNsaXBwZWRZ
IC0geSwgY2xpcHBlZFgsIGNsaXBwZWRZLCBjbGlwcGVkV2lkdGgsIGNsaXBwZWRIZWlnaHQpOwog
ICAgIH0gZWxzZQpAQCAtNDcwOSwxMiArNDcwOSwxMiBAQCBFeGNlcHRpb25Pcjx2b2lkPiBXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlOjp0ZXhJbWFnZVNvdXJjZUhlbHBlcihUZXhJbWFnZUZ1bmN0
aQogICAgICAgICAgICAgaWYgKGZ1bmN0aW9uSUQgPT0gVGV4SW1hZ2VGdW5jdGlvbklEOjpUZXhJ
bWFnZTNEKSB7CiAgICAgICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkudGV4
SW1hZ2UzRFJvYnVzdEFOR0xFKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LAogICAgICAg
ICAgICAgICAgICAgICBhZGp1c3RlZFNvdXJjZUltYWdlUmVjdC53aWR0aCgpLCBhZGp1c3RlZFNv
dXJjZUltYWdlUmVjdC5oZWlnaHQoKSwgZGVwdGgsIDAsCi0gICAgICAgICAgICAgICAgICAgIGZv
cm1hdCwgdHlwZSwgYnl0ZUxlbmd0aCwgbmVlZENvbnZlcnNpb24gPyBkYXRhLmRhdGEoKSA6IHBp
eGVscy0+ZGF0YSgpLT5kYXRhKCkpOworICAgICAgICAgICAgICAgICAgICBmb3JtYXQsIHR5cGUs
IG1ha2VHQ0dMU3BhbihuZWVkQ29udmVyc2lvbiA/IGRhdGEuZGF0YSgpIDogcGl4ZWxzLT5kYXRh
KCktPmRhdGEoKSwgYnl0ZUxlbmd0aCkpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAg
ICAgICAgICBBU1NFUlQoZnVuY3Rpb25JRCA9PSBUZXhJbWFnZUZ1bmN0aW9uSUQ6OlRleFN1Yklt
YWdlM0QpOwogICAgICAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnRleFN1
YkltYWdlM0RSb2J1c3RBTkdMRSh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB6b2Zm
c2V0LAogICAgICAgICAgICAgICAgICAgICBhZGp1c3RlZFNvdXJjZUltYWdlUmVjdC53aWR0aCgp
LCBhZGp1c3RlZFNvdXJjZUltYWdlUmVjdC5oZWlnaHQoKSwgZGVwdGgsCi0gICAgICAgICAgICAg
ICAgICAgIGZvcm1hdCwgdHlwZSwgYnl0ZUxlbmd0aCwgbmVlZENvbnZlcnNpb24gPyBkYXRhLmRh
dGEoKSA6IHBpeGVscy0+ZGF0YSgpLT5kYXRhKCkpOworICAgICAgICAgICAgICAgICAgICBmb3Jt
YXQsIHR5cGUsIG1ha2VHQ0dMU3BhbihuZWVkQ29udmVyc2lvbiA/IGRhdGEuZGF0YSgpIDogcGl4
ZWxzLT5kYXRhKCktPmRhdGEoKSwgYnl0ZUxlbmd0aCkpOwogICAgICAgICAgICAgfQogI2Vsc2UK
ICAgICAgICAgICAgIC8vIFdlYkdMIDIuMCBpcyBvbmx5IHN1cHBvcnRlZCB3aXRoIHRoZSBBTkdM
RSBiYWNrZW5kLgpAQCAtNDg5NCwxMSArNDg5NCwxMSBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OnRleEltYWdlQXJyYXlCdWZmZXJWaWV3SGVscGVyKFRleEltYWdlRnVuY3Rpb25J
RAogICAgIH0KICNpZiBVU0UoQU5HTEUpCiAgICAgaWYgKGZ1bmN0aW9uSUQgPT0gVGV4SW1hZ2VG
dW5jdGlvbklEOjpUZXhJbWFnZTNEKSB7Ci0gICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9u
cygpLnRleEltYWdlM0RSb2J1c3RBTkdMRSh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwg
d2lkdGgsIGhlaWdodCwgZGVwdGgsIGJvcmRlciwgZm9ybWF0LCB0eXBlLCBieXRlTGVuZ3RoLCBk
YXRhKTsKKyAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkudGV4SW1hZ2UzRFJvYnVz
dEFOR0xFKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0
aCwgYm9yZGVyLCBmb3JtYXQsIHR5cGUsIG1ha2VHQ0dMU3BhbihkYXRhLCBieXRlTGVuZ3RoKSk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgaWYgKGZ1bmN0aW9uSUQgPT0gVGV4SW1hZ2VG
dW5jdGlvbklEOjpUZXhTdWJJbWFnZTNEKSB7Ci0gICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5z
aW9ucygpLnRleFN1YkltYWdlM0RSb2J1c3RBTkdMRSh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5
b2Zmc2V0LCB6b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgZm9ybWF0LCB0eXBlLCBieXRl
TGVuZ3RoLCBkYXRhKTsKKyAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkudGV4U3Vi
SW1hZ2UzRFJvYnVzdEFOR0xFKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHpvZmZz
ZXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBmb3JtYXQsIHR5cGUsIG1ha2VHQ0dMU3BhbihkYXRh
LCBieXRlTGVuZ3RoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAjZW5kaWYgLy8gVVNFKEFO
R0xFKQpAQCAtNDk3NSwxMiArNDk3NSwxMiBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U6OnRleEltYWdlSW1wbChUZXhJbWFnZUZ1bmN0aW9uSUQgZnVuY3Rpb25JRCwgR0NHTAogICAg
ICAgICBpZiAoZnVuY3Rpb25JRCA9PSBUZXhJbWFnZUZ1bmN0aW9uSUQ6OlRleEltYWdlM0QpIHsK
ICAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnRleEltYWdlM0RSb2J1c3RB
TkdMRSh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwKICAgICAgICAgICAgICAgICBhZGp1
c3RlZFNvdXJjZUltYWdlUmVjdC53aWR0aCgpLCBhZGp1c3RlZFNvdXJjZUltYWdlUmVjdC5oZWln
aHQoKSwgZGVwdGgsIDAsCi0gICAgICAgICAgICAgICAgZm9ybWF0LCB0eXBlLCBieXRlTGVuZ3Ro
LCBuZWVkQ29udmVyc2lvbiA/IGRhdGEuZGF0YSgpIDogaW1hZ2VQaXhlbERhdGEpOworICAgICAg
ICAgICAgICAgIGZvcm1hdCwgdHlwZSwgbWFrZUdDR0xTcGFuKG5lZWRDb252ZXJzaW9uID8gZGF0
YS5kYXRhKCkgOiBpbWFnZVBpeGVsRGF0YSwgYnl0ZUxlbmd0aCkpOwogICAgICAgICB9IGVsc2Ug
ewogICAgICAgICAgICAgQVNTRVJUKGZ1bmN0aW9uSUQgPT0gVGV4SW1hZ2VGdW5jdGlvbklEOjpU
ZXhTdWJJbWFnZTNEKTsKICAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnRl
eFN1YkltYWdlM0RSb2J1c3RBTkdMRSh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB6
b2Zmc2V0LAogICAgICAgICAgICAgICAgIGFkanVzdGVkU291cmNlSW1hZ2VSZWN0LndpZHRoKCks
IGFkanVzdGVkU291cmNlSW1hZ2VSZWN0LmhlaWdodCgpLCBkZXB0aCwKLSAgICAgICAgICAgICAg
ICBmb3JtYXQsIHR5cGUsIGJ5dGVMZW5ndGgsIG5lZWRDb252ZXJzaW9uID8gZGF0YS5kYXRhKCkg
OiBpbWFnZVBpeGVsRGF0YSk7CisgICAgICAgICAgICAgICAgZm9ybWF0LCB0eXBlLCBtYWtlR0NH
TFNwYW4obmVlZENvbnZlcnNpb24gPyBkYXRhLmRhdGEoKSA6IGltYWdlUGl4ZWxEYXRhLCBieXRl
TGVuZ3RoKSk7CiAgICAgICAgIH0KICNlbHNlCiAgICAgICAgIFVOVVNFRF9QQVJBTSh6b2Zmc2V0
KTsKQEAgLTQ5OTMsNyArNDk5Myw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6
dGV4SW1hZ2VJbXBsKFRleEltYWdlRnVuY3Rpb25JRCBmdW5jdGlvbklELCBHQ0dMCiB2b2lkIFdl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnRleEltYWdlMkRCYXNlKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwg
R0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVu
dW0gdHlwZSwgR0NHTHNpemVpIGJ5dGVMZW5ndGgsIGNvbnN0IHZvaWQqIHBpeGVscykKIHsKICNp
ZiBVU0UoQU5HTEUpCi0gICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkudGV4SW1hZ2UyRFJv
YnVzdEFOR0xFKHRhcmdldCwgbGV2ZWwsIGludGVybmFsRm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBi
b3JkZXIsIGZvcm1hdCwgdHlwZSwgYnl0ZUxlbmd0aCwgcGl4ZWxzKTsKKyAgICBtX2NvbnRleHQt
PmdldEV4dGVuc2lvbnMoKS50ZXhJbWFnZTJEUm9idXN0QU5HTEUodGFyZ2V0LCBsZXZlbCwgaW50
ZXJuYWxGb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGJvcmRlciwgZm9ybWF0LCB0eXBlLCBtYWtlR0NH
TFNwYW4ocGl4ZWxzLCBieXRlTGVuZ3RoKSk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShieXRl
TGVuZ3RoKTsKICAgICAvLyBGSVhNRTogRm9yIG5vdyB3ZSBpZ25vcmUgYW55IGVycm9ycyByZXR1
cm5lZC4KQEAgLTUwMDcsNyArNTAwNyw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZTo6dGV4SW1hZ2UyREJhc2UoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHCiAgICAg
fSBlbHNlIHsKICAgICAgICAgQVNTRVJUKHZhbGlkYXRlU2V0dGFibGVUZXhJbnRlcm5hbEZvcm1h
dCgidGV4SW1hZ2UyRCIsIGludGVybmFsRm9ybWF0KSk7CiAgICAgICAgIG1fY29udGV4dC0+bW92
ZUVycm9yc1RvU3ludGhldGljRXJyb3JMaXN0KCk7Ci0gICAgICAgIG1fY29udGV4dC0+dGV4SW1h
Z2UyRCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbEZvcm1hdCwgd2lkdGgsIGhlaWdodCwgYm9yZGVy
LCBmb3JtYXQsIHR5cGUsIHBpeGVscyk7CisgICAgICAgIG1fY29udGV4dC0+dGV4SW1hZ2UyRCh0
YXJnZXQsIGxldmVsLCBpbnRlcm5hbEZvcm1hdCwgd2lkdGgsIGhlaWdodCwgYm9yZGVyLCBmb3Jt
YXQsIHR5cGUsIG1ha2VHQ0dMU3BhbihwaXhlbHMsIGJ5dGVMZW5ndGgpKTsKICAgICAgICAgaWYg
KG1fY29udGV4dC0+bW92ZUVycm9yc1RvU3ludGhldGljRXJyb3JMaXN0KCkpIHsKICAgICAgICAg
ICAgIC8vIFRoZSB0ZXhJbWFnZTJEIGZ1bmN0aW9uIGZhaWxlZC4gVGVsbCB0aGUgV2ViR0xUZXh0
dXJlIGl0IGRvZXNuJ3QgaGF2ZSB0aGUgZGF0YSBmb3IgdGhpcyBsZXZlbC4KICAgICAgICAgICAg
IHRleC0+bWFya0ludmFsaWQodGFyZ2V0LCBsZXZlbCk7CkBAIC01MDIzLDcgKzUwMjMsNyBAQCB2
b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnRleFN1YkltYWdlMkRCYXNlKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGludCBsZXZlbAogICAgIEFTU0VSVCghaXNDb250ZXh0TG9zdCgpKTsKICNp
ZiBVU0UoQU5HTEUpCiAgICAgVU5VU0VEX1BBUkFNKGludGVybmFsRm9ybWF0KTsKLSAgICBtX2Nv
bnRleHQtPmdldEV4dGVuc2lvbnMoKS50ZXhTdWJJbWFnZTJEUm9idXN0QU5HTEUodGFyZ2V0LCBs
ZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBieXRl
TGVuZ3RoLCBwaXhlbHMpOworICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnRleFN1Yklt
YWdlMkRSb2J1c3RBTkdMRSh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwg
aGVpZ2h0LCBmb3JtYXQsIHR5cGUsIG1ha2VHQ0dMU3BhbihwaXhlbHMsIGJ5dGVMZW5ndGgpKTsK
ICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGJ5dGVMZW5ndGgpOwogICAgIEFTU0VSVCh2YWxpZGF0
ZVRleEZ1bmNQYXJhbWV0ZXJzKCJ0ZXhTdWJJbWFnZTJEIiwgVGV4SW1hZ2VGdW5jdGlvblR5cGU6
OlRleFN1YkltYWdlLCBTb3VyY2VBcnJheUJ1ZmZlclZpZXcsIHRhcmdldCwgbGV2ZWwsIGludGVy
bmFsRm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCAxLCAwLCBmb3JtYXQsIHR5cGUpKTsKQEAgLTUwNDAs
NyArNTA0MCw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dGV4U3ViSW1hZ2Uy
REJhc2UoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsCiAgICAgQVNTRVJUKHRleC0+Z2V0
SGVpZ2h0KHRhcmdldCwgbGV2ZWwpID49ICh5b2Zmc2V0ICsgaGVpZ2h0KSk7CiAgICAgaWYgKCFp
c1dlYkdMMigpKQogICAgICAgICBBU1NFUlRfVU5VU0VEKGludGVybmFsRm9ybWF0LCB0ZXgtPmdl
dEludGVybmFsRm9ybWF0KHRhcmdldCwgbGV2ZWwpID09IGludGVybmFsRm9ybWF0KTsKLSAgICBt
X2NvbnRleHQtPnRleFN1YkltYWdlMkQodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwg
d2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBwaXhlbHMpOworICAgIG1fY29udGV4dC0+dGV4
U3ViSW1hZ2UyRCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0
LCBmb3JtYXQsIHR5cGUsIG1ha2VHQ0dMU3BhbihwaXhlbHMsIGJ5dGVMZW5ndGgpKTsKICNlbmRp
ZgogfQogCkBAIC01ODI2LDEwMCArNTgyNiwxMjUgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlOjp1bmlmb3JtNGkoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLAog
CiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm0xZnYoY29uc3QgV2ViR0xV
bmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBGbG9hdDMyTGlzdCYmIHYpCiB7Ci0gICAgaWYgKGlz
Q29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycygidW5p
Zm9ybTFmdiIsIGxvY2F0aW9uLCB2LCAxLCAwLCB2Lmxlbmd0aCgpKSkKKyAgICBpZiAoaXNDb250
ZXh0TG9zdE9yUGVuZGluZygpKQogICAgICAgICByZXR1cm47Ci0KLSAgICBtX2NvbnRleHQtPnVu
aWZvcm0xZnYobG9jYXRpb24tPmxvY2F0aW9uKCksIHYubGVuZ3RoKCksIHYuZGF0YSgpKTsKKyAg
ICBhdXRvIGRhdGEgPSB2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKCJ1bmlmb3JtMWZ2IiwgbG9j
YXRpb24sIHYsIDEpOworICAgIGlmICghZGF0YSkKKyAgICAgICAgcmV0dXJuOworICAgIG1fY29u
dGV4dC0+dW5pZm9ybTFmdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgZGF0YS52YWx1ZSgpKTsKIH0K
IAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtMmZ2KGNvbnN0IFdlYkdM
VW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgRmxvYXQzMkxpc3QmJiB2KQogewotICAgIGlmIChp
c0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMoInVu
aWZvcm0yZnYiLCBsb2NhdGlvbiwgdiwgMiwgMCwgdi5sZW5ndGgoKSkpCisgICAgaWYgKGlzQ29u
dGV4dExvc3RPclBlbmRpbmcoKSkKICAgICAgICAgcmV0dXJuOwotCi0gICAgbV9jb250ZXh0LT51
bmlmb3JtMmZ2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCB2Lmxlbmd0aCgpIC8gMiwgdi5kYXRhKCkp
OworICAgIGF1dG8gZGF0YSA9IHZhbGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMoInVuaWZvcm0yZnYi
LCBsb2NhdGlvbiwgdiwgMik7CisgICAgaWYgKCFkYXRhKQorICAgICAgICByZXR1cm47CisgICAg
bV9jb250ZXh0LT51bmlmb3JtMmZ2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCBkYXRhLnZhbHVlKCkp
OwogfQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm0zZnYoY29uc3Qg
V2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBGbG9hdDMyTGlzdCYmIHYpCiB7Ci0gICAg
aWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVy
cygidW5pZm9ybTNmdiIsIGxvY2F0aW9uLCB2LCAzLCAwLCB2Lmxlbmd0aCgpKSkKKyAgICBpZiAo
aXNDb250ZXh0TG9zdE9yUGVuZGluZygpKQogICAgICAgICByZXR1cm47Ci0KLSAgICBtX2NvbnRl
eHQtPnVuaWZvcm0zZnYobG9jYXRpb24tPmxvY2F0aW9uKCksIHYubGVuZ3RoKCkgLyAzLCB2LmRh
dGEoKSk7CisgICAgYXV0byBkYXRhID0gdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycygidW5pZm9y
bTNmdiIsIGxvY2F0aW9uLCB2LCAzKTsKKyAgICBpZiAoIWRhdGEpCisgICAgICAgIHJldHVybjsK
KyAgICBtX2NvbnRleHQtPnVuaWZvcm0zZnYobG9jYXRpb24tPmxvY2F0aW9uKCksIGRhdGEudmFs
dWUoKSk7CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybTRmdihj
b25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEZsb2F0MzJMaXN0JiYgdikKIHsK
LSAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVVuaWZvcm1QYXJh
bWV0ZXJzKCJ1bmlmb3JtNGZ2IiwgbG9jYXRpb24sIHYsIDQsIDAsIHYubGVuZ3RoKCkpKQorICAg
IGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCiAgICAgICAgIHJldHVybjsKLQotICAgIG1f
Y29udGV4dC0+dW5pZm9ybTRmdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgdi5sZW5ndGgoKSAvIDQs
IHYuZGF0YSgpKTsKKyAgICBhdXRvIGRhdGEgPSB2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKCJ1
bmlmb3JtNGZ2IiwgbG9jYXRpb24sIHYsIDQpOworICAgIGlmICghZGF0YSkKKyAgICAgICAgcmV0
dXJuOworICAgIG1fY29udGV4dC0+dW5pZm9ybTRmdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgZGF0
YS52YWx1ZSgpKTsKIH0KIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3Jt
MWl2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgSW50MzJMaXN0JiYgdikK
IHsKLSAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVVuaWZvcm1Q
YXJhbWV0ZXJzKCJ1bmlmb3JtMWl2IiwgbG9jYXRpb24sIHYsIDEsIDAsIHYubGVuZ3RoKCkpKQor
ICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCisgICAgICAgIHJldHVybjsKKyAgICBh
dXRvIHJlc3VsdCA9IHZhbGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMoInVuaWZvcm0xaXYiLCBsb2Nh
dGlvbiwgdiwgMSk7CisgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1
dG8gZGF0YSA9IHYuZGF0YSgpOwotICAgIGF1dG8gbGVuZ3RoID0gdi5sZW5ndGgoKTsKKyAgICBh
dXRvIGRhdGEgPSByZXN1bHQudmFsdWUoKTsKIAogICAgIGlmIChsb2NhdGlvbi0+dHlwZSgpID09
IEdyYXBoaWNzQ29udGV4dEdMOjpTQU1QTEVSXzJEIHx8IGxvY2F0aW9uLT50eXBlKCkgPT0gR3Jh
cGhpY3NDb250ZXh0R0w6OlNBTVBMRVJfQ1VCRSkgewotICAgICAgICBmb3IgKGF1dG8gaSA9IDA7
IGkgPCBsZW5ndGg7ICsraSkgeworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGRhdGEu
YnVmU2l6ZTsgKytpKSB7CiAgICAgICAgICAgICBpZiAoZGF0YVtpXSA+PSBzdGF0aWNfY2FzdDxp
bnQ+KG1fdGV4dHVyZVVuaXRzLnNpemUoKSkpIHsKLSAgICAgICAgICAgICAgICBMT0coV2ViR0ws
ICJUZXh0dXJlIHVuaXQgc2l6ZT0lenUsIHZbJWRdPSVkLiBMb2NhdGlvbiB0eXBlID0gJTA0WC4i
LCBtX3RleHR1cmVVbml0cy5zaXplKCksIGksIGRhdGFbaV0sIGxvY2F0aW9uLT50eXBlKCkpOwor
ICAgICAgICAgICAgICAgIExPRyhXZWJHTCwgIlRleHR1cmUgdW5pdCBzaXplPSV6dSwgdlslenVd
PSVkLiBMb2NhdGlvbiB0eXBlID0gJTA0WC4iLCBtX3RleHR1cmVVbml0cy5zaXplKCksIGksIGRh
dGFbaV0sIGxvY2F0aW9uLT50eXBlKCkpOwogICAgICAgICAgICAgICAgIHN5bnRoZXNpemVHTEVy
cm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX1ZBTFVFLCAidW5pZm9ybTFpdiIsICJpbnZh
bGlkIHRleHR1cmUgdW5pdCIpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAg
IH0KICAgICAgICAgfQogICAgIH0KIAotICAgIG1fY29udGV4dC0+dW5pZm9ybTFpdihsb2NhdGlv
bi0+bG9jYXRpb24oKSwgbGVuZ3RoLCBkYXRhKTsKKyAgICBtX2NvbnRleHQtPnVuaWZvcm0xaXYo
bG9jYXRpb24tPmxvY2F0aW9uKCksIGRhdGEpOwogfQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OnVuaWZvcm0yaXYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9u
LCBJbnQzMkxpc3QmJiB2KQogewotICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwg
IXZhbGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMoInVuaWZvcm0yaXYiLCBsb2NhdGlvbiwgdiwgMiwg
MCwgdi5sZW5ndGgoKSkpCisgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSkKICAgICAg
ICAgcmV0dXJuOwotCi0gICAgbV9jb250ZXh0LT51bmlmb3JtMml2KGxvY2F0aW9uLT5sb2NhdGlv
bigpLCB2Lmxlbmd0aCgpIC8gMiwgdi5kYXRhKCkpOworICAgIGF1dG8gZGF0YSA9IHZhbGlkYXRl
VW5pZm9ybVBhcmFtZXRlcnMoInVuaWZvcm0yaXYiLCBsb2NhdGlvbiwgdiwgMik7CisgICAgaWYg
KCFkYXRhKQorICAgICAgICByZXR1cm47CisgICAgbV9jb250ZXh0LT51bmlmb3JtMml2KGxvY2F0
aW9uLT5sb2NhdGlvbigpLCBkYXRhLnZhbHVlKCkpOwogfQogCiB2b2lkIFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2U6OnVuaWZvcm0zaXYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0
aW9uLCBJbnQzMkxpc3QmJiB2KQogewotICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkg
fHwgIXZhbGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMoInVuaWZvcm0zaXYiLCBsb2NhdGlvbiwgdiwg
MywgMCwgdi5sZW5ndGgoKSkpCisgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSkKICAg
ICAgICAgcmV0dXJuOwotCi0gICAgbV9jb250ZXh0LT51bmlmb3JtM2l2KGxvY2F0aW9uLT5sb2Nh
dGlvbigpLCB2Lmxlbmd0aCgpIC8gMywgdi5kYXRhKCkpOworICAgIGF1dG8gZGF0YSA9IHZhbGlk
YXRlVW5pZm9ybVBhcmFtZXRlcnMoInVuaWZvcm0zaXYiLCBsb2NhdGlvbiwgdiwgMyk7CisgICAg
aWYgKCFkYXRhKQorICAgICAgICByZXR1cm47CisgICAgbV9jb250ZXh0LT51bmlmb3JtM2l2KGxv
Y2F0aW9uLT5sb2NhdGlvbigpLCBkYXRhLnZhbHVlKCkpOwogfQogCiB2b2lkIFdlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2U6OnVuaWZvcm00aXYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxv
Y2F0aW9uLCBJbnQzMkxpc3QmJiB2KQogewotICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5n
KCkgfHwgIXZhbGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMoInVuaWZvcm00aXYiLCBsb2NhdGlvbiwg
diwgNCwgMCwgdi5sZW5ndGgoKSkpCisgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSkK
ICAgICAgICAgcmV0dXJuOwotCi0gICAgbV9jb250ZXh0LT51bmlmb3JtNGl2KGxvY2F0aW9uLT5s
b2NhdGlvbigpLCB2Lmxlbmd0aCgpIC8gNCwgdi5kYXRhKCkpOworICAgIGF1dG8gZGF0YSA9IHZh
bGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMoInVuaWZvcm00aXYiLCBsb2NhdGlvbiwgdiwgNCk7Cisg
ICAgaWYgKCFkYXRhKQorICAgICAgICByZXR1cm47CisgICAgbV9jb250ZXh0LT51bmlmb3JtNGl2
KGxvY2F0aW9uLT5sb2NhdGlvbigpLCBkYXRhLnZhbHVlKCkpOwogfQogCiB2b2lkIFdlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm1NYXRyaXgyZnYoY29uc3QgV2ViR0xVbmlmb3JtTG9j
YXRpb24qIGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEZsb2F0MzJMaXN0JiYgdikK
IHsKLSAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVVuaWZvcm1N
YXRyaXhQYXJhbWV0ZXJzKCJ1bmlmb3JtTWF0cml4MmZ2IiwgbG9jYXRpb24sIHRyYW5zcG9zZSwg
diwgNCwgMCwgdi5sZW5ndGgoKSkpCisgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSkK
KyAgICAgICAgcmV0dXJuOworICAgIGF1dG8gZGF0YSA9IHZhbGlkYXRlVW5pZm9ybU1hdHJpeFBh
cmFtZXRlcnMoInVuaWZvcm1NYXRyaXgyZnYiLCBsb2NhdGlvbiwgdHJhbnNwb3NlLCB2LCA0KTsK
KyAgICBpZiAoIWRhdGEpCiAgICAgICAgIHJldHVybjsKLSAgICBtX2NvbnRleHQtPnVuaWZvcm1N
YXRyaXgyZnYobG9jYXRpb24tPmxvY2F0aW9uKCksIHYubGVuZ3RoKCkgLyA0LCB0cmFuc3Bvc2Us
IHYuZGF0YSgpKTsKKyAgICBtX2NvbnRleHQtPnVuaWZvcm1NYXRyaXgyZnYobG9jYXRpb24tPmxv
Y2F0aW9uKCksIHRyYW5zcG9zZSwgZGF0YS52YWx1ZSgpKTsKIH0KIAogdm9pZCBXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtTWF0cml4M2Z2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0
aW9uKiBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBGbG9hdDMyTGlzdCYmIHYpCiB7
Ci0gICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVVbmlmb3JtTWF0
cml4UGFyYW1ldGVycygidW5pZm9ybU1hdHJpeDNmdiIsIGxvY2F0aW9uLCB0cmFuc3Bvc2UsIHYs
IDksIDAsIHYubGVuZ3RoKCkpKQorICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCisg
ICAgICAgIHJldHVybjsKKyAgICBhdXRvIGRhdGEgPSB2YWxpZGF0ZVVuaWZvcm1NYXRyaXhQYXJh
bWV0ZXJzKCJ1bmlmb3JtTWF0cml4M2Z2IiwgbG9jYXRpb24sIHRyYW5zcG9zZSwgdiwgOSk7Cisg
ICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm47Ci0gICAgbV9jb250ZXh0LT51bmlmb3JtTWF0
cml4M2Z2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCB2Lmxlbmd0aCgpIC8gOSwgdHJhbnNwb3NlLCB2
LmRhdGEoKSk7CisgICAgbV9jb250ZXh0LT51bmlmb3JtTWF0cml4M2Z2KGxvY2F0aW9uLT5sb2Nh
dGlvbigpLCB0cmFuc3Bvc2UsIGRhdGEudmFsdWUoKSk7CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6dW5pZm9ybU1hdHJpeDRmdihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlv
biogbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgRmxvYXQzMkxpc3QmJiB2KQogewot
ICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlVW5pZm9ybU1hdHJp
eFBhcmFtZXRlcnMoInVuaWZvcm1NYXRyaXg0ZnYiLCBsb2NhdGlvbiwgdHJhbnNwb3NlLCB2LCAx
NiwgMCwgdi5sZW5ndGgoKSkpCisgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSkKKyAg
ICAgICAgcmV0dXJuOworICAgIGF1dG8gZGF0YSA9IHZhbGlkYXRlVW5pZm9ybU1hdHJpeFBhcmFt
ZXRlcnMoInVuaWZvcm1NYXRyaXg0ZnYiLCBsb2NhdGlvbiwgdHJhbnNwb3NlLCB2LCAxNik7Cisg
ICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm47Ci0gICAgbV9jb250ZXh0LT51bmlmb3JtTWF0
cml4NGZ2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCB2Lmxlbmd0aCgpIC8gMTYsIHRyYW5zcG9zZSwg
di5kYXRhKCkpOworICAgIG1fY29udGV4dC0+dW5pZm9ybU1hdHJpeDRmdihsb2NhdGlvbi0+bG9j
YXRpb24oKSwgdHJhbnNwb3NlLCBkYXRhLnZhbHVlKCkpOwogfQogCiB2b2lkIFdlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2U6OnVzZVByb2dyYW0oV2ViR0xQcm9ncmFtKiBwcm9ncmFtKQpAQCAtNzA0
Nyw2MiArNzA3Miw0OCBAQCBib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlkYXRl
Q2FwYWJpbGl0eShjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIEdDRwogICAgIH0KIH0KIAotYm9v
bCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKGNv
bnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0
aW9uLCBjb25zdCBGbG9hdDMyTGlzdCYgdiwgR0NHTHNpemVpIHJlcXVpcmVkTWluU2l6ZSwgR0NH
THVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCi17Ci0gICAgcmV0dXJuIHZhbGlk
YXRlVW5pZm9ybU1hdHJpeFBhcmFtZXRlcnMoZnVuY3Rpb25OYW1lLCBsb2NhdGlvbiwgZmFsc2Us
IHYuZGF0YSgpLCB2Lmxlbmd0aCgpLCByZXF1aXJlZE1pblNpemUsIHNyY09mZnNldCwgc3JjTGVu
Z3RoKTsKLX0KLQotYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZVVuaWZv
cm1QYXJhbWV0ZXJzKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgY29uc3QgV2ViR0xVbmlmb3Jt
TG9jYXRpb24qIGxvY2F0aW9uLCBjb25zdCBJbnQzMkxpc3QmIHYsIEdDR0xzaXplaSByZXF1aXJl
ZE1pblNpemUsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQotewotICAg
IHJldHVybiB2YWxpZGF0ZVVuaWZvcm1NYXRyaXhQYXJhbWV0ZXJzKGZ1bmN0aW9uTmFtZSwgbG9j
YXRpb24sIGZhbHNlLCB2LmRhdGEoKSwgdi5sZW5ndGgoKSwgcmVxdWlyZWRNaW5TaXplLCBzcmNP
ZmZzZXQsIHNyY0xlbmd0aCk7Ci19CiAKLWJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6
dmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycyhjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIGNvbnN0
IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgY29uc3QgVWludDMyTGlzdCYgdiwgR0NH
THNpemVpIHJlcXVpcmVkTWluU2l6ZSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNM
ZW5ndGgpCi17Ci0gICAgcmV0dXJuIHZhbGlkYXRlVW5pZm9ybU1hdHJpeFBhcmFtZXRlcnMoZnVu
Y3Rpb25OYW1lLCBsb2NhdGlvbiwgZmFsc2UsIHYuZGF0YSgpLCB2Lmxlbmd0aCgpLCByZXF1aXJl
ZE1pblNpemUsIHNyY09mZnNldCwgc3JjTGVuZ3RoKTsKLX0KLQotYm9vbCBXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlOjp2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKGNvbnN0IGNoYXIqIGZ1bmN0
aW9uTmFtZSwgY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCB2b2lkKiB2LCBH
Q0dMc2l6ZWkgc2l6ZSwgR0NHTHNpemVpIHJlcXVpcmVkTWluU2l6ZSwgR0NHTHVpbnQgc3JjT2Zm
c2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCi17Ci0gICAgcmV0dXJuIHZhbGlkYXRlVW5pZm9ybU1h
dHJpeFBhcmFtZXRlcnMoZnVuY3Rpb25OYW1lLCBsb2NhdGlvbiwgZmFsc2UsIHYsIHNpemUsIHJl
cXVpcmVkTWluU2l6ZSwgc3JjT2Zmc2V0LCBzcmNMZW5ndGgpOwotfQotCi1ib29sIFdlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlVW5pZm9ybU1hdHJpeFBhcmFtZXRlcnMoY29uc3Qg
Y2hhciogZnVuY3Rpb25OYW1lLCBjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24s
IEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgRmxvYXQzMkxpc3QmIHYsIEdDR0xzaXplaSBy
ZXF1aXJlZE1pblNpemUsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQot
ewotICAgIHJldHVybiB2YWxpZGF0ZVVuaWZvcm1NYXRyaXhQYXJhbWV0ZXJzKGZ1bmN0aW9uTmFt
ZSwgbG9jYXRpb24sIHRyYW5zcG9zZSwgdi5kYXRhKCksIHYubGVuZ3RoKCksIHJlcXVpcmVkTWlu
U2l6ZSwgc3JjT2Zmc2V0LCBzcmNMZW5ndGgpOwotfQotCi1ib29sIFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OnZhbGlkYXRlVW5pZm9ybU1hdHJpeFBhcmFtZXRlcnMoY29uc3QgY2hhciogZnVu
Y3Rpb25OYW1lLCBjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEdDR0xib29s
ZWFuIHRyYW5zcG9zZSwgY29uc3Qgdm9pZCogdiwgR0NHTHNpemVpIHNpemUsIEdDR0xzaXplaSBy
ZXF1aXJlZE1pblNpemUsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQor
dGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVHlwZWRMaXN0VHlwZT4KK09wdGlvbmFsPEdD
R0xTcGFuPGNvbnN0IFQ+PiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZVVuaWZv
cm1NYXRyaXhQYXJhbWV0ZXJzKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgY29uc3QgV2ViR0xV
bmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IFR5
cGVkTGlzdDxUeXBlZExpc3RUeXBlLCBUPiYgdmFsdWVzLCBHQ0dMc2l6ZWkgcmVxdWlyZWRNaW5T
aXplLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKIHsKICAgICBpZiAo
IXZhbGlkYXRlVW5pZm9ybUxvY2F0aW9uKGZ1bmN0aW9uTmFtZSwgbG9jYXRpb24pKQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKCF2KSB7CisgICAgICAgIHJldHVybiB7IH07CisgICAg
aWYgKCF2YWx1ZXMuZGF0YSgpKSB7CiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNz
Q29udGV4dEdMOjpJTlZBTElEX1ZBTFVFLCBmdW5jdGlvbk5hbWUsICJubyBhcnJheSIpOwotICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiB7IH07CiAgICAgfQogICAgIGlmICh0
cmFuc3Bvc2UgJiYgIWlzV2ViR0wyKCkpIHsKICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3Jh
cGhpY3NDb250ZXh0R0w6OklOVkFMSURfVkFMVUUsIGZ1bmN0aW9uTmFtZSwgInRyYW5zcG9zZSBu
b3QgRkFMU0UiKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4geyB9Owog
ICAgIH0KLSAgICBpZiAoc3JjT2Zmc2V0ID49IHN0YXRpY19jYXN0PEdDR0x1aW50PihzaXplKSkg
eworICAgIGlmIChzcmNPZmZzZXQgPj0gc3RhdGljX2Nhc3Q8R0NHTHVpbnQ+KHZhbHVlcy5sZW5n
dGgoKSkpIHsKICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklO
VkFMSURfVkFMVUUsIGZ1bmN0aW9uTmFtZSwgImludmFsaWQgc3JjT2Zmc2V0Iik7Ci0gICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9Ci0gICAgR0NHTHNpemVp
IGFjdHVhbFNpemUgPSBzaXplIC0gc3JjT2Zmc2V0OworICAgIEdDR0xzaXplaSBhY3R1YWxTaXpl
ID0gdmFsdWVzLmxlbmd0aCgpIC0gc3JjT2Zmc2V0OwogICAgIGlmIChzcmNMZW5ndGggPiAwKSB7
CiAgICAgICAgIGlmIChzcmNMZW5ndGggPiBzdGF0aWNfY2FzdDxHQ0dMdWludD4oYWN0dWFsU2l6
ZSkpIHsKICAgICAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJ
TlZBTElEX1ZBTFVFLCBmdW5jdGlvbk5hbWUsICJpbnZhbGlkIHNyY09mZnNldCArIHNyY0xlbmd0
aCIpOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgcmV0dXJuIHsgfTsK
ICAgICAgICAgfQogICAgICAgICBhY3R1YWxTaXplID0gc3JjTGVuZ3RoOwogICAgIH0KICAgICBp
ZiAoYWN0dWFsU2l6ZSA8IHJlcXVpcmVkTWluU2l6ZSB8fCAoYWN0dWFsU2l6ZSAlIHJlcXVpcmVk
TWluU2l6ZSkpIHsKICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6
OklOVkFMSURfVkFMVUUsIGZ1bmN0aW9uTmFtZSwgImludmFsaWQgc2l6ZSIpOwotICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiB7IH07CiAgICAgfQotICAgIHJldHVybiB0cnVl
OworICAgIHJldHVybiBtYWtlR0NHTFNwYW4odmFsdWVzLmRhdGEoKSArIHNyY09mZnNldCwgYWN0
dWFsU2l6ZSk7CiB9CiAKK3RlbXBsYXRlCitPcHRpb25hbDxHQ0dMU3Bhbjxjb25zdCBHQ0dMdWlu
dD4+IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlVW5pZm9ybU1hdHJpeFBhcmFt
ZXRlcnM8R0NHTHVpbnQsIFVpbnQzMkFycmF5Pihjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIGNv
bnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBU
eXBlZExpc3Q8VWludDMyQXJyYXksIHVpbnQzMl90PiYgdmFsdWVzLCBHQ0dMc2l6ZWkgcmVxdWly
ZWRNaW5TaXplLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCk7CisKK3Rl
bXBsYXRlCitPcHRpb25hbDxHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50Pj4gV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6dmFsaWRhdGVVbmlmb3JtTWF0cml4UGFyYW1ldGVyczxHQ0dMaW50LCBJbnQz
MkFycmF5Pihjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0
aW9uKiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBUeXBlZExpc3Q8SW50MzJBcnJheSwg
aW50MzJfdD4mIHZhbHVlcywgR0NHTHNpemVpIHJlcXVpcmVkTWluU2l6ZSwgR0NHTHVpbnQgc3Jj
T2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpOworCit0ZW1wbGF0ZQorT3B0aW9uYWw8R0NHTFNw
YW48Y29uc3QgR0NHTGZsb2F0Pj4gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmFsaWRhdGVV
bmlmb3JtTWF0cml4UGFyYW1ldGVyczxHQ0dMZmxvYXQsIEZsb2F0MzJBcnJheT4oY29uc3QgY2hh
ciogZnVuY3Rpb25OYW1lLCBjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiosIEdDR0xib29sZWFu
IHRyYW5zcG9zZSwgY29uc3QgVHlwZWRMaXN0PEZsb2F0MzJBcnJheSwgZmxvYXQ+JiB2YWx1ZXMs
IEdDR0xzaXplaSByZXF1aXJlZE1pblNpemUsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQg
c3JjTGVuZ3RoKTsKKwogV2ViR0xCdWZmZXIqIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZh
bGlkYXRlQnVmZmVyRGF0YVBhcmFtZXRlcnMoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xlbnVtIHVzYWdlKQogewogICAgIFdlYkdMQnVmZmVyKiBidWZmZXIg
PSB2YWxpZGF0ZUJ1ZmZlckRhdGFUYXJnZXQoZnVuY3Rpb25OYW1lLCB0YXJnZXQpOwpAQCAtNzI0
NiwxNiArNzI1NywxNiBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZlcnRleEF0
dHJpYmZ2SW1wbChjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIEdDRwogICAgIHsKICAgICAgICAg
c3dpdGNoIChleHBlY3RlZFNpemUpIHsKICAgICAgICAgY2FzZSAxOgotICAgICAgICAgICAgbV9j
b250ZXh0LT52ZXJ0ZXhBdHRyaWIxZnYoaW5kZXgsIGRhdGEpOworICAgICAgICAgICAgbV9jb250
ZXh0LT52ZXJ0ZXhBdHRyaWIxZnYoaW5kZXgsIG1ha2VHQ0dMU3BhbjwxPihkYXRhKSk7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSAyOgotICAgICAgICAgICAgbV9jb250ZXh0LT52
ZXJ0ZXhBdHRyaWIyZnYoaW5kZXgsIGRhdGEpOworICAgICAgICAgICAgbV9jb250ZXh0LT52ZXJ0
ZXhBdHRyaWIyZnYoaW5kZXgsIG1ha2VHQ0dMU3BhbjwyPihkYXRhKSk7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgY2FzZSAzOgotICAgICAgICAgICAgbV9jb250ZXh0LT52ZXJ0ZXhBdHRy
aWIzZnYoaW5kZXgsIGRhdGEpOworICAgICAgICAgICAgbV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWIz
ZnYoaW5kZXgsIG1ha2VHQ0dMU3BhbjwzPihkYXRhKSk7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgY2FzZSA0OgotICAgICAgICAgICAgbV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWI0ZnYoaW5k
ZXgsIGRhdGEpOworICAgICAgICAgICAgbV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWI0ZnYoaW5kZXgs
IG1ha2VHQ0dMU3Bhbjw0PihkYXRhKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQog
ICAgIH0KQEAgLTczMzAsNyArNzM0MSw3IEBAIE9wdGlvbmFsPGJvb2w+IFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2U6OnNpbXVsYXRlVmVydGV4QXR0cmliMChHQ0dMdWludCBudW1WZXJ0CiAKICAg
ICBpZiAoYnVmZmVyRGF0YVNpemUgPiBtX3ZlcnRleEF0dHJpYjBCdWZmZXJTaXplKSB7CiAgICAg
ICAgIG1fY29udGV4dC0+bW92ZUVycm9yc1RvU3ludGhldGljRXJyb3JMaXN0KCk7Ci0gICAgICAg
IG1fY29udGV4dC0+YnVmZmVyRGF0YShHcmFwaGljc0NvbnRleHRHTDo6QVJSQVlfQlVGRkVSLCBi
dWZmZXJEYXRhU2l6ZSwgMCwgR3JhcGhpY3NDb250ZXh0R0w6OkRZTkFNSUNfRFJBVyk7CisgICAg
ICAgIG1fY29udGV4dC0+YnVmZmVyRGF0YShHcmFwaGljc0NvbnRleHRHTDo6QVJSQVlfQlVGRkVS
LCBidWZmZXJEYXRhU2l6ZSwgR3JhcGhpY3NDb250ZXh0R0w6OkRZTkFNSUNfRFJBVyk7CiAgICAg
ICAgIGlmIChtX2NvbnRleHQtPmdldEVycm9yKCkgIT0gR3JhcGhpY3NDb250ZXh0R0w6Ok5PX0VS
Uk9SKSB7CiAgICAgICAgICAgICAvLyBXZSB3ZXJlIHVuYWJsZSB0byBjcmVhdGUgYSBidWZmZXIu
CiAgICAgICAgICAgICBtX3ZlcnRleEF0dHJpYjBVc2VkQmVmb3JlID0gZmFsc2U7CkBAIC03MzY1
LDcgKzczNzYsNyBAQCBPcHRpb25hbDxib29sPiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpz
aW11bGF0ZVZlcnRleEF0dHJpYjAoR0NHTHVpbnQgbnVtVmVydAogICAgICAgICBtX3ZlcnRleEF0
dHJpYjBCdWZmZXJWYWx1ZVsyXSA9IGF0dHJpYlZhbHVlLmZWYWx1ZVsyXTsKICAgICAgICAgbV92
ZXJ0ZXhBdHRyaWIwQnVmZmVyVmFsdWVbM10gPSBhdHRyaWJWYWx1ZS5mVmFsdWVbM107CiAgICAg
ICAgIG1fZm9yY2VBdHRyaWIwQnVmZmVyUmVmaWxsID0gZmFsc2U7Ci0gICAgICAgIG1fY29udGV4
dC0+YnVmZmVyU3ViRGF0YShHcmFwaGljc0NvbnRleHRHTDo6QVJSQVlfQlVGRkVSLCAwLCBidWZm
ZXJEYXRhU2l6ZSwgYnVmZmVyRGF0YS5nZXQoKSk7CisgICAgICAgIG1fY29udGV4dC0+YnVmZmVy
U3ViRGF0YShHcmFwaGljc0NvbnRleHRHTDo6QVJSQVlfQlVGRkVSLCAwLCBtYWtlR0NHTFNwYW4o
YnVmZmVyRGF0YS5nZXQoKSwgYnVmZmVyRGF0YVNpemUpKTsKICAgICB9CiAgICAgbV9jb250ZXh0
LT52ZXJ0ZXhBdHRyaWJQb2ludGVyKDAsIDQsIEdyYXBoaWNzQ29udGV4dEdMOjpGTE9BVCwgMCwg
MCwgMCk7CiAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmgKaW5kZXggYTcxZDAzNmFhMGRlYTUy
YjQ1NzkwOWZiZmZkYzNhZGY4MGY1MTBjYy4uMDA3ODI4ZjdmZDU3M2VhNTAwNTk0MGVkNTZlNDM5
NzUxNTc0M2U3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaApAQCAtMTAwNSwxMiArMTAwNSwxMyBAQCBwcm90ZWN0
ZWQ6CiAKICAgICAvLyBIZWxwZXIgZnVuY3Rpb24gdG8gdmFsaWRhdGUgaW5wdXQgcGFyYW1ldGVy
cyBmb3IgdW5pZm9ybSBmdW5jdGlvbnMuCiAgICAgYm9vbCB2YWxpZGF0ZVVuaWZvcm1Mb2NhdGlv
bihjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKik7
Ci0gICAgYm9vbCB2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKGNvbnN0IGNoYXIqIGZ1bmN0aW9u
TmFtZSwgY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qLCBjb25zdCBGbG9hdDMyTGlzdCYsIEdD
R0xzaXplaSByZXF1aXJlZE1pblNpemUsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3Jj
TGVuZ3RoKTsKLSAgICBib29sIHZhbGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMoY29uc3QgY2hhciog
ZnVuY3Rpb25OYW1lLCBjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiosIGNvbnN0IEludDMyTGlz
dCYsIEdDR0xzaXplaSByZXF1aXJlZE1pblNpemUsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVp
bnQgc3JjTGVuZ3RoKTsKLSAgICBib29sIHZhbGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMoY29uc3Qg
Y2hhciogZnVuY3Rpb25OYW1lLCBjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiosIGNvbnN0IFVp
bnQzMkxpc3QmLCBHQ0dMc2l6ZWkgcmVxdWlyZWRNaW5TaXplLCBHQ0dMdWludCBzcmNPZmZzZXQs
IEdDR0x1aW50IHNyY0xlbmd0aCk7Ci0gICAgYm9vbCB2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJz
KGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qLCB2
b2lkKiwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgcmVxdWlyZWRNaW5TaXplLCBHQ0dMdWludCBzcmNP
ZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCk7Ci0gICAgYm9vbCB2YWxpZGF0ZVVuaWZvcm1NYXRy
aXhQYXJhbWV0ZXJzKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgY29uc3QgV2ViR0xVbmlmb3Jt
TG9jYXRpb24qLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEZsb2F0MzJMaXN0JiwgR0NH
THNpemVpIHJlcXVpcmVkTWluU2l6ZSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNM
ZW5ndGgpOwotICAgIGJvb2wgdmFsaWRhdGVVbmlmb3JtTWF0cml4UGFyYW1ldGVycyhjb25zdCBj
aGFyKiBmdW5jdGlvbk5hbWUsIGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiwgR0NHTGJvb2xl
YW4gdHJhbnNwb3NlLCBjb25zdCB2b2lkKiwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgcmVxdWlyZWRN
aW5TaXplLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCk7CisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVHlwZWRMaXN0VHlwZT4KKyAgICBPcHRpb25hbDxH
Q0dMU3Bhbjxjb25zdCBUPj4gdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycyhjb25zdCBjaGFyKiBm
dW5jdGlvbk5hbWUsIGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgY29uc3Qg
VHlwZWRMaXN0PFR5cGVkTGlzdFR5cGUsIFQ+JiB2YWx1ZXMsIEdDR0xzaXplaSByZXF1aXJlZE1p
blNpemUsIEdDR0x1aW50IHNyY09mZnNldCA9IDAsIEdDR0x1aW50IHNyY0xlbmd0aCA9IDApCisg
ICAgeworICAgICAgICByZXR1cm4gdmFsaWRhdGVVbmlmb3JtTWF0cml4UGFyYW1ldGVycyhmdW5j
dGlvbk5hbWUsIGxvY2F0aW9uLCBmYWxzZSwgdmFsdWVzLCByZXF1aXJlZE1pblNpemUsIHNyY09m
ZnNldCwgc3JjTGVuZ3RoKTsKKyAgICB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5h
bWUgVHlwZWRMaXN0VHlwZT4KKyAgICBPcHRpb25hbDxHQ0dMU3Bhbjxjb25zdCBUPj4gdmFsaWRh
dGVVbmlmb3JtTWF0cml4UGFyYW1ldGVycyhjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIGNvbnN0
IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBUeXBl
ZExpc3Q8VHlwZWRMaXN0VHlwZSwgVD4mLCBHQ0dMc2l6ZWkgcmVxdWlyZWRNaW5TaXplLCBHQ0dM
dWludCBzcmNPZmZzZXQgPSAwLCBHQ0dMdWludCBzcmNMZW5ndGggPSAwKTsKIAogICAgIC8vIEhl
bHBlciBmdW5jdGlvbiB0byB2YWxpZGF0ZSBwYXJhbWV0ZXJzIGZvciBidWZmZXJEYXRhLgogICAg
IC8vIFJldHVybiB0aGUgY3VycmVudCBib3VuZCBidWZmZXIgdG8gdGFyZ2V0LCBvciAwIGlmIHBh
cmFtZXRlcnMgYXJlIGludmFsaWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9FeHRlbnNpb25zR0wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0V4dGVuc2lvbnNHTC5oCmluZGV4IGJhODY1YjMzMDhlNmM5NDU4MjIxMjIzNzc5NmQ2ZmQ1
Nzc0ODQ3ZjguLjhmNjg0MDYxZmE2ZGRiNzYzYTc1YjQ5ZjM4MmU1OTU1NmQ5OTJmZGQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0V4dGVuc2lvbnNHTC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0V4dGVuc2lvbnNHTC5oCkBAIC0y
OTgsNyArMjk4LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBwb3BHcm91cE1hcmtlckVY
VCh2b2lkKSA9IDA7CiAKICAgICAvLyBHTF9BUkJfZHJhd19idWZmZXJzIC8gR0xfRVhUX2RyYXdf
YnVmZmVycwotICAgIHZpcnR1YWwgdm9pZCBkcmF3QnVmZmVyc0VYVChHQ0dMc2l6ZWkgbiwgY29u
c3QgR0NHTGVudW0qIGJ1ZnMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd0J1ZmZlcnNFWFQo
R0NHTFNwYW48Y29uc3QgR0NHTGVudW0+IGJ1ZnMpID0gMDsKIAogICAgIC8vIEdMX0FOR0xFX2lu
c3RhbmNlZF9hcnJheXMKICAgICB2aXJ0dWFsIHZvaWQgZHJhd0FycmF5c0luc3RhbmNlZChHQ0dM
ZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xzaXplaSBwcmlt
Y291bnQpID0gMDsKQEAgLTMwNywxNyArMzA3LDE3IEBAIHB1YmxpYzoKIAogICAgIC8vIEdMX0FO
R0xFX3JvYnVzdF9jbGllbnRfbWVtb3J5CiAgICAgdmlydHVhbCB2b2lkIHJlYWRQaXhlbHNSb2J1
c3RBTkdMRShHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkg
aGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHNpemVpKiBjb2x1bW5zLCBHQ0dMc2l6ZWkqIHJvd3Ms
IEdDR0x2b2lkKiBwaXhlbHMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdGV4SW1hZ2UyRFJvYnVz
dEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCBpbnRlcm5hbGZv
cm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwg
R0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3Qg
R0NHTHZvaWQqIHBpeGVscykgPSAwOworICAgIHZpcnR1YWwgdm9pZCB0ZXhJbWFnZTJEUm9idXN0
QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IGludGVybmFsZm9y
bWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBH
Q0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBw
aXhlbHMpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdGV4UGFyYW1ldGVyZnZSb2J1c3RBTkdMRShH
Q0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3Qg
R0NHTGZsb2F0KiBwYXJhbXMpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdGV4UGFyYW1ldGVyaXZS
b2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgY29uc3QgR0NHTGludCogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHRleFN1
YkltYWdlMkRSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xp
bnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBo
ZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUs
IGNvbnN0IEdDR0x2b2lkKiBwaXhlbHMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgY29tcHJlc3Nl
ZFRleEltYWdlMkRSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdD
R0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQs
IEdDR0xpbnQgYm9yZGVyLCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
Y29uc3QgR0NHTHZvaWQqIGRhdGEpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgY29tcHJlc3NlZFRl
eFN1YkltYWdlMkRSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdD
R0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXpl
aSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIGNvbnN0IEdDR0x2b2lkKiBkYXRhKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGNv
bXByZXNzZWRUZXhJbWFnZTNEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxl
dmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkg
aGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMc2l6ZWkgaW1hZ2VT
aXplLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTHZvaWQqIGRhdGEpID0gMDsKLSAgICB2
aXJ0dWFsIHZvaWQgY29tcHJlc3NlZFRleFN1YkltYWdlM0RSb2J1c3RBTkdMRShHQ0dMZW51bSB0
YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBH
Q0dMaW50IHpvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNp
emVpIGRlcHRoLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xzaXpl
aSBidWZTaXplLCBjb25zdCBHQ0dMdm9pZCogZGF0YSkgPSAwOwotCi0gICAgdmlydHVhbCB2b2lk
IHRleEltYWdlM0RSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdD
R0xpbnQgaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwg
R0NHTHNpemVpIGRlcHRoLCBHQ0dMaW50IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51
bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTHZvaWQqIHBpeGVscykgPSAwOwot
ICAgIHZpcnR1YWwgdm9pZCB0ZXhTdWJJbWFnZTNEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTGlu
dCB6b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBk
ZXB0aCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
Y29uc3QgR0NHTHZvaWQqIHBpeGVscykgPSAwOworICAgIHZpcnR1YWwgdm9pZCB0ZXhTdWJJbWFn
ZTJEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhv
ZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0
LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lk
PiBwaXhlbHMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY29tcHJlc3NlZFRleEltYWdlMkRSb2J1
c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFs
Zm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVy
LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gZGF0YSkgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRFJvYnVzdEFOR0xFKEdD
R0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlv
ZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0
LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gZGF0YSkgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBjb21wcmVzc2VkVGV4SW1hZ2UzRFJvYnVzdEFOR0xFKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xz
aXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMaW50IGJv
cmRlciwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY29tcHJlc3NlZFRleFN1YkltYWdlM0RSb2J1c3RBTkdM
RShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGlu
dCB5b2Zmc2V0LCBHQ0dMaW50IHpvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhl
aWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFnZVNp
emUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRhKSA9IDA7CisKKyAgICB2aXJ0dWFsIHZv
aWQgdGV4SW1hZ2UzRFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwg
R0NHTGludCBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0
LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xl
bnVtIHR5cGUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBwaXhlbHMpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgdGV4U3ViSW1hZ2UzRFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGlu
dCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xpbnQgem9mZnNl
dCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdD
R0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IHBp
eGVscykgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBnZXRRdWVyeWl2Um9idXN0QU5HTEUoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSog
bGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0UXVlcnlP
YmplY3R1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQqIHBhcmFtcykgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCBnZXRCdWZmZXJQb2ludGVydlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwg
R0NHTHZvaWQqKiBwYXJhbXMpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5oCmluZGV4IDBhNzE1NDBjZTgwMjBmZDlmNTgx
Njg2MDNmNjc2OWI5NDQ1MjI0MTUuLjhlYjJjZWZjNzM3OGQ0NTA3OGQxOTBhNWYxMTNmYjgyM2Yx
ZGI5NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzQ29udGV4dEdMLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NDb250ZXh0R0wuaApAQCAtMzczLDcgKzM3Myw3IEBAIHB1YmxpYzoKICAgICAgICAgVU5Q
QUNLX0NPTE9SU1BBQ0VfQ09OVkVSU0lPTl9XRUJHTCA9IDB4OTI0MywKICAgICAgICAgQlJPV1NF
Ul9ERUZBVUxUX1dFQkdMID0gMHg5MjQ0LAogICAgICAgICBWRVJURVhfQVRUUklCX0FSUkFZX0RJ
VklTT1JfQU5HTEUgPSAweDg4RkUsCi0gICAgICAgIAorCiAgICAgICAgIC8vIFdlYkdMMiBjb25z
dGFudHMKICAgICAgICAgUkVBRF9CVUZGRVIgPSAweDBDMDIsCiAgICAgICAgIFVOUEFDS19ST1df
TEVOR1RIID0gMHgwQ0YyLApAQCAtMTA2Myw0OSArMTA2Myw0OSBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIHRleFBhcmFtZXRlcmkoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwg
R0NHTGludCBwYXJhbSkgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIHVuaWZvcm0xZihHQ0dMaW50
IGxvY2F0aW9uLCBHQ0dMZmxvYXQgeCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtMWZ2
KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSwgY29uc3QgR0NHTGZsb2F0KiB2KSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIHVuaWZvcm0xZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29u
c3QgR0NHTGZsb2F0PiB2KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHVuaWZvcm0xaShHQ0dMaW50
IGxvY2F0aW9uLCBHQ0dMaW50IHgpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybTFpdihH
Q0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWksIGNvbnN0IEdDR0xpbnQqIHYpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgdW5pZm9ybTFpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBH
Q0dMaW50PiB2KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHVuaWZvcm0yZihHQ0dMaW50IGxvY2F0
aW9uLCBHQ0dMZmxvYXQgeCwgR0NHTGZsb2F0IHkpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdW5p
Zm9ybTJmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWksIGNvbnN0IEdDR0xmbG9hdCogdikg
PSAwOworICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtMmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xT
cGFuPGNvbnN0IEdDR0xmbG9hdD4gdikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtMmko
R0NHTGludCBsb2NhdGlvbiwgR0NHTGludCB4LCBHQ0dMaW50IHkpID0gMDsKLSAgICB2aXJ0dWFs
IHZvaWQgdW5pZm9ybTJpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWksIGNvbnN0IEdDR0xp
bnQqIHYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybTJpdihHQ0dMaW50IGxvY2F0aW9u
LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50PiB2KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHVuaWZv
cm0zZihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMZmxvYXQgeCwgR0NHTGZsb2F0IHksIEdDR0xmbG9h
dCB6KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHVuaWZvcm0zZnYoR0NHTGludCBsb2NhdGlvbiwg
R0NHTHNpemVpLCBjb25zdCBHQ0dMZmxvYXQqIHYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdW5p
Zm9ybTNmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IHYpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybTNpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xpbnQg
eCwgR0NHTGludCB5LCBHQ0dMaW50IHopID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybTNp
dihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWksIGNvbnN0IEdDR0xpbnQqIHYpID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgdW5pZm9ybTNpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25z
dCBHQ0dMaW50PiB2KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHVuaWZvcm00ZihHQ0dMaW50IGxv
Y2F0aW9uLCBHQ0dMZmxvYXQgeCwgR0NHTGZsb2F0IHksIEdDR0xmbG9hdCB6LCBHQ0dMZmxvYXQg
dykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtNGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdD
R0xzaXplaSwgY29uc3QgR0NHTGZsb2F0KiB2KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVuaWZv
cm00ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiB2KSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIHVuaWZvcm00aShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMaW50IHgs
IEdDR0xpbnQgeSwgR0NHTGludCB6LCBHQ0dMaW50IHcpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQg
dW5pZm9ybTRpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWksIGNvbnN0IEdDR0xpbnQqIHYp
ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybU1hdHJpeDJmdihHQ0dMaW50IGxvY2F0aW9u
LCBHQ0dMc2l6ZWksIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiB2YWx1
ZSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtTWF0cml4M2Z2KEdDR0xpbnQgbG9jYXRp
b24sIEdDR0xzaXplaSwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHQ0dMZmxvYXQqIHZh
bHVlKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHVuaWZvcm1NYXRyaXg0ZnYoR0NHTGludCBsb2Nh
dGlvbiwgR0NHTHNpemVpLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCog
dmFsdWUpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybTRpdihHQ0dMaW50IGxvY2F0aW9u
LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50PiB2KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVuaWZv
cm1NYXRyaXgyZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dM
U3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IHZhbHVlKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVuaWZv
cm1NYXRyaXgzZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dM
U3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IHZhbHVlKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVuaWZv
cm1NYXRyaXg0ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dM
U3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IHZhbHVlKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgdXNl
UHJvZ3JhbShQbGF0Zm9ybUdMT2JqZWN0KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHZhbGlkYXRl
UHJvZ3JhbShQbGF0Zm9ybUdMT2JqZWN0KSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgdmVydGV4
QXR0cmliMWYoR0NHTHVpbnQgaW5kZXgsIEdDR0xmbG9hdCB4KSA9IDA7Ci0gICAgdmlydHVhbCB2
b2lkIHZlcnRleEF0dHJpYjFmdihHQ0dMdWludCBpbmRleCwgY29uc3QgR0NHTGZsb2F0KiB2YWx1
ZXMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdmVydGV4QXR0cmliMWZ2KEdDR0x1aW50IGluZGV4
LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQsIDE+IHZhbHVlcykgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCB2ZXJ0ZXhBdHRyaWIyZihHQ0dMdWludCBpbmRleCwgR0NHTGZsb2F0IHgsIEdDR0xmbG9h
dCB5KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHZlcnRleEF0dHJpYjJmdihHQ0dMdWludCBpbmRl
eCwgY29uc3QgR0NHTGZsb2F0KiB2YWx1ZXMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdmVydGV4
QXR0cmliMmZ2KEdDR0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQsIDI+IHZh
bHVlcykgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB2ZXJ0ZXhBdHRyaWIzZihHQ0dMdWludCBpbmRl
eCwgR0NHTGZsb2F0IHgsIEdDR0xmbG9hdCB5LCBHQ0dMZmxvYXQgeikgPSAwOwotICAgIHZpcnR1
YWwgdm9pZCB2ZXJ0ZXhBdHRyaWIzZnYoR0NHTHVpbnQgaW5kZXgsIGNvbnN0IEdDR0xmbG9hdCog
dmFsdWVzKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHZlcnRleEF0dHJpYjNmdihHQ0dMdWludCBp
bmRleCwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0LCAzPiB2YWx1ZXMpID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgdmVydGV4QXR0cmliNGYoR0NHTHVpbnQgaW5kZXgsIEdDR0xmbG9hdCB4LCBHQ0dM
ZmxvYXQgeSwgR0NHTGZsb2F0IHosIEdDR0xmbG9hdCB3KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lk
IHZlcnRleEF0dHJpYjRmdihHQ0dMdWludCBpbmRleCwgY29uc3QgR0NHTGZsb2F0KiB2YWx1ZXMp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdmVydGV4QXR0cmliNGZ2KEdDR0x1aW50IGluZGV4LCBH
Q0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQsIDQ+IHZhbHVlcykgPSAwOwogCiAgICAgdmlydHVhbCB2
b2lkIHZlcnRleEF0dHJpYlBvaW50ZXIoR0NHTHVpbnQgaW5kZXgsIEdDR0xpbnQgc2l6ZSwgR0NH
TGVudW0gdHlwZSwgR0NHTGJvb2xlYW4gbm9ybWFsaXplZCwgR0NHTHNpemVpIHN0cmlkZSwgR0NH
TGludHB0ciBvZmZzZXQpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCB2aWV3cG9ydChHQ0dMaW50
IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KSA9IDA7CiAK
ICAgICB2aXJ0dWFsIHZvaWQgYnVmZmVyRGF0YShHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaXB0
ciwgR0NHTGVudW0gdXNhZ2UpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgYnVmZmVyRGF0YShHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xzaXplaXB0ciwgY29uc3QgR0NHTHZvaWQqIGRhdGEsIEdDR0xlbnVt
IHVzYWdlKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGJ1ZmZlclN1YkRhdGEoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMaW50cHRyIG9mZnNldCwgR0NHTHNpemVpcHRyLCBjb25zdCBHQ0dMdm9pZCogZGF0
YSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBidWZmZXJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NH
TFNwYW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEsIEdDR0xlbnVtIHVzYWdlKSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIGJ1ZmZlclN1YkRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50cHRyIG9mZnNl
dCwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEpID0gMDsKIAogICAgIHZpcnR1YWwgdm9p
ZCByZWFkUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xz
aXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHZvaWQqIGRh
dGEpID0gMDsKIAotICAgIHZpcnR1YWwgYm9vbCB0ZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwg
R0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVu
dW0gdHlwZSwgY29uc3QgR0NHTHZvaWQqIHBpeGVscykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB0
ZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zm
c2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwg
R0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBjb25zdCBHQ0dMdm9pZCogcGl4ZWxzKSA9
IDA7CisgICAgdmlydHVhbCBib29sIHRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50
IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6
ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBl
LCAgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IHBpeGVscykgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCB0ZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4
b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdo
dCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9p
ZD4gcGl4ZWxzKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgZHJhd0FycmF5c0luc3RhbmNlZChH
Q0dMZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xzaXplaSBw
cmltY291bnQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZHJhd0VsZW1lbnRzSW5zdGFuY2VkKEdD
R0xlbnVtIG1vZGUsIEdDR0xzaXplaSBjb3VudCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBv
ZmZzZXQsIEdDR0xzaXplaSBwcmltY291bnQpID0gMDsKQEAgLTExMjUsOCArMTEyNSw4IEBAIHB1
YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBibGl0RnJhbWVidWZmZXIoR0NHTGludCBzcmNYMCwg
R0NHTGludCBzcmNZMCwgR0NHTGludCBzcmNYMSwgR0NHTGludCBzcmNZMSwgR0NHTGludCBkc3RY
MCwgR0NHTGludCBkc3RZMCwgR0NHTGludCBkc3RYMSwgR0NHTGludCBkc3RZMSwgR0NHTGJpdGZp
ZWxkIG1hc2ssIEdDR0xlbnVtIGZpbHRlcikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBmcmFtZWJ1
ZmZlclRleHR1cmVMYXllcihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGF0dGFjaG1lbnQsIFBs
YXRmb3JtR0xPYmplY3QgdGV4dHVyZSwgR0NHTGludCBsZXZlbCwgR0NHTGludCBsYXllcikgPSAw
OwotICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlRnJhbWVidWZmZXIoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMc2l6ZWkgbnVtQXR0YWNobWVudHMsIGNvbnN0IEdDR0xlbnVtKiBhdHRhY2htZW50cykg
PSAwOwotICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlU3ViRnJhbWVidWZmZXIoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMc2l6ZWkgbnVtQXR0YWNobWVudHMsIGNvbnN0IEdDR0xlbnVtKiBhdHRhY2ht
ZW50cywgR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhl
aWdodCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlRnJhbWVidWZmZXIoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4gYXR0YWNobWVudHMpID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZVN1YkZyYW1lYnVmZmVyKEdDR0xlbnVtIHRhcmdldCwg
R0NHTFNwYW48Y29uc3QgR0NHTGVudW0+IGF0dGFjaG1lbnRzLCBHQ0dMaW50IHgsIEdDR0xpbnQg
eSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIHJlYWRCdWZmZXIoR0NHTGVudW0gc3JjKSA9IDA7CiAKICAgICAvLyBnZXRJbnRlcm5hbEZv
cm1hdFBhcmFtZXRlcgpAQCAtMTE0OCwyOCArMTE0OCwyOCBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIHVuaWZvcm0ydWkoR0NHTGludCBsb2NhdGlvbiwgR0NHTHVpbnQgdjAsIEdDR0x1aW50
IHYxKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHVuaWZvcm0zdWkoR0NHTGludCBsb2NhdGlvbiwg
R0NHTHVpbnQgdjAsIEdDR0x1aW50IHYxLCBHQ0dMdWludCB2MikgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCB1bmlmb3JtNHVpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0x1aW50IHYwLCBHQ0dMdWludCB2
MSwgR0NHTHVpbnQgdjIsIEdDR0x1aW50IHYzKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHVuaWZv
cm0xdWl2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0x1aW50KiBkYXRhLCBHQ0dMdWludCBz
cmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB1bmlm
b3JtMnVpdihHQ0dMaW50IGxvY2F0aW9uLCBjb25zdCBHQ0dMdWludCogZGF0YSwgR0NHTHVpbnQg
c3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdW5p
Zm9ybTN1aXYoR0NHTGludCBsb2NhdGlvbiwgY29uc3QgR0NHTHVpbnQqIGRhdGEsIEdDR0x1aW50
IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHVu
aWZvcm00dWl2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0x1aW50KiBkYXRhLCBHQ0dMdWlu
dCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB1
bmlmb3JtTWF0cml4MngzZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3Nl
LCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3Jj
TGVuZ3RoKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHVuaWZvcm1NYXRyaXgzeDJmdihHQ0dMaW50
IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwg
R0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpID0gMDsKLSAgICB2aXJ0dWFs
IHZvaWQgdW5pZm9ybU1hdHJpeDJ4NGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRy
YW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1
aW50IHNyY0xlbmd0aCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtTWF0cml4NHgyZnYo
R0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHQ0dMZmxvYXQq
IGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKSA9IDA7Ci0gICAg
dmlydHVhbCB2b2lkIHVuaWZvcm1NYXRyaXgzeDRmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9v
bGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0
LCBHQ0dMdWludCBzcmNMZW5ndGgpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybU1hdHJp
eDR4M2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NH
TGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkgPSAw
OworICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtMXVpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bh
bjxjb25zdCBHQ0dMdWludD4gZGF0YSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtMnVp
dihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdWludD4gZGF0YSkgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtM3VpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxj
b25zdCBHQ0dMdWludD4gZGF0YSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtNHVpdihH
Q0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdWludD4gZGF0YSkgPSAwOworICAg
IHZpcnR1YWwgdm9pZCB1bmlmb3JtTWF0cml4MngzZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJv
b2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEpID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgdW5pZm9ybU1hdHJpeDN4MmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xi
b29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiBkYXRhKSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIHVuaWZvcm1NYXRyaXgyeDRmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dM
Ym9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gZGF0YSkgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtTWF0cml4NHgyZnYoR0NHTGludCBsb2NhdGlvbiwgR0NH
TGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybU1hdHJpeDN4NGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdD
R0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiBkYXRhKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIHVuaWZvcm1NYXRyaXg0eDNmdihHQ0dMaW50IGxvY2F0aW9uLCBH
Q0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gZGF0YSkgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCB2ZXJ0ZXhBdHRyaWJJNGkoR0NHTHVpbnQgaW5kZXgsIEdDR0xp
bnQgeCwgR0NHTGludCB5LCBHQ0dMaW50IHosIEdDR0xpbnQgdykgPSAwOwotICAgIHZpcnR1YWwg
dm9pZCB2ZXJ0ZXhBdHRyaWJJNGl2KEdDR0x1aW50IGluZGV4LCBjb25zdCBHQ0dMaW50KiB2YWx1
ZXMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdmVydGV4QXR0cmliSTRpdihHQ0dMdWludCBpbmRl
eCwgR0NHTFNwYW48Y29uc3QgR0NHTGludCwgND4gdmFsdWVzKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIHZlcnRleEF0dHJpYkk0dWkoR0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50IHgsIEdDR0x1aW50
IHksIEdDR0x1aW50IHosIEdDR0x1aW50IHcpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdmVydGV4
QXR0cmliSTR1aXYoR0NHTHVpbnQgaW5kZXgsIGNvbnN0IEdDR0x1aW50KiB2YWx1ZXMpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgdmVydGV4QXR0cmliSTR1aXYoR0NHTHVpbnQgaW5kZXgsIEdDR0xT
cGFuPGNvbnN0IEdDR0x1aW50LCA0PiB2YWx1ZXMpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdmVy
dGV4QXR0cmliSVBvaW50ZXIoR0NHTHVpbnQgaW5kZXgsIEdDR0xpbnQgc2l6ZSwgR0NHTGVudW0g
dHlwZSwgR0NHTHNpemVpIHN0cmlkZSwgR0NHTGludHB0ciBvZmZzZXQpID0gMDsKIAogICAgIHZp
cnR1YWwgdm9pZCBkcmF3UmFuZ2VFbGVtZW50cyhHQ0dMZW51bSBtb2RlLCBHQ0dMdWludCBzdGFy
dCwgR0NHTHVpbnQgZW5kLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRw
dHIgb2Zmc2V0KSA9IDA7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZHJhd0J1ZmZlcnMoR0NHTHNpemVp
IG4sIGNvbnN0IEdDR0xlbnVtKiBidWZzKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGNsZWFyQnVm
ZmVyaXYoR0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50IGRyYXdidWZmZXIsIGNvbnN0IEdDR0xpbnQq
IHZhbHVlcywgR0NHTHVpbnQgc3JjT2Zmc2V0KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGNsZWFy
QnVmZmVydWl2KEdDR0xlbnVtIGJ1ZmZlciwgR0NHTGludCBkcmF3YnVmZmVyLCBjb25zdCBHQ0dM
dWludCogdmFsdWVzLCBHQ0dMdWludCBzcmNPZmZzZXQpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQg
Y2xlYXJCdWZmZXJmdihHQ0dMZW51bSBidWZmZXIsIEdDR0xpbnQgZHJhd2J1ZmZlciwgY29uc3Qg
R0NHTGZsb2F0KiB2YWx1ZXMsIEdDR0x1aW50IHNyY09mZnNldCkgPSAwOworICAgIHZpcnR1YWwg
dm9pZCBkcmF3QnVmZmVycyhHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4gYnVmcykgPSAwOworICAg
IHZpcnR1YWwgdm9pZCBjbGVhckJ1ZmZlcml2KEdDR0xlbnVtIGJ1ZmZlciwgR0NHTGludCBkcmF3
YnVmZmVyLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50PiB2YWx1ZXMpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgY2xlYXJCdWZmZXJ1aXYoR0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50IGRyYXdidWZmZXIs
IEdDR0xTcGFuPGNvbnN0IEdDR0x1aW50PiB2YWx1ZXMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
Y2xlYXJCdWZmZXJmdihHQ0dMZW51bSBidWZmZXIsIEdDR0xpbnQgZHJhd2J1ZmZlciwgR0NHTFNw
YW48Y29uc3QgR0NHTGZsb2F0PiB2YWx1ZXMpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY2xlYXJC
dWZmZXJmaShHQ0dMZW51bSBidWZmZXIsIEdDR0xpbnQgZHJhd2J1ZmZlciwgR0NHTGZsb2F0IGRl
cHRoLCBHQ0dMaW50IHN0ZW5jaWwpID0gMDsKIAogICAgIHZpcnR1YWwgUGxhdGZvcm1HTE9iamVj
dCBjcmVhdGVRdWVyeSgpID0gMDsKQEAgLTEyMjEsMjAgKzEyMjEsNiBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCBTdHJpbmcgZ2V0QWN0aXZlVW5pZm9ybUJsb2NrTmFtZShQbGF0Zm9ybUdMT2JqZWN0
IHByb2dyYW0sIEdDR0x1aW50IHVuaWZvcm1CbG9ja0luZGV4KSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIHVuaWZvcm1CbG9ja0JpbmRpbmcoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMdWlu
dCB1bmlmb3JtQmxvY2tJbmRleCwgR0NHTHVpbnQgdW5pZm9ybUJsb2NrQmluZGluZykgPSAwOwog
Ci0gICAgdmlydHVhbCB2b2lkIHVuaWZvcm0xZnYoR0NHTGludCBsb2NhdGlvbiwgY29uc3QgR0NH
TGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkgPSAw
OwotICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtMmZ2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdD
R0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpID0g
MDsKLSAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybTNmdihHQ0dMaW50IGxvY2F0aW9uLCBjb25zdCBH
Q0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKSA9
IDA7Ci0gICAgdmlydHVhbCB2b2lkIHVuaWZvcm00ZnYoR0NHTGludCBsb2NhdGlvbiwgY29uc3Qg
R0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkg
PSAwOwotCi0gICAgdmlydHVhbCB2b2lkIHVuaWZvcm0xaXYoR0NHTGludCBsb2NhdGlvbiwgY29u
c3QgR0NHTGludCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgp
ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybTJpdihHQ0dMaW50IGxvY2F0aW9uLCBjb25z
dCBHQ0dMaW50KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkg
PSAwOwotICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtM2l2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0
IEdDR0xpbnQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKSA9
IDA7Ci0gICAgdmlydHVhbCB2b2lkIHVuaWZvcm00aXYoR0NHTGludCBsb2NhdGlvbiwgY29uc3Qg
R0NHTGludCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpID0g
MDsKLQotICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtTWF0cml4MmZ2KEdDR0xpbnQgbG9jYXRpb24s
IEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBz
cmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB1bmlm
b3JtTWF0cml4M2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29u
c3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0
aCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtTWF0cml4NGZ2KEdDR0xpbnQgbG9jYXRp
b24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWlu
dCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkgPSAwOwotCiAgICAgdmlydHVhbCB2b2lk
IGdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2KEdDR0x1aW50IHByb2dyYW0sIEdDR0x1aW50IHVuaWZv
cm1CbG9ja0luZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGludD4gcGFyYW1zKSA9
IDA7CiAKICAgICAvLyBPdGhlciBmdW5jdGlvbnMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5cGVzR0wuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXNHTC5oCmluZGV4IGU3YzY5YjI4ZGNlNDY1ODI1
NzU3NzMzMzI1YjhmNDRkZjI3MjA3YjkuLjA2MmU1NTY3YTJjMTlkYjdiMjgxOTFiYWE4NWQzNzdj
YzAxNmM0ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzVHlwZXNHTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzVHlwZXNHTC5oCkBAIC02OCw2ICs2OCwxMCBAQCBzdHJ1Y3QgR0NHTFNwYW4gewogICAg
IEdDR0xTcGFuKFQgKCZhcnJheSlbRXh0ZW50XSkKICAgICAgICAgOiBkYXRhKGFycmF5KQogICAg
IHsgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+CisgICAgR0NHTFNwYW4oY29uc3QgR0NHTFNw
YW48VSwgRXh0ZW50PiYgb3RoZXIsIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19jb252ZXJ0aWJs
ZV92PFUoKilbXSwgVCgqKVtdPiwgbnVsbHB0cl90PiA9IG51bGxwdHIpCisgICAgICAgIDogZGF0
YShvdGhlci5kYXRhKQorICAgIHsgfQogICAgIFQmIG9wZXJhdG9yW10oc2l6ZV90IGkpIHsgUkVM
RUFTRV9BU1NFUlQoZGF0YSAmJiBpIDwgYnVmU2l6ZSk7IHJldHVybiBkYXRhW2ldOyB9CiAgICAg
VCYgb3BlcmF0b3IqKCkgeyBSRUxFQVNFX0FTU0VSVChkYXRhICYmIGJ1ZlNpemUpOyByZXR1cm4g
KmRhdGE7IH0KICAgICBUKiBkYXRhOwpAQCAtODAsMTEgKzg0LDE4IEBAIHN0cnVjdCBHQ0dMU3Bh
bjxULCBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpPiB7CiAgICAgICAgIDogZGF0
YShhcnJheSkKICAgICAgICAgLCBidWZTaXplKGJ1ZlNpemVfKQogICAgIHsgfQotICAgIHRlbXBs
YXRlPHNpemVfdCBTej4gR0NHTFNwYW4oVCAoJmFycmF5KVtTel0pCisgICAgdGVtcGxhdGU8c2l6
ZV90IFN6PgorICAgIEdDR0xTcGFuKFQgKCZhcnJheSlbU3pdKQogICAgICAgICA6IGRhdGEoYXJy
YXkpCiAgICAgICAgICwgYnVmU2l6ZShTeikKICAgICB7IH0KLSAgICBHQ0dMU3BhbihXVEY6OlZl
Y3RvcjxUPiYgYXJyYXkpCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVSwgc2l6ZV90IFVFeHRlbnQ+
CisgICAgR0NHTFNwYW4oY29uc3QgR0NHTFNwYW48VSwgVUV4dGVudD4mIG90aGVyLCBzdGQ6OmVu
YWJsZV9pZl90PHN0ZDo6aXNfY29udmVydGlibGVfdjxVKCopW10sIFQoKilbXT4sIG51bGxwdHJf
dD4gPSBudWxscHRyKQorICAgICAgICA6IGRhdGEob3RoZXIuZGF0YSkKKyAgICAgICAgLCBidWZT
aXplKG90aGVyLmJ1ZlNpemUpCisgICAgeyB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVSwgc2l6
ZV90IGlubGluZUNhcGFjaXR5PgorICAgIEdDR0xTcGFuKFdURjo6VmVjdG9yPFUsIGlubGluZUNh
cGFjaXR5PiYgYXJyYXksIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19jb252ZXJ0aWJsZV92PFUo
KilbXSwgVCgqKVtdPiwgbnVsbHB0cl90PiA9IG51bGxwdHIpCiAgICAgICAgIDogZGF0YShhcnJh
eS5kYXRhKCkpCiAgICAgICAgICwgYnVmU2l6ZShhcnJheS5zaXplKCkpCiAgICAgeyB9CkBAIC05
NCw2ICsxMDUsNTQgQEAgc3RydWN0IEdDR0xTcGFuPFQsIHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6
ZV90Pjo6bWF4KCk+IHsKICAgICBjb25zdCBzaXplX3QgYnVmU2l6ZTsKIH07CiAKK3RlbXBsYXRl
PD4KK3N0cnVjdCBHQ0dMU3BhbjxHQ0dMdm9pZD4geworICAgIEdDR0xTcGFuKEdDR0x2b2lkKiBh
cnJheSwgc2l6ZV90IGJ1ZlNpemVfKQorICAgICAgICA6IGRhdGEoYXJyYXkpCisgICAgICAgICwg
YnVmU2l6ZShidWZTaXplXykKKyAgICB7IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVLCBzaXpl
X3QgU3o+CisgICAgR0NHTFNwYW4oVSAoJmFycmF5KVtTel0pCisgICAgICAgIDogZGF0YShhcnJh
eSkKKyAgICAgICAgLCBidWZTaXplKFN6ICogc2l6ZW9mKFUpKQorICAgIHsgfQorICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFUsIHNpemVfdCBVRXh0ZW50PgorICAgIEdDR0xTcGFuKGNvbnN0IEdDR0xT
cGFuPFUsIFVFeHRlbnQ+JiBvdGhlcikKKyAgICAgICAgOiBkYXRhKG90aGVyLmRhdGEpCisgICAg
ICAgICwgYnVmU2l6ZShvdGhlci5idWZTaXplICogc2l6ZW9mKFUpKQorICAgIHsgfQorICAgIEdD
R0x2b2lkKiBkYXRhOworICAgIGNvbnN0IHNpemVfdCBidWZTaXplOworfTsKKwordGVtcGxhdGU8
Pgorc3RydWN0IEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiB7CisgICAgR0NHTFNwYW4oY29uc3Qg
R0NHTHZvaWQqIGFycmF5LCBzaXplX3QgYnVmU2l6ZV8pCisgICAgICAgIDogZGF0YShhcnJheSkK
KyAgICAgICAgLCBidWZTaXplKGJ1ZlNpemVfKQorICAgIHsgfQorICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFUsIHNpemVfdCBTej4KKyAgICBHQ0dMU3BhbihVICgmYXJyYXkpW1N6XSkKKyAgICAgICAg
OiBkYXRhKGFycmF5KQorICAgICAgICAsIGJ1ZlNpemUoU3ogKiBzaXplb2YoVSkpCisgICAgeyB9
CisgICAgR0NHTFNwYW4oY29uc3QgR0NHTFNwYW48R0NHTHZvaWQ+JiBvdGhlcikKKyAgICAgICAg
OiBkYXRhKG90aGVyLmRhdGEpCisgICAgICAgICwgYnVmU2l6ZShvdGhlci5idWZTaXplKQorICAg
IHsgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUsIHNpemVfdCBVRXh0ZW50PgorICAgIEdDR0xT
cGFuKGNvbnN0IEdDR0xTcGFuPFUsIFVFeHRlbnQ+JiBvdGhlcikKKyAgICAgICAgOiBkYXRhKG90
aGVyLmRhdGEpCisgICAgICAgICwgYnVmU2l6ZShvdGhlci5idWZTaXplICogc2l6ZW9mKFUpKQor
ICAgIHsgfQorICAgIEdDR0xTcGFuKGludHB0cl90IG9mZnNldCkKKyAgICAgICAgOiBkYXRhKHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTHZvaWQqPihvZmZzZXQpKQorICAgICAgICAsIGJ1ZlNp
emUoMCkKKyAgICB7IH0KKyAgICBjb25zdCBHQ0dMdm9pZCogZGF0YTsKKyAgICBjb25zdCBzaXpl
X3QgYnVmU2l6ZTsKK307CisKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBOPgogR0NHTFNw
YW4oVCAoJilbTl0pIC0+IEdDR0xTcGFuPFQsIE4+OwogCkBAIC0xMDUsMyArMTY0LDkgQEAgR0NH
TFNwYW48VD4gbWFrZUdDR0xTcGFuKFQqIGRhdGEsIHNpemVfdCBjb3VudCkKIHsKICAgICByZXR1
cm4gR0NHTFNwYW48VD4geyBkYXRhLCBjb3VudCB9OwogfQorCit0ZW1wbGF0ZTxzaXplX3QgRXh0
ZW50LCB0eXBlbmFtZSBUPgorR0NHTFNwYW48VCwgRXh0ZW50PiBtYWtlR0NHTFNwYW4oVCogZGF0
YSkKK3sKKyAgICByZXR1cm4gR0NHTFNwYW48VCwgRXh0ZW50PiB7IGRhdGEgfTsKK30KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNH
TEFOR0xFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVu
c2lvbnNHTEFOR0xFLmNwcAppbmRleCA0ZDAyNWI5OTM0MjI3NzZiOWI1ZjRhYWJjMzlhMGM3ODkx
OTQwYTk5Li4xMDcxM2FjNTZkMGRlY2FkOTFiYzVjYjE2NzQxYWIyOWI0NWFlNGQ1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xB
TkdMRS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0
ZW5zaW9uc0dMQU5HTEUuY3BwCkBAIC0yMjcsMTIgKzIyNywxMiBAQCBib29sIEV4dGVuc2lvbnNH
TEFOR0xFOjpzdXBwb3J0c0V4dGVuc2lvbihjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAgcmV0dXJu
IG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucyhuYW1lKSB8fCBtX3JlcXVlc3RhYmxlRXh0
ZW5zaW9ucy5jb250YWlucyhuYW1lKTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6ZHJh
d0J1ZmZlcnNFWFQoR0NHTHNpemVpIG4sIGNvbnN0IEdDR0xlbnVtKiBidWZzKQordm9pZCBFeHRl
bnNpb25zR0xBTkdMRTo6ZHJhd0J1ZmZlcnNFWFQoR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+IGJ1
ZnMpCiB7CiAgICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBnbDo6RHJhd0J1ZmZlcnNFWFQobiwgYnVmcyk7CisgICAgZ2w6OkRy
YXdCdWZmZXJzRVhUKGJ1ZnMuYnVmU2l6ZSwgYnVmcy5kYXRhKTsKIH0KIAogdm9pZCBFeHRlbnNp
b25zR0xBTkdMRTo6ZHJhd0FycmF5c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMaW50IGZp
cnN0LCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xzaXplaSBwcmltY291bnQpCkBAIC0yODYsMTQgKzI4
NiwxNCBAQCB2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpyZWFkUGl4ZWxzUm9idXN0QU5HTEUoaW50
IHgsIGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDRwogICAgIGdsOjpSZWFkUGl4ZWxzUm9idXN0
QU5HTEUoeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBidWZTaXplLCBsZW5ndGgs
IGNvbHVtbnMsIHJvd3MsIHBpeGVscyk7CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OnRl
eEltYWdlMkRSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIGludCBsZXZlbCwgaW50IGludGVy
bmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIGludCBib3JkZXIs
IEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0
IHZvaWQgKnBpeGVscykKK3ZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OnRleEltYWdlMkRSb2J1c3RB
TkdMRShHQ0dMZW51bSB0YXJnZXQsIGludCBsZXZlbCwgaW50IGludGVybmFsZm9ybWF0LCBHQ0dM
c2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1h
dCwgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IHBpeGVscykKIHsKICAg
ICBpZiAoIW1fY29udGV4dC0+bV9pc0ZvcldlYkdMMikKICAgICAgICAgaW50ZXJuYWxmb3JtYXQg
PSBhZGp1c3RXZWJHTDFUZXh0dXJlSW50ZXJuYWxGb3JtYXQoaW50ZXJuYWxmb3JtYXQsIGZvcm1h
dCwgdHlwZSk7CiAgICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBnbDo6VGV4SW1hZ2UyRFJvYnVzdEFOR0xFKHRhcmdldCwgbGV2
ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIsIGZvcm1hdCwgdHlwZSwg
YnVmU2l6ZSwgcGl4ZWxzKTsKKyAgICBnbDo6VGV4SW1hZ2UyRFJvYnVzdEFOR0xFKHRhcmdldCwg
bGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIsIGZvcm1hdCwgdHlw
ZSwgcGl4ZWxzLmJ1ZlNpemUsIHBpeGVscy5kYXRhKTsKIH0KIAogdm9pZCBFeHRlbnNpb25zR0xB
TkdMRTo6dGV4UGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVt
IHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGZsb2F0ICpwYXJhbXMpCkBAIC0z
MTIsNjQgKzMxMiw2NCBAQCB2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjp0ZXhQYXJhbWV0ZXJpdlJv
YnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbQogICAgIGdsOjpUZXhQYXJh
bWV0ZXJpdlJvYnVzdEFOR0xFKHRhcmdldCwgcG5hbWUsIGJ1ZlNpemUsIHBhcmFtcyk7CiB9CiAK
LXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OnRleFN1YkltYWdlMkRSb2J1c3RBTkdMRShHQ0dMZW51
bSB0YXJnZXQsIGludCBsZXZlbCwgaW50IHhvZmZzZXQsIGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkg
d2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwg
R0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IHZvaWQgKnBpeGVscykKK3ZvaWQgRXh0ZW5zaW9uc0dM
QU5HTEU6OnRleFN1YkltYWdlMkRSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIGludCBsZXZl
bCwgaW50IHhvZmZzZXQsIGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBo
ZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48Y29uc3QgR0NH
THZvaWQ+IHBpeGVscykKIHsKICAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50
KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGdsOjpUZXhTdWJJbWFnZTJEUm9idXN0QU5HTEUo
dGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0
eXBlLCBidWZTaXplLCBwaXhlbHMpOworICAgIGdsOjpUZXhTdWJJbWFnZTJEUm9idXN0QU5HTEUo
dGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0
eXBlLCBwaXhlbHMuYnVmU2l6ZSwgcGl4ZWxzLmRhdGEpOwogfQogCi12b2lkIEV4dGVuc2lvbnNH
TEFOR0xFOjpjb21wcmVzc2VkVGV4SW1hZ2UyRFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwg
aW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dM
c2l6ZWkgaGVpZ2h0LCBpbnQgYm9yZGVyLCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgY29uc3Qgdm9pZCogZGF0YSkKK3ZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmNvbXBy
ZXNzZWRUZXhJbWFnZTJEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWwsIEdD
R0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQs
IGludCBib3JkZXIsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lk
PiBkYXRhKQogewogICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgZ2w6OkNvbXByZXNzZWRUZXhJbWFnZTJEUm9idXN0QU5HTEUo
dGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGJvcmRlciwgaW1h
Z2VTaXplLCBidWZTaXplLCBkYXRhKTsKKyAgICBnbDo6Q29tcHJlc3NlZFRleEltYWdlMkRSb2J1
c3RBTkdMRSh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgYm9y
ZGVyLCBpbWFnZVNpemUsIGRhdGEuYnVmU2l6ZSwgZGF0YS5kYXRhKTsKICAgICBtX2NvbnRleHQt
Pm1fc3RhdGUudGV4dHVyZVNlZWRDb3VudC5hZGQobV9jb250ZXh0LT5tX3N0YXRlLmN1cnJlbnRC
b3VuZFRleHR1cmUoKSk7CiAKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Y29tcHJlc3Nl
ZFRleFN1YkltYWdlMkRSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIGludCBsZXZlbCwgaW50
IHhvZmZzZXQsIGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQs
IEdDR0xlbnVtIGZvcm1hdCwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTHNpemVpIGJ1ZlNpemUs
IGNvbnN0IHZvaWQqIGRhdGEpCit2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpjb21wcmVzc2VkVGV4
U3ViSW1hZ2UyRFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgaW50IGxldmVsLCBpbnQgeG9m
ZnNldCwgaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NH
TGVudW0gZm9ybWF0LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9p
ZD4gZGF0YSkKIHsKICAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIGdsOjpDb21wcmVzc2VkVGV4U3ViSW1hZ2UyRFJvYnVzdEFO
R0xFKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGZvcm1h
dCwgaW1hZ2VTaXplLCBidWZTaXplLCBkYXRhKTsKKyAgICBnbDo6Q29tcHJlc3NlZFRleFN1Yklt
YWdlMkRSb2J1c3RBTkdMRSh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwg
aGVpZ2h0LCBmb3JtYXQsIGltYWdlU2l6ZSwgZGF0YS5idWZTaXplLCBkYXRhLmRhdGEpOwogICAg
IG1fY29udGV4dC0+bV9zdGF0ZS50ZXh0dXJlU2VlZENvdW50LmFkZChtX2NvbnRleHQtPm1fc3Rh
dGUuY3VycmVudEJvdW5kVGV4dHVyZSgpKTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6
Y29tcHJlc3NlZFRleEltYWdlM0RSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIGludCBsZXZl
bCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhl
aWdodCwgR0NHTHNpemVpIGRlcHRoLCBpbnQgYm9yZGVyLCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3Qgdm9pZCogZGF0YSkKK3ZvaWQgRXh0ZW5zaW9uc0dMQU5H
TEU6OmNvbXByZXNzZWRUZXhJbWFnZTNEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBpbnQg
bGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXpl
aSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgaW50IGJvcmRlciwgR0NHTHNpemVpIGltYWdlU2l6
ZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEpCiB7CiAgICAgaWYgKCFtX2NvbnRleHQt
Pm1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBnbDo6Q29tcHJl
c3NlZFRleEltYWdlM0RSb2J1c3RBTkdMRSh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwg
d2lkdGgsIGhlaWdodCwgZGVwdGgsIGJvcmRlciwgaW1hZ2VTaXplLCBidWZTaXplLCBkYXRhKTsK
KyAgICBnbDo6Q29tcHJlc3NlZFRleEltYWdlM0RSb2J1c3RBTkdMRSh0YXJnZXQsIGxldmVsLCBp
bnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGJvcmRlciwgaW1hZ2VTaXplLCBk
YXRhLmJ1ZlNpemUsIGRhdGEuZGF0YSk7CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmNv
bXByZXNzZWRUZXhTdWJJbWFnZTNEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBpbnQgbGV2
ZWwsIGludCB4b2Zmc2V0LCBpbnQgeW9mZnNldCwgaW50IHpvZmZzZXQsIEdDR0xzaXplaSB3aWR0
aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMZW51bSBmb3JtYXQsIEdD
R0xzaXplaSBpbWFnZVNpemUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCB2b2lkKiBkYXRhKQor
dm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Y29tcHJlc3NlZFRleFN1YkltYWdlM0RSb2J1c3RBTkdM
RShHQ0dMZW51bSB0YXJnZXQsIGludCBsZXZlbCwgaW50IHhvZmZzZXQsIGludCB5b2Zmc2V0LCBp
bnQgem9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkg
ZGVwdGgsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTFNwYW48Y29u
c3QgR0NHTHZvaWQ+IGRhdGEpCiB7CiAgICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3Vy
cmVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBnbDo6Q29tcHJlc3NlZFRleFN1YkltYWdl
M0RSb2J1c3RBTkdMRSh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB6b2Zmc2V0LCB3
aWR0aCwgaGVpZ2h0LCBkZXB0aCwgZm9ybWF0LCBpbWFnZVNpemUsIGJ1ZlNpemUsIGRhdGEpOwor
ICAgIGdsOjpDb21wcmVzc2VkVGV4U3ViSW1hZ2UzRFJvYnVzdEFOR0xFKHRhcmdldCwgbGV2ZWws
IHhvZmZzZXQsIHlvZmZzZXQsIHpvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBmb3JtYXQs
IGltYWdlU2l6ZSwgZGF0YS5idWZTaXplLCBkYXRhLmRhdGEpOwogfQogCiAKLXZvaWQgRXh0ZW5z
aW9uc0dMQU5HTEU6OnRleEltYWdlM0RSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIGludCBs
ZXZlbCwgaW50IGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWln
aHQsIEdDR0xzaXplaSBkZXB0aCwgaW50IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51
bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3Qgdm9pZCAqcGl4ZWxzKQordm9pZCBFeHRl
bnNpb25zR0xBTkdMRTo6dGV4SW1hZ2UzRFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgaW50
IGxldmVsLCBpbnQgaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhl
aWdodCwgR0NHTHNpemVpIGRlcHRoLCBpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xl
bnVtIHR5cGUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBwaXhlbHMpCiB7CiAgICAgaWYgKCFt
X2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBn
bDo6VGV4SW1hZ2UzRFJvYnVzdEFOR0xFKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3
aWR0aCwgaGVpZ2h0LCBkZXB0aCwgYm9yZGVyLCBmb3JtYXQsIHR5cGUsIGJ1ZlNpemUsIHBpeGVs
cyk7CisgICAgZ2w6OlRleEltYWdlM0RSb2J1c3RBTkdMRSh0YXJnZXQsIGxldmVsLCBpbnRlcm5h
bGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGJvcmRlciwgZm9ybWF0LCB0eXBlLCBwaXhl
bHMuYnVmU2l6ZSwgcGl4ZWxzLmRhdGEpOwogfQogCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjp0
ZXhTdWJJbWFnZTNEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWwsIGludCB4
b2Zmc2V0LCBpbnQgeW9mZnNldCwgaW50IHpvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNp
emVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5
cGUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCB2b2lkICpwaXhlbHMpCit2b2lkIEV4dGVuc2lv
bnNHTEFOR0xFOjp0ZXhTdWJJbWFnZTNEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBpbnQg
bGV2ZWwsIGludCB4b2Zmc2V0LCBpbnQgeW9mZnNldCwgaW50IHpvZmZzZXQsIEdDR0xzaXplaSB3
aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMZW51bSBmb3JtYXQs
IEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBwaXhlbHMpCiB7CiAgICAg
aWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBnbDo6VGV4U3ViSW1hZ2UzRFJvYnVzdEFOR0xFKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQs
IHlvZmZzZXQsIHpvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBmb3JtYXQsIHR5cGUsIGJ1
ZlNpemUsIHBpeGVscyk7CisgICAgZ2w6OlRleFN1YkltYWdlM0RSb2J1c3RBTkdMRSh0YXJnZXQs
IGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB6b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwg
Zm9ybWF0LCB0eXBlLCBwaXhlbHMuYnVmU2l6ZSwgcGl4ZWxzLmRhdGEpOwogfQogCiB2b2lkIEV4
dGVuc2lvbnNHTEFOR0xFOjpnZXRRdWVyeWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dM
aW50ICpwYXJhbXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuaAppbmRleCA1N2JiOTNiYzg0YzMzNTkwZmJj
ZjRiM2Y3YTFlYjVhNTVjNTkyNTZjLi5hZGFlYWY5MTAxYzE0ZjdkY2Q0Zjk5OTA4MjBmYTllYTI0
YmM4OTQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmds
ZS9FeHRlbnNpb25zR0xBTkdMRS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmgKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgog
ICAgIHZvaWQgaW5zZXJ0RXZlbnRNYXJrZXJFWFQoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBwdXNoR3JvdXBNYXJrZXJFWFQoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAg
dm9pZCBwb3BHcm91cE1hcmtlckVYVCh2b2lkKSBvdmVycmlkZTsKLSAgICB2b2lkIGRyYXdCdWZm
ZXJzRVhUKEdDR0xzaXplaSwgY29uc3QgR0NHTGVudW0qKSBvdmVycmlkZTsKKyAgICB2b2lkIGRy
YXdCdWZmZXJzRVhUKEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVtPikgb3ZlcnJpZGU7CiAKICAgICBT
dHJpbmcgZ2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKFBsYXRmb3JtR0xPYmplY3QpIG92
ZXJyaWRlOwogCkBAIC03NCwxNyArNzQsMTcgQEAgcHVibGljOgogCiAgICAgLy8gR0xfQU5HTEVf
cm9idXN0X2NsaWVudF9tZW1vcnkKICAgICB2b2lkIHJlYWRQaXhlbHNSb2J1c3RBTkdMRShHQ0dM
aW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dM
ZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkg
Kmxlbmd0aCwgR0NHTHNpemVpICpjb2x1bW5zLCBHQ0dMc2l6ZWkgKnJvd3MsIHZvaWQgKnBpeGVs
cykgb3ZlcnJpZGU7Ci0gICAgdm9pZCB0ZXhJbWFnZTJEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lk
dGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdD
R0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCB2b2lkICpwaXhlbHMpIG92ZXJy
aWRlOworICAgIHZvaWQgdGV4SW1hZ2UyRFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NH
TGludCBsZXZlbCwgR0NHTGludCBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dM
c2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0
eXBlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gcGl4ZWxzKSBvdmVycmlkZTsKICAgICB2b2lk
IHRleFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFt
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xmbG9hdCAqcGFyYW1zKSBvdmVycmlkZTsK
ICAgICB2b2lkIHRleFBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQgKnBhcmFtcykgb3Zl
cnJpZGU7Ci0gICAgdm9pZCB0ZXhTdWJJbWFnZTJEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTHNp
emVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5
cGUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCB2b2lkICpwaXhlbHMpIG92ZXJyaWRlOwotICAg
IHZvaWQgY29tcHJlc3NlZFRleEltYWdlMkRSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdD
R0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdD
R0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTHZvaWQqIGRhdGEpIG92ZXJyaWRlOwotICAgIHZvaWQg
Y29tcHJlc3NlZFRleFN1YkltYWdlMkRSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xp
bnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lk
dGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTHNpemVpIGltYWdlU2l6
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0x2b2lkKiBkYXRhKSBvdmVycmlkZTsKLSAg
ICB2b2lkIGNvbXByZXNzZWRUZXhJbWFnZTNEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBH
Q0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMc2l6
ZWkgaW1hZ2VTaXplLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTHZvaWQqIGRhdGEpIG92
ZXJyaWRlOwotICAgIHZvaWQgY29tcHJlc3NlZFRleFN1YkltYWdlM0RSb2J1c3RBTkdMRShHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zm
c2V0LCBHQ0dMaW50IHpvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwg
R0NHTHNpemVpIGRlcHRoLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdD
R0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMdm9pZCogZGF0YSkgb3ZlcnJpZGU7Ci0KLSAgICB2
b2lkIHRleEltYWdlM0RSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWws
IEdDR0xpbnQgaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdo
dCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMaW50IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dM
ZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3Qgdm9pZCAqcGl4ZWxzKSBvdmVycmlk
ZTsKLSAgICB2b2lkIHRleFN1YkltYWdlM0RSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdD
R0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMaW50IHpv
ZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRo
LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBjb25z
dCB2b2lkICpwaXhlbHMpIG92ZXJyaWRlOworICAgIHZvaWQgdGV4U3ViSW1hZ2UyRFJvYnVzdEFO
R0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dM
aW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0g
Zm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gcGl4ZWxzKSBv
dmVycmlkZTsKKyAgICB2b2lkIGNvbXByZXNzZWRUZXhJbWFnZTJEUm9idXN0QU5HTEUoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNp
emVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTHNpemVpIGlt
YWdlU2l6ZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEpIG92ZXJyaWRlOworICAgIHZv
aWQgY29tcHJlc3NlZFRleFN1YkltYWdlMkRSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdD
R0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkg
d2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTHNpemVpIGltYWdl
U2l6ZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEpIG92ZXJyaWRlOworICAgIHZvaWQg
Y29tcHJlc3NlZFRleEltYWdlM0RSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQg
bGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXpl
aSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGludCBib3JkZXIsIEdDR0xzaXplaSBpbWFn
ZVNpemUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRhKSBvdmVycmlkZTsKKyAgICB2b2lk
IGNvbXByZXNzZWRUZXhTdWJJbWFnZTNEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
aW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTGludCB6b2Zm
c2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwg
R0NHTGVudW0gZm9ybWF0LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMU3Bhbjxjb25zdCBHQ0dM
dm9pZD4gZGF0YSkgb3ZlcnJpZGU7CisKKyAgICB2b2lkIHRleEltYWdlM0RSb2J1c3RBTkdMRShH
Q0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgaW50ZXJuYWxmb3JtYXQsIEdD
R0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMaW50
IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bhbjxjb25zdCBH
Q0dMdm9pZD4gcGl4ZWxzKSBvdmVycmlkZTsKKyAgICB2b2lkIHRleFN1YkltYWdlM0RSb2J1c3RB
TkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NH
TGludCB5b2Zmc2V0LCBHQ0dMaW50IHpvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVp
IGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUs
IEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBwaXhlbHMpIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0
UXVlcnlpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlk
ZTsKICAgICB2b2lkIGdldFF1ZXJ5T2JqZWN0dWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1
aW50ICpwYXJhbXMpIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0QnVmZmVyUG9pbnRlcnZSb2J1c3RB
TkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
R0NHTHNpemVpICpsZW5ndGgsIHZvaWQgKipwYXJhbXMpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xB
TkdMRS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGlj
c0NvbnRleHRHTEFOR0xFLmNwcAppbmRleCBmZWIwYmViZWYzMTVmMGUxMzhiYTk5ZDYyZWI2Y2Zj
ZWQ1MTkzNjdhLi40YTBmZDU4NGI2OTI4ZjgxOWZjOTBkOTkyOWNhZjE0MDI4MTkwZWQ5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0Nv
bnRleHRHTEFOR0xFLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
bmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcApAQCAtMjEsNyArMjEsNyBAQAogICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQogICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCiAgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCkBAIC0zNjIsMTQgKzM2MiwxOSBA
QCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQo
R0NHTGVudW0gc2hhZGVyVHlwZSwgR0NHTAogICAgIGdsOjpHZXRTaGFkZXJQcmVjaXNpb25Gb3Jt
YXQoc2hhZGVyVHlwZSwgcHJlY2lzaW9uVHlwZSwgcmFuZ2UuZGF0YSwgcHJlY2lzaW9uKTsKIH0K
IAotYm9vbCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lk
dGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdD
R0xlbnVtIHR5cGUsIGNvbnN0IHZvaWQqIHBpeGVscykKK2Jvb2wgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OnRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51
bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dM
aW50IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bhbjxjb25z
dCBHQ0dMdm9pZD4gcGl4ZWxzKQogewotICAgIGlmICh3aWR0aCAmJiBoZWlnaHQgJiYgIXBpeGVs
cykgeworICAgIGlmICh3aWR0aCAmJiBoZWlnaHQgJiYgIXBpeGVscy5kYXRhKSB7CiAgICAgICAg
IHN5bnRoZXNpemVHTEVycm9yKElOVkFMSURfVkFMVUUpOwogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgfQorICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKIAotICAgIHRleEltYWdlMkREaXJlY3QodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3Jt
YXQsIHdpZHRoLCBoZWlnaHQsIGJvcmRlciwgZm9ybWF0LCB0eXBlLCBwaXhlbHMpOworICAgIGlm
ICghbV9pc0ZvcldlYkdMMiAmJiBtX2V4dGVuc2lvbnMpCisgICAgICAgIGludGVybmFsZm9ybWF0
ID0gbV9leHRlbnNpb25zLT5hZGp1c3RXZWJHTDFUZXh0dXJlSW50ZXJuYWxGb3JtYXQoaW50ZXJu
YWxmb3JtYXQsIGZvcm1hdCwgdHlwZSk7CisgICAgZ2w6OlRleEltYWdlMkRSb2J1c3RBTkdMRSh0
YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgYm9yZGVyLCBmb3Jt
YXQsIHR5cGUsIHBpeGVscy5idWZTaXplLCBwaXhlbHMuZGF0YSk7CisgICAgbV9zdGF0ZS50ZXh0
dXJlU2VlZENvdW50LmFkZChtX3N0YXRlLmN1cnJlbnRCb3VuZFRleHR1cmUoKSk7CiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKQEAgLTgzNSwyMCArODQwLDIwIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmJ1ZmZlckRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWlwdHIgc2l6ZSwg
R0NHCiAgICAgZ2w6OkJ1ZmZlckRhdGEodGFyZ2V0LCBzaXplLCAwLCB1c2FnZSk7CiB9CiAKLXZv
aWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmJ1ZmZlckRhdGEoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMc2l6ZWlwdHIgc2l6ZSwgY29uc3Qgdm9pZCogZGF0YSwgR0NHTGVudW0gdXNhZ2UpCit2b2lk
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpidWZmZXJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NH
TFNwYW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEsIEdDR0xlbnVtIHVzYWdlKQogewogICAgIGlmICgh
bWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGdsOjpCdWZmZXJE
YXRhKHRhcmdldCwgc2l6ZSwgZGF0YSwgdXNhZ2UpOworICAgIGdsOjpCdWZmZXJEYXRhKHRhcmdl
dCwgZGF0YS5idWZTaXplLCBkYXRhLmRhdGEsIHVzYWdlKTsKIH0KIAotdm9pZCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6YnVmZmVyU3ViRGF0YShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnRwdHIg
b2Zmc2V0LCBHQ0dMc2l6ZWlwdHIgc2l6ZSwgY29uc3Qgdm9pZCogZGF0YSkKK3ZvaWQgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmJ1ZmZlclN1YkRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50
cHRyIG9mZnNldCwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEpCiB7CiAgICAgaWYgKCFt
YWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZ2w6OkJ1ZmZlclN1
YkRhdGEodGFyZ2V0LCBvZmZzZXQsIHNpemUsIGRhdGEpOworICAgIGdsOjpCdWZmZXJTdWJEYXRh
KHRhcmdldCwgb2Zmc2V0LCBkYXRhLmJ1ZlNpemUsIGRhdGEuZGF0YSk7CiB9CiAKIHZvaWQqIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjptYXBCdWZmZXJSYW5nZShHQ0dMZW51bSB0YXJnZXQsIEdD
R0xpbnRwdHIgb2Zmc2V0LCBHQ0dMc2l6ZWlwdHIgbGVuZ3RoLCBHQ0dMYml0ZmllbGQgYWNjZXNz
KQpAQCAtMTUwMSwxMiArMTUwNiwxMiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1
bmlmb3JtMWYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGZsb2F0IHYwKQogICAgIGdsOjpVbmlmb3Jt
MWYobG9jYXRpb24sIHYwKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5p
Zm9ybTFmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgc2l6ZSwgY29uc3QgR0NHTGZsb2F0
KiBhcnJheSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0xZnYoR0NHTGlu
dCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiBhcnJheSkKIHsKICAgICBpZiAo
IW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBnbDo6VW5pZm9y
bTFmdihsb2NhdGlvbiwgc2l6ZSwgYXJyYXkpOworICAgIGdsOjpVbmlmb3JtMWZ2KGxvY2F0aW9u
LCBhcnJheS5idWZTaXplLCBhcnJheS5kYXRhKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6dW5pZm9ybTJmKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xmbG9hdCB2MCwgR0NHTGZs
b2F0IHYxKQpAQCAtMTUxNywxMyArMTUyMiwxMyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjp1bmlmb3JtMmYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGZsb2F0IHYwLCBHQ0dMZmxvYQog
ICAgIGdsOjpVbmlmb3JtMmYobG9jYXRpb24sIHYwLCB2MSk7CiB9CiAKLXZvaWQgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OnVuaWZvcm0yZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIHNp
emUsIGNvbnN0IEdDR0xmbG9hdCogYXJyYXkpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
Ojp1bmlmb3JtMmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4g
YXJyYXkpCiB7Ci0gICAgLy8gRklYTUU6IGxlbmd0aCBuZWVkcyB0byBiZSBhIG11bHRpcGxlIG9m
IDIuCisgICAgQVNTRVJUKCEoYXJyYXkuYnVmU2l6ZSAlIDIpKTsKICAgICBpZiAoIW1ha2VDb250
ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBnbDo6VW5pZm9ybTJmdihsb2Nh
dGlvbiwgc2l6ZSwgYXJyYXkpOworICAgIGdsOjpVbmlmb3JtMmZ2KGxvY2F0aW9uLCBhcnJheS5i
dWZTaXplIC8gMiwgYXJyYXkuZGF0YSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OnVuaWZvcm0zZihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMZmxvYXQgdjAsIEdDR0xmbG9hdCB2
MSwgR0NHTGZsb2F0IHYyKQpAQCAtMTUzNCwxMyArMTUzOSwxMyBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjp1bmlmb3JtM2YoR0NHTGludCBsb2NhdGlvbiwgR0NHTGZsb2F0IHYwLCBH
Q0dMZmxvYQogICAgIGdsOjpVbmlmb3JtM2YobG9jYXRpb24sIHYwLCB2MSwgdjIpOwogfQogCi12
b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtM2Z2KEdDR0xpbnQgbG9jYXRpb24s
IEdDR0xzaXplaSBzaXplLCBjb25zdCBHQ0dMZmxvYXQqIGFycmF5KQordm9pZCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6dW5pZm9ybTNmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25z
dCBHQ0dMZmxvYXQ+IGFycmF5KQogewotICAgIC8vIEZJWE1FOiBsZW5ndGggbmVlZHMgdG8gYmUg
YSBtdWx0aXBsZSBvZiAzLgorICAgIEFTU0VSVCghKGFycmF5LmJ1ZlNpemUgJSAzKSk7CiAgICAg
aWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZ2w6OlVu
aWZvcm0zZnYobG9jYXRpb24sIHNpemUsIGFycmF5KTsKKyAgICBnbDo6VW5pZm9ybTNmdihsb2Nh
dGlvbiwgYXJyYXkuYnVmU2l6ZSAvIDMsIGFycmF5LmRhdGEpOwogfQogCiB2b2lkIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjp1bmlmb3JtNGYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGZsb2F0IHYw
LCBHQ0dMZmxvYXQgdjEsIEdDR0xmbG9hdCB2MiwgR0NHTGZsb2F0IHYzKQpAQCAtMTU1MSwxMyAr
MTU1NiwxMyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtNGYoR0NHTGlu
dCBsb2NhdGlvbiwgR0NHTGZsb2F0IHYwLCBHQ0dMZmxvYQogICAgIGdsOjpVbmlmb3JtNGYobG9j
YXRpb24sIHYwLCB2MSwgdjIsIHYzKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6dW5pZm9ybTRmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgc2l6ZSwgY29uc3QgR0NH
TGZsb2F0KiBhcnJheSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm00ZnYo
R0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiBhcnJheSkKIHsKLSAg
ICAvLyBGSVhNRTogbGVuZ3RoIG5lZWRzIHRvIGJlIGEgbXVsdGlwbGUgb2YgNC4KKyAgICBBU1NF
UlQoIShhcnJheS5idWZTaXplICUgNCkpOwogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkp
CiAgICAgICAgIHJldHVybjsKIAotICAgIGdsOjpVbmlmb3JtNGZ2KGxvY2F0aW9uLCBzaXplLCBh
cnJheSk7CisgICAgZ2w6OlVuaWZvcm00ZnYobG9jYXRpb24sIGFycmF5LmJ1ZlNpemUgLyA0LCBh
cnJheS5kYXRhKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTFp
KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xpbnQgdjApCkBAIC0xNTY4LDEyICsxNTczLDEyIEBAIHZv
aWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0xaShHQ0dMaW50IGxvY2F0aW9uLCBH
Q0dMaW50IHYwKQogICAgIGdsOjpVbmlmb3JtMWkobG9jYXRpb24sIHYwKTsKIH0KIAotdm9pZCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTFpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dM
c2l6ZWkgc2l6ZSwgY29uc3QgR0NHTGludCogYXJyYXkpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjp1bmlmb3JtMWl2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xp
bnQ+IGFycmF5KQogewogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIGdsOjpVbmlmb3JtMWl2KGxvY2F0aW9uLCBzaXplLCBhcnJheSk7CisgICAg
Z2w6OlVuaWZvcm0xaXYobG9jYXRpb24sIGFycmF5LmJ1ZlNpemUsIGFycmF5LmRhdGEpOwogfQog
CiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMmkoR0NHTGludCBsb2NhdGlv
biwgR0NHTGludCB2MCwgR0NHTGludCB2MSkKQEAgLTE1ODQsMTMgKzE1ODksMTMgQEAgdm9pZCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTJpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xp
bnQgdjAsIEdDR0xpbnQgdjEKICAgICBnbDo6VW5pZm9ybTJpKGxvY2F0aW9uLCB2MCwgdjEpOwog
fQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMml2KEdDR0xpbnQgbG9j
YXRpb24sIEdDR0xzaXplaSBzaXplLCBjb25zdCBHQ0dMaW50KiBhcnJheSkKK3ZvaWQgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0yaXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48
Y29uc3QgR0NHTGludD4gYXJyYXkpCiB7Ci0gICAgLy8gRklYTUU6IGxlbmd0aCBuZWVkcyB0byBi
ZSBhIG11bHRpcGxlIG9mIDIuCisgICAgQVNTRVJUKCEoYXJyYXkuYnVmU2l6ZSAlIDIpKTsKICAg
ICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBnbDo6
VW5pZm9ybTJpdihsb2NhdGlvbiwgc2l6ZSwgYXJyYXkpOworICAgIGdsOjpVbmlmb3JtMml2KGxv
Y2F0aW9uLCBhcnJheS5idWZTaXplIC8gMiwgYXJyYXkuZGF0YSk7CiB9CiAKIHZvaWQgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0zaShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMaW50IHYw
LCBHQ0dMaW50IHYxLCBHQ0dMaW50IHYyKQpAQCAtMTYwMSwxMyArMTYwNiwxMyBAQCB2b2lkIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtM2koR0NHTGludCBsb2NhdGlvbiwgR0NHTGlu
dCB2MCwgR0NHTGludCB2MQogICAgIGdsOjpVbmlmb3JtM2kobG9jYXRpb24sIHYwLCB2MSwgdjIp
OwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtM2l2KEdDR0xpbnQg
bG9jYXRpb24sIEdDR0xzaXplaSBzaXplLCBjb25zdCBHQ0dMaW50KiBhcnJheSkKK3ZvaWQgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0zaXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNw
YW48Y29uc3QgR0NHTGludD4gYXJyYXkpCiB7Ci0gICAgLy8gRklYTUU6IGxlbmd0aCBuZWVkcyB0
byBiZSBhIG11bHRpcGxlIG9mIDMuCisgICAgQVNTRVJUKCEoYXJyYXkuYnVmU2l6ZSAlIDMpKTsK
ICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBn
bDo6VW5pZm9ybTNpdihsb2NhdGlvbiwgc2l6ZSwgYXJyYXkpOworICAgIGdsOjpVbmlmb3JtM2l2
KGxvY2F0aW9uLCBhcnJheS5idWZTaXplIC8gMywgYXJyYXkuZGF0YSk7CiB9CiAKIHZvaWQgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm00aShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMaW50
IHYwLCBHQ0dMaW50IHYxLCBHQ0dMaW50IHYyLCBHQ0dMaW50IHYzKQpAQCAtMTYxOCw0MCArMTYy
MywzOSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtNGkoR0NHTGludCBs
b2NhdGlvbiwgR0NHTGludCB2MCwgR0NHTGludCB2MQogICAgIGdsOjpVbmlmb3JtNGkobG9jYXRp
b24sIHYwLCB2MSwgdjIsIHYzKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
dW5pZm9ybTRpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgc2l6ZSwgY29uc3QgR0NHTGlu
dCogYXJyYXkpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtNGl2KEdDR0xp
bnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+IGFycmF5KQogewotICAgIC8vIEZJ
WE1FOiBsZW5ndGggbmVlZHMgdG8gYmUgYSBtdWx0aXBsZSBvZiA0LgorICAgIEFTU0VSVCghKGFy
cmF5LmJ1ZlNpemUgJSA0KSk7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgZ2w6OlVuaWZvcm00aXYobG9jYXRpb24sIHNpemUsIGFycmF5KTsK
KyAgICBnbDo6VW5pZm9ybTRpdihsb2NhdGlvbiwgYXJyYXkuYnVmU2l6ZSAvIDQsIGFycmF5LmRh
dGEpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4MmZ2
KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBzaXplLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2Us
IGNvbnN0IEdDR0xmbG9hdCogYXJyYXkpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1
bmlmb3JtTWF0cml4MmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwg
R0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiBhcnJheSkKIHsKLSAgICAvLyBGSVhNRTogbGVuZ3Ro
IG5lZWRzIHRvIGJlIGEgbXVsdGlwbGUgb2YgNC4KICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVu
dCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBnbDo6VW5pZm9ybU1hdHJpeDJmdihsb2NhdGlv
biwgc2l6ZSwgdHJhbnNwb3NlLCBhcnJheSk7CisgICAgZ2w6OlVuaWZvcm1NYXRyaXgyZnYobG9j
YXRpb24sIGFycmF5LmJ1ZlNpemUgLyA0LCB0cmFuc3Bvc2UsIGFycmF5LmRhdGEpOwogfQogCi12
b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4M2Z2KEdDR0xpbnQgbG9j
YXRpb24sIEdDR0xzaXplaSBzaXplLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xm
bG9hdCogYXJyYXkpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4
M2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29u
c3QgR0NHTGZsb2F0PiBhcnJheSkKIHsKLSAgICAvLyBGSVhNRTogbGVuZ3RoIG5lZWRzIHRvIGJl
IGEgbXVsdGlwbGUgb2YgOS4KKyAgICBBU1NFUlQoIShhcnJheS5idWZTaXplICUgOSkpOwogICAg
IGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGdsOjpV
bmlmb3JtTWF0cml4M2Z2KGxvY2F0aW9uLCBzaXplLCB0cmFuc3Bvc2UsIGFycmF5KTsKKyAgICBn
bDo6VW5pZm9ybU1hdHJpeDNmdihsb2NhdGlvbiwgYXJyYXkuYnVmU2l6ZSAvIDksIHRyYW5zcG9z
ZSwgYXJyYXkuZGF0YSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZv
cm1NYXRyaXg0ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIHNpemUsIEdDR0xib29sZWFu
IHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiBhcnJheSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXg0ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4g
dHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGFycmF5KQogewotICAgIC8vIEZJ
WE1FOiBsZW5ndGggbmVlZHMgdG8gYmUgYSBtdWx0aXBsZSBvZiAxNi4KKyAgICBBU1NFUlQoIShh
cnJheS5idWZTaXplICUgMTYpKTsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBnbDo6VW5pZm9ybU1hdHJpeDRmdihsb2NhdGlvbiwgc2l6ZSwg
dHJhbnNwb3NlLCBhcnJheSk7CisgICAgZ2w6OlVuaWZvcm1NYXRyaXg0ZnYobG9jYXRpb24sIGFy
cmF5LmJ1ZlNpemUgLyAxNiwgdHJhbnNwb3NlLCBhcnJheS5kYXRhKTsKIH0KIAogdm9pZCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6dXNlUHJvZ3JhbShQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0p
CkBAIC0xNjgwLDEyICsxNjg0LDEyIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZl
cnRleEF0dHJpYjFmKEdDR0x1aW50IGluZGV4LCBHQ0dMZmxvYXQgdjApCiAgICAgZ2w6OlZlcnRl
eEF0dHJpYjFmKGluZGV4LCB2MCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OnZlcnRleEF0dHJpYjFmdihHQ0dMdWludCBpbmRleCwgY29uc3QgR0NHTGZsb2F0KiBhcnJheSkK
K3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYjFmdihHQ0dMdWludCBp
bmRleCwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0LCAxPiBhcnJheSkKIHsKICAgICBpZiAoIW1h
a2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBnbDo6VmVydGV4QXR0
cmliMWZ2KGluZGV4LCBhcnJheSk7CisgICAgZ2w6OlZlcnRleEF0dHJpYjFmdihpbmRleCwgYXJy
YXkuZGF0YSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJp
YjJmKEdDR0x1aW50IGluZGV4LCBHQ0dMZmxvYXQgdjAsIEdDR0xmbG9hdCB2MSkKQEAgLTE2OTYs
MTIgKzE3MDAsMTIgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmli
MmYoR0NHTHVpbnQgaW5kZXgsIEdDR0xmbG9hdCB2MCwgR0NHTGYKICAgICBnbDo6VmVydGV4QXR0
cmliMmYoaW5kZXgsIHYwLCB2MSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OnZlcnRleEF0dHJpYjJmdihHQ0dMdWludCBpbmRleCwgY29uc3QgR0NHTGZsb2F0KiBhcnJheSkK
K3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYjJmdihHQ0dMdWludCBp
bmRleCwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0LCAyPiBhcnJheSkKIHsKICAgICBpZiAoIW1h
a2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBnbDo6VmVydGV4QXR0
cmliMmZ2KGluZGV4LCBhcnJheSk7CisgICAgZ2w6OlZlcnRleEF0dHJpYjJmdihpbmRleCwgYXJy
YXkuZGF0YSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJp
YjNmKEdDR0x1aW50IGluZGV4LCBHQ0dMZmxvYXQgdjAsIEdDR0xmbG9hdCB2MSwgR0NHTGZsb2F0
IHYyKQpAQCAtMTcxMiwxMiArMTcxNiwxMiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
Ojp2ZXJ0ZXhBdHRyaWIzZihHQ0dMdWludCBpbmRleCwgR0NHTGZsb2F0IHYwLCBHQ0dMZgogICAg
IGdsOjpWZXJ0ZXhBdHRyaWIzZihpbmRleCwgdjAsIHYxLCB2Mik7CiB9CiAKLXZvaWQgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYjNmdihHQ0dMdWludCBpbmRleCwgY29uc3Qg
R0NHTGZsb2F0KiBhcnJheSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZlcnRleEF0
dHJpYjNmdihHQ0dMdWludCBpbmRleCwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0LCAzPiBhcnJh
eSkKIHsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBnbDo6VmVydGV4QXR0cmliM2Z2KGluZGV4LCBhcnJheSk7CisgICAgZ2w6OlZlcnRleEF0
dHJpYjNmdihpbmRleCwgYXJyYXkuZGF0YSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OnZlcnRleEF0dHJpYjRmKEdDR0x1aW50IGluZGV4LCBHQ0dMZmxvYXQgdjAsIEdDR0xm
bG9hdCB2MSwgR0NHTGZsb2F0IHYyLCBHQ0dMZmxvYXQgdjMpCkBAIC0xNzI4LDEyICsxNzMyLDEy
IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYjRmKEdDR0x1aW50
IGluZGV4LCBHQ0dMZmxvYXQgdjAsIEdDR0xmCiAgICAgZ2w6OlZlcnRleEF0dHJpYjRmKGluZGV4
LCB2MCwgdjEsIHYyLCB2Myk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZl
cnRleEF0dHJpYjRmdihHQ0dMdWludCBpbmRleCwgY29uc3QgR0NHTGZsb2F0KiBhcnJheSkKK3Zv
aWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYjRmdihHQ0dMdWludCBpbmRl
eCwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0LCA0PiBhcnJheSkKIHsKICAgICBpZiAoIW1ha2VD
b250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBnbDo6VmVydGV4QXR0cmli
NGZ2KGluZGV4LCBhcnJheSk7CisgICAgZ2w6OlZlcnRleEF0dHJpYjRmdihpbmRleCwgYXJyYXku
ZGF0YSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYlBv
aW50ZXIoR0NHTHVpbnQgaW5kZXgsIEdDR0xpbnQgc2l6ZSwgR0NHTGVudW0gdHlwZSwgR0NHTGJv
b2xlYW4gbm9ybWFsaXplZCwgR0NHTHNpemVpIHN0cmlkZSwgR0NHTGludHB0ciBvZmZzZXQpCkBA
IC0xODIyLDcgKzE4MjYsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRGbG9h
dHYoR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xmbG9hdD4gdmFsdQogCiAgICAgZ2w6Okdl
dEZsb2F0dlJvYnVzdEFOR0xFKHBuYW1lLCB2YWx1ZS5idWZTaXplLCBudWxscHRyLCB2YWx1ZS5k
YXRhKTsKIH0KLSAgICAKKwogR0NHTGludDY0IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRJ
bnRlZ2VyNjQoR0NHTGVudW0gcG5hbWUpCiB7CiAgICAgR0NHTGludDY0IHZhbHVlID0gMDsKQEAg
LTIwMjksMTMgKzIwMzMsMTMgQEAgR0NHTHNpemVpcHRyIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpnZXRWZXJ0ZXhBdHRyaWJPZmZzZXQoR0NHTHVpbnQgaW5kZXgsIEdDR0wKICAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8R0NHTHNpemVpcHRyPihyZWludGVycHJldF9jYXN0PGludHB0cl90Pihwb2lu
dGVyKSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnRleFN1YkltYWdlMkQo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmYsIEdDR0xpbnQgeW9m
ZiwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdD
R0xlbnVtIHR5cGUsIGNvbnN0IHZvaWQqIHBpeGVscykKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OnRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dM
aW50IHhvZmYsIEdDR0xpbnQgeW9mZiwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0
LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lk
PiBwaXhlbHMpCiB7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0
dXJuOwogCiAgICAgLy8gRklYTUU6IHdlIHdpbGwgbmVlZCB0byBkZWFsIHdpdGggUGl4ZWxTdG9y
ZSBwYXJhbXMgd2hlbiBkZWFsaW5nIHdpdGggaW1hZ2UgYnVmZmVycyB0aGF0IGRpZmZlciBmcm9t
IHRoZSBzdWJpbWFnZSBzaXplLgotICAgIGdsOjpUZXhTdWJJbWFnZTJEKHRhcmdldCwgbGV2ZWws
IHhvZmYsIHlvZmYsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgcGl4ZWxzKTsKKyAgICBn
bDo6VGV4U3ViSW1hZ2UyRFJvYnVzdEFOR0xFKHRhcmdldCwgbGV2ZWwsIHhvZmYsIHlvZmYsIHdp
ZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgcGl4ZWxzLmJ1ZlNpemUsIHBpeGVscy5kYXRhKTsK
ICAgICBtX3N0YXRlLnRleHR1cmVTZWVkQ291bnQuYWRkKG1fc3RhdGUuY3VycmVudEJvdW5kVGV4
dHVyZSgpKTsKIH0KIApAQCAtMjIwMywxNyArMjIwNyw2IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmRpc3BhdGNoQ29udGV4dENoYW5nZWROb3RpZmljYXRpb24oKQogICAgICAgICBj
bGllbnQtPmRpc3BhdGNoQ29udGV4dENoYW5nZWROb3RpZmljYXRpb24oKTsKIH0KIAotdm9pZCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dGV4SW1hZ2UyRERpcmVjdChHQ0dMZW51bSB0YXJnZXQs
IEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgs
IEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xl
bnVtIHR5cGUsIGNvbnN0IHZvaWQqIHBpeGVscykKLXsKLSAgICBpZiAoIW1ha2VDb250ZXh0Q3Vy
cmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoIW1faXNGb3JXZWJHTDIgJiYgbV9l
eHRlbnNpb25zKQotICAgICAgICBpbnRlcm5hbGZvcm1hdCA9IG1fZXh0ZW5zaW9ucy0+YWRqdXN0
V2ViR0wxVGV4dHVyZUludGVybmFsRm9ybWF0KGludGVybmFsZm9ybWF0LCBmb3JtYXQsIHR5cGUp
OwotICAgIGdsOjpUZXhJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0
aCwgaGVpZ2h0LCBib3JkZXIsIGZvcm1hdCwgdHlwZSwgcGl4ZWxzKTsKLSAgICBtX3N0YXRlLnRl
eHR1cmVTZWVkQ291bnQuYWRkKG1fc3RhdGUuY3VycmVudEJvdW5kVGV4dHVyZSgpKTsKLX0KLQog
dm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6ZHJhd0FycmF5c0luc3RhbmNlZChHQ0dMZW51
bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xzaXplaSBwcmltY291
bnQpCiB7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKQEAgLTI0MzYsMjAgKzI0Mjks
MjAgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6ZnJhbWVidWZmZXJUZXh0dXJlTGF5
ZXIoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bQogICAgIGdsOjpGcmFtZWJ1ZmZlclRleHR1cmVM
YXllcih0YXJnZXQsIGF0dGFjaG1lbnQsIHRleHR1cmUsIGxldmVsLCBsYXllcik7CiB9CiAKLXZv
aWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmludmFsaWRhdGVGcmFtZWJ1ZmZlcihHQ0dMZW51
bSB0YXJnZXQsIEdDR0xzaXplaSBudW1BdHRhY2htZW50cywgY29uc3QgR0NHTGVudW0qIGF0dGFj
aG1lbnRzKQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6aW52YWxpZGF0ZUZyYW1lYnVm
ZmVyKEdDR0xlbnVtIHRhcmdldCwgR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+IGF0dGFjaG1lbnRz
KQogewogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIGdsOjpJbnZhbGlkYXRlRnJhbWVidWZmZXIodGFyZ2V0LCBudW1BdHRhY2htZW50cywgYXR0
YWNobWVudHMpOworICAgIGdsOjpJbnZhbGlkYXRlRnJhbWVidWZmZXIodGFyZ2V0LCBhdHRhY2ht
ZW50cy5idWZTaXplLCBhdHRhY2htZW50cy5kYXRhKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6aW52YWxpZGF0ZVN1YkZyYW1lYnVmZmVyKEdDR0xlbnVtIHRhcmdldCwgR0NH
THNpemVpIG51bUF0dGFjaG1lbnRzLCBjb25zdCBHQ0dMZW51bSogYXR0YWNobWVudHMsIEdDR0xp
bnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpCit2b2lk
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjppbnZhbGlkYXRlU3ViRnJhbWVidWZmZXIoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4gYXR0YWNobWVudHMsIEdDR0xpbnQg
eCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpCiB7CiAgICAg
aWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZ2w6Oklu
dmFsaWRhdGVTdWJGcmFtZWJ1ZmZlcih0YXJnZXQsIG51bUF0dGFjaG1lbnRzLCBhdHRhY2htZW50
cywgeCwgeSwgd2lkdGgsIGhlaWdodCk7CisgICAgZ2w6OkludmFsaWRhdGVTdWJGcmFtZWJ1ZmZl
cih0YXJnZXQsIGF0dGFjaG1lbnRzLmJ1ZlNpemUsIGF0dGFjaG1lbnRzLmRhdGEsIHgsIHksIHdp
ZHRoLCBoZWlnaHQpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkQnVm
ZmVyKEdDR0xlbnVtIHNyYykKQEAgLTI1MTcsODQgKzI1MTAsOTMgQEAgdm9pZCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6dW5pZm9ybTR1aShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMdWludCB2MCwg
R0NHTHVpbnQKICAgICBnbDo6VW5pZm9ybTR1aShsb2NhdGlvbiwgdjAsIHYxLCB2MiwgdjMpOwog
fQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMXVpdihHQ0dMaW50IGxv
Y2F0aW9uLCBjb25zdCBHQ0dMdWludCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWlu
dCBzcmNMZW5ndGgpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMXVpdihH
Q0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdWludD4gZGF0YSkKIHsKICAgICBp
ZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBnbDo6VW5p
Zm9ybTF1aXYobG9jYXRpb24sIHNyY0xlbmd0aCwgZGF0YSArIHNyY09mZnNldCk7CisgICAgZ2w6
OlVuaWZvcm0xdWl2KGxvY2F0aW9uLCBkYXRhLmJ1ZlNpemUsIGRhdGEuZGF0YSk7CiB9CiAKLXZv
aWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0ydWl2KEdDR0xpbnQgbG9jYXRpb24s
IGNvbnN0IEdDR0x1aW50KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xl
bmd0aCkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0ydWl2KEdDR0xpbnQg
bG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0x1aW50PiBkYXRhKQogeworICAgIEFTU0VSVCgh
KGRhdGEuYnVmU2l6ZSAlIDIpKTsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBnbDo6VW5pZm9ybTJ1aXYobG9jYXRpb24sIHNyY0xlbmd0aCwg
ZGF0YSArIHNyY09mZnNldCk7CisgICAgZ2w6OlVuaWZvcm0ydWl2KGxvY2F0aW9uLCBkYXRhLmJ1
ZlNpemUgLyAyLCBkYXRhLmRhdGEpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
Ojp1bmlmb3JtM3VpdihHQ0dMaW50IGxvY2F0aW9uLCBjb25zdCBHQ0dMdWludCogZGF0YSwgR0NH
THVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCit2b2lkIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjp1bmlmb3JtM3VpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBH
Q0dMdWludD4gZGF0YSkKIHsKKyAgICBBU1NFUlQoIShkYXRhLmJ1ZlNpemUgJSAzKSk7CiAgICAg
aWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZ2w6OlVu
aWZvcm0zdWl2KGxvY2F0aW9uLCBzcmNMZW5ndGgsIGRhdGEgKyBzcmNPZmZzZXQpOworICAgIGds
OjpVbmlmb3JtM3Vpdihsb2NhdGlvbiwgZGF0YS5idWZTaXplIC8gMywgZGF0YS5kYXRhKTsKIH0K
IAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTR1aXYoR0NHTGludCBsb2Nh
dGlvbiwgY29uc3QgR0NHTHVpbnQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQg
c3JjTGVuZ3RoKQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTR1aXYoR0NH
TGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTHVpbnQ+IGRhdGEpCiB7CisgICAgQVNT
RVJUKCEoZGF0YS5idWZTaXplICUgNCkpOwogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkp
CiAgICAgICAgIHJldHVybjsKIAotICAgIGdsOjpVbmlmb3JtNHVpdihsb2NhdGlvbiwgc3JjTGVu
Z3RoLCBkYXRhICsgc3JjT2Zmc2V0KTsKKyAgICBnbDo6VW5pZm9ybTR1aXYobG9jYXRpb24sIGRh
dGEuYnVmU2l6ZSAvIDQsIGRhdGEuZGF0YSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OnVuaWZvcm1NYXRyaXgyeDNmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0
cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dM
dWludCBzcmNMZW5ndGgpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0
cml4MngzZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bh
bjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEpCiB7CisgICAgQVNTRVJUKCEoZGF0YS5idWZTaXplICUg
NikpOwogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIGdsOjpVbmlmb3JtTWF0cml4MngzZnYobG9jYXRpb24sIHNyY0xlbmd0aCwgdHJhbnNwb3Nl
LCBkYXRhICsgc3JjT2Zmc2V0KTsKKyAgICBnbDo6VW5pZm9ybU1hdHJpeDJ4M2Z2KGxvY2F0aW9u
LCBkYXRhLmJ1ZlNpemUgLyA2LCB0cmFuc3Bvc2UsIGRhdGEuZGF0YSk7CiB9CiAKLXZvaWQgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXgzeDJmdihHQ0dMaW50IGxvY2F0aW9u
LCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQg
c3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjp1bmlmb3JtTWF0cml4M3gyZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJh
bnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEpCiB7CisgICAgQVNTRVJUKCEo
ZGF0YS5idWZTaXplICUgNikpOwogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIGdsOjpVbmlmb3JtTWF0cml4M3gyZnYobG9jYXRpb24sIHNyY0xl
bmd0aCwgdHJhbnNwb3NlLCBkYXRhICsgc3JjT2Zmc2V0KTsKKyAgICBnbDo6VW5pZm9ybU1hdHJp
eDN4MmZ2KGxvY2F0aW9uLCBkYXRhLmJ1ZlNpemUgLyA2LCB0cmFuc3Bvc2UsIGRhdGEuZGF0YSk7
CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXgyeDRmdihH
Q0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCog
ZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCit2b2lkIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4Mng0ZnYoR0NHTGludCBsb2NhdGlvbiwg
R0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEpCiB7
CisgICAgQVNTRVJUKCEoZGF0YS5idWZTaXplICUgOCkpOwogICAgIGlmICghbWFrZUNvbnRleHRD
dXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGdsOjpVbmlmb3JtTWF0cml4Mng0ZnYo
bG9jYXRpb24sIHNyY0xlbmd0aCwgdHJhbnNwb3NlLCBkYXRhICsgc3JjT2Zmc2V0KTsKKyAgICBn
bDo6VW5pZm9ybU1hdHJpeDJ4NGZ2KGxvY2F0aW9uLCBkYXRhLmJ1ZlNpemUgLyA4LCB0cmFuc3Bv
c2UsIGRhdGEuZGF0YSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZv
cm1NYXRyaXg0eDJmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNv
bnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5n
dGgpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4NHgyZnYoR0NH
TGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dM
ZmxvYXQ+IGRhdGEpCiB7CisgICAgQVNTRVJUKCEoZGF0YS5idWZTaXplICUgOCkpOwogICAgIGlm
ICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGdsOjpVbmlm
b3JtTWF0cml4NHgyZnYobG9jYXRpb24sIHNyY0xlbmd0aCwgdHJhbnNwb3NlLCBkYXRhICsgc3Jj
T2Zmc2V0KTsKKyAgICBnbDo6VW5pZm9ybU1hdHJpeDR4MmZ2KGxvY2F0aW9uLCBkYXRhLmJ1ZlNp
emUgLyA4LCB0cmFuc3Bvc2UsIGRhdGEuZGF0YSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXgzeDRmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVh
biB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBH
Q0dMdWludCBzcmNMZW5ndGgpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3Jt
TWF0cml4M3g0ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dM
U3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEpCiB7CisgICAgQVNTRVJUKCEoZGF0YS5idWZTaXpl
ICUgMTIpKTsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47
CiAKLSAgICBnbDo6VW5pZm9ybU1hdHJpeDN4NGZ2KGxvY2F0aW9uLCBzcmNMZW5ndGgsIHRyYW5z
cG9zZSwgZGF0YSArIHNyY09mZnNldCk7CisgICAgZ2w6OlVuaWZvcm1NYXRyaXgzeDRmdihsb2Nh
dGlvbiwgZGF0YS5idWZTaXplIC8gMTIsIHRyYW5zcG9zZSwgZGF0YS5kYXRhKTsKIH0KIAotdm9p
ZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybU1hdHJpeDR4M2Z2KEdDR0xpbnQgbG9j
YXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dM
dWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXg0eDNmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVh
biB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gZGF0YSkKIHsKKyAgICBBU1NF
UlQoIShkYXRhLmJ1ZlNpemUgJSAxMikpOwogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkp
CiAgICAgICAgIHJldHVybjsKIAotICAgIGdsOjpVbmlmb3JtTWF0cml4NHgzZnYobG9jYXRpb24s
IHNyY0xlbmd0aCwgdHJhbnNwb3NlLCBkYXRhICsgc3JjT2Zmc2V0KTsKKyAgICBnbDo6VW5pZm9y
bU1hdHJpeDR4M2Z2KGxvY2F0aW9uLCBkYXRhLmJ1ZlNpemUgLyAxMiwgdHJhbnNwb3NlLCBkYXRh
LmRhdGEpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2ZXJ0ZXhBdHRyaWJJ
NGkoR0NHTHVpbnQgaW5kZXgsIEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMaW50IHosIEdDR0xp
bnQgdykKQEAgLTI2MDUsMTIgKzI2MDcsMTIgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6dmVydGV4QXR0cmliSTRpKEdDR0x1aW50IGluZGV4LCBHQ0dMaW50IHgsIEdDR0xpbnQKICAg
ICBnbDo6VmVydGV4QXR0cmliSTRpKGluZGV4LCB4LCB5LCB6LCB3KTsKIH0KIAotdm9pZCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliSTRpdihHQ0dMdWludCBpbmRleCwgY29u
c3QgR0NHTGludCogdmFsdWVzKQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4
QXR0cmliSTRpdihHQ0dMdWludCBpbmRleCwgR0NHTFNwYW48Y29uc3QgR0NHTGludCwgND4gdmFs
dWVzKQogewogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIGdsOjpWZXJ0ZXhBdHRyaWJJNGl2KGluZGV4LCB2YWx1ZXMpOworICAgIGdsOjpWZXJ0
ZXhBdHRyaWJJNGl2KGluZGV4LCB2YWx1ZXMuZGF0YSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYkk0dWkoR0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50IHgs
IEdDR0x1aW50IHksIEdDR0x1aW50IHosIEdDR0x1aW50IHcpCkBAIC0yNjIxLDEyICsyNjIzLDEy
IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYkk0dWkoR0NHTHVp
bnQgaW5kZXgsIEdDR0x1aW50IHgsIEdDR0x1CiAgICAgZ2w6OlZlcnRleEF0dHJpYkk0dWkoaW5k
ZXgsIHgsIHksIHosIHcpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2ZXJ0
ZXhBdHRyaWJJNHVpdihHQ0dMdWludCBpbmRleCwgY29uc3QgR0NHTHVpbnQqIHZhbHVlcykKK3Zv
aWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYkk0dWl2KEdDR0x1aW50IGlu
ZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdWludCwgND4gdmFsdWVzKQogewogICAgIGlmICghbWFr
ZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGdsOjpWZXJ0ZXhBdHRy
aWJJNHVpdihpbmRleCwgdmFsdWVzKTsKKyAgICBnbDo6VmVydGV4QXR0cmliSTR1aXYoaW5kZXgs
IHZhbHVlcy5kYXRhKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6ZHJhd1Jh
bmdlRWxlbWVudHMoR0NHTGVudW0gbW9kZSwgR0NHTHVpbnQgc3RhcnQsIEdDR0x1aW50IGVuZCwg
R0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCkKQEAgLTI2
MzcsMzYgKzI2MzksMzYgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6ZHJhd1Jhbmdl
RWxlbWVudHMoR0NHTGVudW0gbW9kZSwgR0NHTHVpbnQgc3RhcnQsIEcKICAgICBnbDo6RHJhd1Jh
bmdlRWxlbWVudHMobW9kZSwgc3RhcnQsIGVuZCwgY291bnQsIHR5cGUsIHJlaW50ZXJwcmV0X2Nh
c3Q8dm9pZCo+KG9mZnNldCkpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpk
cmF3QnVmZmVycyhHQ0dMc2l6ZWkgbiwgY29uc3QgR0NHTGVudW0qIGJ1ZnMpCit2b2lkIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpkcmF3QnVmZmVycyhHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4g
YnVmcykKIHsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47
CiAKLSAgICBnbDo6RHJhd0J1ZmZlcnMobiwgYnVmcyk7CisgICAgZ2w6OkRyYXdCdWZmZXJzKGJ1
ZnMuYnVmU2l6ZSwgYnVmcy5kYXRhKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6Y2xlYXJCdWZmZXJpdihHQ0dMZW51bSBidWZmZXIsIEdDR0xpbnQgZHJhd2J1ZmZlciwgY29u
c3QgR0NHTGludCogdmFsdWVzLCBHQ0dMdWludCBzcmNPZmZzZXQpCit2b2lkIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpjbGVhckJ1ZmZlcml2KEdDR0xlbnVtIGJ1ZmZlciwgR0NHTGludCBkcmF3
YnVmZmVyLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50PiB2YWx1ZXMpCiB7CiAgICAgaWYgKCFtYWtl
Q29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZ2w6OkNsZWFyQnVmZmVy
aXYoYnVmZmVyLCBkcmF3YnVmZmVyLCB2YWx1ZXMgKyBzcmNPZmZzZXQpOworICAgIGdsOjpDbGVh
ckJ1ZmZlcml2KGJ1ZmZlciwgZHJhd2J1ZmZlciwgdmFsdWVzLmRhdGEpOwogfQogCi12b2lkIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjbGVhckJ1ZmZlcnVpdihHQ0dMZW51bSBidWZmZXIsIEdD
R0xpbnQgZHJhd2J1ZmZlciwgY29uc3QgR0NHTHVpbnQqIHZhbHVlcywgR0NHTHVpbnQgc3JjT2Zm
c2V0KQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y2xlYXJCdWZmZXJ1aXYoR0NHTGVu
dW0gYnVmZmVyLCBHQ0dMaW50IGRyYXdidWZmZXIsIEdDR0xTcGFuPGNvbnN0IEdDR0x1aW50PiB2
YWx1ZXMpCiB7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgZ2w6OkNsZWFyQnVmZmVydWl2KGJ1ZmZlciwgZHJhd2J1ZmZlciwgdmFsdWVzICsg
c3JjT2Zmc2V0KTsKKyAgICBnbDo6Q2xlYXJCdWZmZXJ1aXYoYnVmZmVyLCBkcmF3YnVmZmVyLCB2
YWx1ZXMuZGF0YSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNsZWFyQnVm
ZmVyZnYoR0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50IGRyYXdidWZmZXIsIGNvbnN0IEdDR0xmbG9h
dCogdmFsdWVzLCBHQ0dMdWludCBzcmNPZmZzZXQpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpjbGVhckJ1ZmZlcmZ2KEdDR0xlbnVtIGJ1ZmZlciwgR0NHTGludCBkcmF3YnVmZmVyLCBH
Q0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IHZhbHVlcykKIHsKICAgICBpZiAoIW1ha2VDb250ZXh0
Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBnbDo6Q2xlYXJCdWZmZXJmdihidWZm
ZXIsIGRyYXdidWZmZXIsIHZhbHVlcyArIHNyY09mZnNldCk7CisgICAgZ2w6OkNsZWFyQnVmZmVy
ZnYoYnVmZmVyLCBkcmF3YnVmZmVyLCB2YWx1ZXMuZGF0YSk7CiB9CiAKIHZvaWQgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OmNsZWFyQnVmZmVyZmkoR0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50IGRy
YXdidWZmZXIsIEdDR0xmbG9hdCBkZXB0aCwgR0NHTGludCBzdGVuY2lsKQpAQCAtMjg1NCw5NCAr
Mjg1Niw2IEBAIFZlY3RvcjxHQ0dMdWludD4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFVu
aWZvcm1JbmRpY2VzKFBsYXRmb3JtR0xPYmplY3QgcHJvCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0K
IAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTFmdihHQ0dMaW50IGxvY2F0
aW9uLCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQg
c3JjTGVuZ3RoKQotewotICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIGdsOjpVbmlmb3JtMWZ2KGxvY2F0aW9uLCBzcmNMZW5ndGgsIGRhdGEgKyBz
cmNPZmZzZXQpOwotfQotCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMmZ2
KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zm
c2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCi17Ci0gICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQo
KSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OlVuaWZvcm0yZnYobG9jYXRpb24sIHNyY0xl
bmd0aCwgZGF0YSArIHNyY09mZnNldCk7Ci19Ci0KLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OnVuaWZvcm0zZnYoR0NHTGludCBsb2NhdGlvbiwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBH
Q0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKLXsKLSAgICBpZiAoIW1ha2VD
b250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6VW5pZm9ybTNmdihs
b2NhdGlvbiwgc3JjTGVuZ3RoLCBkYXRhICsgc3JjT2Zmc2V0KTsKLX0KLQotdm9pZCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTRmdihHQ0dMaW50IGxvY2F0aW9uLCBjb25zdCBHQ0dM
ZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQotewot
ICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGds
OjpVbmlmb3JtNGZ2KGxvY2F0aW9uLCBzcmNMZW5ndGgsIGRhdGEgKyBzcmNPZmZzZXQpOwotfQot
Ci12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMWl2KEdDR0xpbnQgbG9jYXRp
b24sIGNvbnN0IEdDR0xpbnQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3Jj
TGVuZ3RoKQotewotICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIGdsOjpVbmlmb3JtMWl2KGxvY2F0aW9uLCBzcmNMZW5ndGgsIGRhdGEgKyBzcmNP
ZmZzZXQpOwotfQotCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMml2KEdD
R0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0xpbnQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwg
R0NHTHVpbnQgc3JjTGVuZ3RoKQotewotICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIGdsOjpVbmlmb3JtMml2KGxvY2F0aW9uLCBzcmNMZW5ndGgs
IGRhdGEgKyBzcmNPZmZzZXQpOwotfQotCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1
bmlmb3JtM2l2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0xpbnQqIGRhdGEsIEdDR0x1aW50
IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQotewotICAgIGlmICghbWFrZUNvbnRleHRD
dXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpVbmlmb3JtM2l2KGxvY2F0aW9u
LCBzcmNMZW5ndGgsIGRhdGEgKyBzcmNPZmZzZXQpOwotfQotCi12b2lkIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjp1bmlmb3JtNGl2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0xpbnQqIGRh
dGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQotewotICAgIGlmICgh
bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpVbmlmb3Jt
NGl2KGxvY2F0aW9uLCBzcmNMZW5ndGgsIGRhdGEgKyBzcmNPZmZzZXQpOwotfQotCi12b2lkIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4MmZ2KEdDR0xpbnQgbG9jYXRpb24s
IEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBz
cmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKLXsKLSAgICBpZiAoIW1ha2VDb250ZXh0Q3Vy
cmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6VW5pZm9ybU1hdHJpeDJmdihsb2Nh
dGlvbiwgc3JjTGVuZ3RoLCB0cmFuc3Bvc2UsIGRhdGEgKyBzcmNPZmZzZXQpOwotfQotCi12b2lk
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4M2Z2KEdDR0xpbnQgbG9jYXRp
b24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWlu
dCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKLXsKLSAgICBpZiAoIW1ha2VDb250ZXh0
Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6VW5pZm9ybU1hdHJpeDNmdihs
b2NhdGlvbiwgc3JjTGVuZ3RoLCB0cmFuc3Bvc2UsIGRhdGEgKyBzcmNPZmZzZXQpOwotfQotCi12
b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4NGZ2KEdDR0xpbnQgbG9j
YXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dM
dWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKLXsKLSAgICBpZiAoIW1ha2VDb250
ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6VW5pZm9ybU1hdHJpeDRm
dihsb2NhdGlvbiwgc3JjTGVuZ3RoLCB0cmFuc3Bvc2UsIGRhdGEgKyBzcmNPZmZzZXQpOwotfQot
CiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRBY3RpdmVVbmlmb3JtQmxvY2tpdihH
Q0dMdWludCBwcm9ncmFtLCBHQ0dMdWludCB1bmlmb3JtQmxvY2tJbmRleCwgR0NHTGVudW0gcG5h
bWUsIEdDR0xTcGFuPEdDR0xpbnQ+IHBhcmFtcykKIHsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3Vy
cmVudCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3Yv
R3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2N2L0dyYXBoaWNzQ29udGV4dEdMQ1ZBTkdMRS5jcHAKaW5kZXggZjliZmNhM2M0OGNl
MjhlYWIxOTQ0YTRmNWU4NTMwYTQyNWY4NjJmZS4uZDFjNjJhMzY3ZGZjNTg1YzVlOTQ4ODQzYTEz
NWUwNDU1MGQ1MGQ5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY3YvR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jdi9HcmFwaGljc0NvbnRleHRHTENWQU5HTEUuY3BwCkBAIC0xLDYg
KzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKiAKKyAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwogICogYXJlIG1l
dDoKQEAgLTIzNSwxOCArMjM1LDEzIEBAIHN0cnVjdCBHTGZsb2F0Q29sb3JzIHsKIH07CiAKIHN0
cnVjdCBZQ2JDck1hdHJpeCB7Ci0gICAgdW5pb24gewotICAgICAgICBHTGZsb2F0IHJvd3NbNF1b
NF07Ci0gICAgICAgIEdMZmxvYXQgZGF0YVsxNl07Ci0gICAgfTsKKyAgICBHTGZsb2F0IHJvd3Nb
NF1bNF07CiAKICAgICBjb25zdGV4cHIgWUNiQ3JNYXRyaXgoUGl4ZWxSYW5nZSwgR0xmbG9hdCBj
YkNvZWZmaWNpZW50LCBHTGZsb2F0IGNyQ29lZmZpY2llbnQpOwogCi0gICAgb3BlcmF0b3IgVmVj
dG9yPEdMZmxvYXQ+KCkgY29uc3QKKyAgICBvcGVyYXRvciBHQ0dMU3Bhbjxjb25zdCBHTGZsb2F0
LCAxNj4oKSBjb25zdAogICAgIHsKLSAgICAgICAgVmVjdG9yPEdMZmxvYXQ+IHZlY3RvcjsKLSAg
ICAgICAgdmVjdG9yLmFwcGVuZChkYXRhLCAxNik7Ci0gICAgICAgIHJldHVybiB2ZWN0b3I7Cisg
ICAgICAgIHJldHVybiBtYWtlR0NHTFNwYW48MTY+KCZyb3dzWzBdWzBdKTsKICAgICB9CiAKICAg
ICBjb25zdGV4cHIgR0xmbG9hdENvbG9yIG9wZXJhdG9yKihjb25zdCBHTGZsb2F0Q29sb3ImKSBj
b25zdDsKQEAgLTMxOCwxMCArMzEzLDEwIEBAIGNvbnN0ZXhwciBHTGZsb2F0Q29sb3IgWUNiQ3JN
YXRyaXg6Om9wZXJhdG9yKihjb25zdCBHTGZsb2F0Q29sb3ImIGNvbG9yKSBjb25zdAogICAgICk7
CiB9CiAKLXN0YXRpYyBjb25zdCBWZWN0b3I8R0xmbG9hdD4gWUNiQ3JUb1JHQk1hdHJpeEZvclJh
bmdlQW5kVHJhbnNmZXJGdW5jdGlvbihQaXhlbFJhbmdlIHJhbmdlLCBUcmFuc2ZlckZ1bmN0aW9u
Q1YgdHJhbnNmZXJGdW5jdGlvbikKK3N0YXRpYyBHQ0dMU3Bhbjxjb25zdCBHTGZsb2F0LCAxNj4g
WUNiQ3JUb1JHQk1hdHJpeEZvclJhbmdlQW5kVHJhbnNmZXJGdW5jdGlvbihQaXhlbFJhbmdlIHJh
bmdlLCBUcmFuc2ZlckZ1bmN0aW9uQ1YgdHJhbnNmZXJGdW5jdGlvbikKIHsKICAgICB1c2luZyBN
YXBLZXkgPSBzdGQ6OnBhaXI8UGl4ZWxSYW5nZSwgVHJhbnNmZXJGdW5jdGlvbkNWPjsKLSAgICB1
c2luZyBNYXRyaXhNYXAgPSBTdGRNYXA8TWFwS2V5LCBWZWN0b3I8R0xmbG9hdD4+OworICAgIHVz
aW5nIE1hdHJpeE1hcCA9IFN0ZE1hcDxNYXBLZXksIGNvbnN0IFlDYkNyTWF0cml4Jj47CiAKICAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8TWF0cml4TWFwPiBtYXRyaWNlczsKICAgICBzdGF0aWMg
ZGlzcGF0Y2hfb25jZV90IG9uY2VUb2tlbjsKQEAgLTUyNiw3ICs1MjEsNyBAQCBib29sIEdyYXBo
aWNzQ29udGV4dEdMQ1ZBTkdMRTo6aW5pdGlhbGl6ZVVWQ29udGV4dE9iamVjdHMoKQogICAgIGZs
b2F0IHZlcnRpY2VzWzEyXSA9IHsgLTEsIC0xLCAxLCAtMSwgMSwgMSwgMSwgMSwgLTEsIDEsIC0x
LCAtMSB9OwogCiAgICAgbV9jb250ZXh0LT5iaW5kQnVmZmVyKEdyYXBoaWNzQ29udGV4dEdMOjpB
UlJBWV9CVUZGRVIsIG1feXV2VmVydGV4QnVmZmVyKTsKLSAgICBtX2NvbnRleHQtPmJ1ZmZlckRh
dGEoR3JhcGhpY3NDb250ZXh0R0w6OkFSUkFZX0JVRkZFUiwgc2l6ZW9mKHZlcnRpY2VzKSwgdmVy
dGljZXMsIEdyYXBoaWNzQ29udGV4dEdMOjpTVEFUSUNfRFJBVyk7CisgICAgbV9jb250ZXh0LT5i
dWZmZXJEYXRhKEdyYXBoaWNzQ29udGV4dEdMOjpBUlJBWV9CVUZGRVIsIEdDR0xTcGFuPGNvbnN0
IEdDR0x2b2lkPih2ZXJ0aWNlcywgc2l6ZW9mKHZlcnRpY2VzKSksIEdyYXBoaWNzQ29udGV4dEdM
OjpTVEFUSUNfRFJBVyk7CiAgICAgbV9jb250ZXh0LT5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSht
X3l1dlBvc2l0aW9uQXR0cmlidXRlTG9jYXRpb24pOwogICAgIG1fY29udGV4dC0+dmVydGV4QXR0
cmliUG9pbnRlcihtX3l1dlBvc2l0aW9uQXR0cmlidXRlTG9jYXRpb24sIDIsIEdyYXBoaWNzQ29u
dGV4dEdMOjpGTE9BVCwgZmFsc2UsIDAsIDApOwogCkBAIC02MDAsNyArNTk1LDcgQEAgYm9vbCBH
cmFwaGljc0NvbnRleHRHTENWQU5HTEU6OmNvcHlQaXhlbEJ1ZmZlclRvVGV4dHVyZShDVlBpeGVs
QnVmZmVyUmVmIGltYWdlLAogCiAgICAgYXV0byBuZXdTdXJmYWNlU2VlZCA9IElPU3VyZmFjZUdl
dFNlZWQoc3VyZmFjZSk7CiAgICAgaWYgKGZsaXBZID09IG1fbGFzdEZsaXBZCi0gICAgICAgICYm
IHN1cmZhY2UgPT0gbV9sYXN0U3VyZmFjZSAKKyAgICAgICAgJiYgc3VyZmFjZSA9PSBtX2xhc3RT
dXJmYWNlCiAgICAgICAgICYmIG5ld1N1cmZhY2VTZWVkID09IG1fbGFzdFN1cmZhY2VTZWVkCiAg
ICAgICAgICYmIGxhc3RUZXh0dXJlU2VlZChvdXRwdXRUZXh0dXJlKSA9PSBtX2NvbnRleHQtPnRl
eHR1cmVTZWVkKG91dHB1dFRleHR1cmUpKSB7CiAgICAgICAgIC8vIElmIHRoZSB0ZXh0dXJlIGhh
c24ndCBiZWVuIG1vZGlmaWVkIHNpbmNlIHRoZSBsYXN0IHRpbWUgd2UgY29waWVkIHRvIGl0LCBh
bmQgdGhlCkBAIC02MjUsNyArNjIwLDcgQEAgYm9vbCBHcmFwaGljc0NvbnRleHRHTENWQU5HTEU6
OmNvcHlQaXhlbEJ1ZmZlclRvVGV4dHVyZShDVlBpeGVsQnVmZmVyUmVmIGltYWdlLAogICAgIG1f
Y29udGV4dC0+dGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV8yRCwgR3Jh
cGhpY3NDb250ZXh0R0w6OlRFWFRVUkVfTUlOX0ZJTFRFUiwgR3JhcGhpY3NDb250ZXh0R0w6OkxJ
TkVBUik7CiAgICAgbV9jb250ZXh0LT50ZXhQYXJhbWV0ZXJpKEdyYXBoaWNzQ29udGV4dEdMOjpU
RVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV9XUkFQX1MsIEdyYXBoaWNzQ29u
dGV4dEdMOjpDTEFNUF9UT19FREdFKTsKICAgICBtX2NvbnRleHQtPnRleFBhcmFtZXRlcmkoR3Jh
cGhpY3NDb250ZXh0R0w6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4dEdMOjpURVhUVVJFX1dS
QVBfVCwgR3JhcGhpY3NDb250ZXh0R0w6OkNMQU1QX1RPX0VER0UpOwotICAgIG1fY29udGV4dC0+
dGV4SW1hZ2UyRERpcmVjdChHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV8yRCwgbGV2ZWwsIGlu
dGVybmFsRm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCAwLCBmb3JtYXQsIHR5cGUsIG51bGxwdHIpOwor
ICAgIGdsOjpUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIGxldmVsLCBpbnRlcm5hbEZvcm1hdCwg
d2lkdGgsIGhlaWdodCwgMCwgZm9ybWF0LCB0eXBlLCBudWxscHRyKTsKIAogICAgIG1fY29udGV4
dC0+ZnJhbWVidWZmZXJUZXh0dXJlMkQoR3JhcGhpY3NDb250ZXh0R0w6OkZSQU1FQlVGRkVSLCBH
cmFwaGljc0NvbnRleHRHTDo6Q09MT1JfQVRUQUNITUVOVDAsIEdyYXBoaWNzQ29udGV4dEdMOjpU
RVhUVVJFXzJELCBvdXRwdXRUZXh0dXJlLCBsZXZlbCk7CiAgICAgR0NHTGVudW0gc3RhdHVzID0g
bV9jb250ZXh0LT5jaGVja0ZyYW1lYnVmZmVyU3RhdHVzKEdyYXBoaWNzQ29udGV4dEdMOjpGUkFN
RUJVRkZFUik7CkBAIC02ODIsOCArNjc3LDggQEAgYm9vbCBHcmFwaGljc0NvbnRleHRHTENWQU5H
TEU6OmNvcHlQaXhlbEJ1ZmZlclRvVGV4dHVyZShDVlBpeGVsQnVmZmVyUmVmIGltYWdlLAogCiAg
ICAgYXV0byByYW5nZSA9IHBpeGVsUmFuZ2VGcm9tUGl4ZWxGb3JtYXQocGl4ZWxGb3JtYXQpOwog
ICAgIGF1dG8gdHJhbnNmZXJGdW5jdGlvbiA9IHRyYW5zZmVyRnVuY3Rpb25Gcm9tU3RyaW5nKChD
RlN0cmluZ1JlZilDVkJ1ZmZlckdldEF0dGFjaG1lbnQoaW1hZ2UsIGtDVkltYWdlQnVmZmVyWUNi
Q3JNYXRyaXhLZXksIG5pbCkpOwotICAgIGF1dG8mIGNvbG9yTWF0cml4ID0gWUNiQ3JUb1JHQk1h
dHJpeEZvclJhbmdlQW5kVHJhbnNmZXJGdW5jdGlvbihyYW5nZSwgdHJhbnNmZXJGdW5jdGlvbik7
Ci0gICAgbV9jb250ZXh0LT51bmlmb3JtTWF0cml4NGZ2KG1fY29sb3JNYXRyaXhVbmlmb3JtTG9j
YXRpb24sIDEsIEdMX0ZBTFNFLCBjb2xvck1hdHJpeC5kYXRhKCkpOworICAgIGF1dG8gY29sb3JN
YXRyaXggPSBZQ2JDclRvUkdCTWF0cml4Rm9yUmFuZ2VBbmRUcmFuc2ZlckZ1bmN0aW9uKHJhbmdl
LCB0cmFuc2ZlckZ1bmN0aW9uKTsKKyAgICBtX2NvbnRleHQtPnVuaWZvcm1NYXRyaXg0ZnYobV9j
b2xvck1hdHJpeFVuaWZvcm1Mb2NhdGlvbiwgR0xfRkFMU0UsIGNvbG9yTWF0cml4KTsKIAogICAg
IC8vIERvIHRoZSBhY3R1YWwgZHJhd2luZy4KICAgICBtX2NvbnRleHQtPmRyYXdBcnJheXMoR3Jh
cGhpY3NDb250ZXh0R0w6OlRSSUFOR0xFUywgMCwgNik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wu
Y3BwCmluZGV4IDE3Nzg2YTY0YmE0ZTFkYTAwOTY0ZWFlOTk3ZDI5Mjc2NGRhZDE4OTYuLjdlYzgx
Y2Y0YWU1NzcyY2FlOTcyODhiYzgwZTM2NTY0NmQ2MjdjN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xP
cGVuR0wuY3BwCkBAIC0yMDgsMTQgKzIwOCwxNCBAQCBib29sIEV4dGVuc2lvbnNHTE9wZW5HTDo6
c3VwcG9ydHNFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBuYW1lKQogICAgIHJldHVybiBtX2F2YWls
YWJsZUV4dGVuc2lvbnMuY29udGFpbnMobmFtZSk7CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMT3Bl
bkdMOjpkcmF3QnVmZmVyc0VYVChHQ0dMc2l6ZWkgbiwgY29uc3QgR0NHTGVudW0qIGJ1ZnMpCit2
b2lkIEV4dGVuc2lvbnNHTE9wZW5HTDo6ZHJhd0J1ZmZlcnNFWFQoR0NHTFNwYW48Y29uc3QgR0NH
TGVudW0+IGJ1ZnMpCiB7CiAgICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgp
KQogICAgICAgICByZXR1cm47CiAKICAgICAvLyAgRklYTUU6IGltcGxlbWVudCBzdXBwb3J0IGZv
ciBvdGhlciBwbGF0Zm9ybXMuCiAjaWYgUExBVEZPUk0oR1RLKQotICAgIDo6Z2xEcmF3QnVmZmVy
cyhuLCBidWZzKTsKKyAgICA6OmdsRHJhd0J1ZmZlcnMoYnVmcy5idWZTaXplLCBidWZzLmRhdGEp
OwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0obik7CiAgICAgVU5VU0VEX1BBUkFNKGJ1ZnMpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVu
c2lvbnNHTE9wZW5HTC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Blbmds
L0V4dGVuc2lvbnNHTE9wZW5HTC5oCmluZGV4IGQzYmU4Y2MyOGMxN2MyZGY1ZDNiNDg2NmJiM2M1
Zjk0NGM0NTVmMjEuLjQ5NjI4OWNlYTBlNmEwOWQ2ZGI3MzFmODY4YjU0OTkzYTQ0NDQ5YTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNp
b25zR0xPcGVuR0wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmgKQEAgLTUwLDcgKzUwLDcgQEAgcHVibGljOgogICAgIHZv
aWQgaW5zZXJ0RXZlbnRNYXJrZXJFWFQoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBwdXNoR3JvdXBNYXJrZXJFWFQoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBw
b3BHcm91cE1hcmtlckVYVCh2b2lkKSBvdmVycmlkZTsKLSAgICB2b2lkIGRyYXdCdWZmZXJzRVhU
KEdDR0xzaXplaSwgY29uc3QgR0NHTGVudW0qKSBvdmVycmlkZTsKKyAgICB2b2lkIGRyYXdCdWZm
ZXJzRVhUKEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVtPikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGRy
YXdBcnJheXNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHNpemVp
IGNvdW50LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSBvdmVycmlkZTsKICAgICB2b2lkIGRyYXdFbGVt
ZW50c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5
cGUsIGxvbmcgbG9uZyBvZmZzZXQsIEdDR0xzaXplaSBwcmltY291bnQpIG92ZXJyaWRlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lv
bnNHTE9wZW5HTENvbW1vbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmNwcAppbmRleCA2ODZmMmQ1MTE0OGVmOWIx
MmZlZjEwYjNjMmFjNzBiMmEzNWQyMTU3Li5lOTBjMDY2MGQyM2MwYmIyY2EyYmRkZjM2ZDY4NGYz
OGE5MmQ4ZWRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmNwcApAQCAt
MjU5LDcgKzI1OSw3IEBAIHZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpyZWFkUGl4ZWxz
Um9idXN0QU5HTEUoaW50LCBpbnQsIEdDR0xzaXplaSwgR0NHTHNpCiAgICAgbV9jb250ZXh0LT5z
eW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CiB9CiAKLXZvaWQgRXh0ZW5z
aW9uc0dMT3BlbkdMQ29tbW9uOjp0ZXhJbWFnZTJEUm9idXN0QU5HTEUoR0NHTGVudW0sIGludCwg
aW50LCBHQ0dMc2l6ZWksIEdDR0xzaXplaSwgaW50LCBHQ0dMZW51bSwgR0NHTGVudW0sIEdDR0xz
aXplaSwgY29uc3Qgdm9pZCAqKQordm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OnRleElt
YWdlMkRSb2J1c3RBTkdMRShHQ0dMZW51bSwgaW50LCBpbnQsIEdDR0xzaXplaSwgR0NHTHNpemVp
LCBpbnQsIEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+KQogewog
ICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwog
fQpAQCAtMjc0LDM4ICsyNzQsMzggQEAgdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OnRl
eFBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0cKICAgICBtX2Nv
bnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKIH0KIAotdm9p
ZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OnRleFN1YkltYWdlMkRSb2J1c3RBTkdMRShHQ0dM
ZW51bSwgaW50LCBpbnQsIGludCwgR0NHTHNpemVpLCBHQ0dMc2l6ZWksIEdDR0xlbnVtLCBHQ0dM
ZW51bSwgR0NHTHNpemVpLCBjb25zdCB2b2lkICopCit2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENv
bW1vbjo6dGV4U3ViSW1hZ2UyRFJvYnVzdEFOR0xFKEdDR0xlbnVtLCBpbnQsIGludCwgaW50LCBH
Q0dMc2l6ZWksIEdDR0xzaXplaSwgR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dMU3Bhbjxjb25zdCBH
Q0dMdm9pZD4pCiB7CiAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElE
X09QRVJBVElPTik7CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpjb21wcmVz
c2VkVGV4SW1hZ2UyRFJvYnVzdEFOR0xFKEdDR0xlbnVtLCBpbnQsIEdDR0xlbnVtLCBHQ0dMc2l6
ZWksIEdDR0xzaXplaSwgaW50LCBHQ0dMc2l6ZWksIEdDR0xzaXplaSwgY29uc3Qgdm9pZCopCit2
b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Y29tcHJlc3NlZFRleEltYWdlMkRSb2J1c3RB
TkdMRShHQ0dMZW51bSwgaW50LCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWksIGludCwg
R0NHTHNpemVpLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4pCiB7CiAgICAgbV9jb250ZXh0LT5z
eW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CiB9CiAKLXZvaWQgRXh0ZW5z
aW9uc0dMT3BlbkdMQ29tbW9uOjpjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRFJvYnVzdEFOR0xFKEdD
R0xlbnVtLCBpbnQsIGludCwgaW50LCBHQ0dMc2l6ZWksIEdDR0xzaXplaSwgR0NHTGVudW0sIEdD
R0xzaXplaSwgR0NHTHNpemVpLCBjb25zdCB2b2lkKikKK3ZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdM
Q29tbW9uOjpjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRFJvYnVzdEFOR0xFKEdDR0xlbnVtLCBpbnQs
IGludCwgaW50LCBHQ0dMc2l6ZWksIEdDR0xzaXplaSwgR0NHTGVudW0sIEdDR0xzaXplaSwgR0NH
TFNwYW48Y29uc3QgR0NHTHZvaWQ+KQogewogICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJy
b3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwogfQogCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENv
bW1vbjo6Y29tcHJlc3NlZFRleEltYWdlM0RSb2J1c3RBTkdMRShHQ0dMZW51bSwgaW50LCBHQ0dM
ZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSwgaW50LCBHQ0dMc2l6ZWksIEdD
R0xzaXplaSwgY29uc3Qgdm9pZCopCit2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Y29t
cHJlc3NlZFRleEltYWdlM0RSb2J1c3RBTkdMRShHQ0dMZW51bSwgaW50LCBHQ0dMZW51bSwgR0NH
THNpemVpLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSwgaW50LCBHQ0dMc2l6ZWksIEdDR0xTcGFuPGNv
bnN0IEdDR0x2b2lkPikKIHsKICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lO
VkFMSURfT1BFUkFUSU9OKTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmNv
bXByZXNzZWRUZXhTdWJJbWFnZTNEUm9idXN0QU5HTEUoR0NHTGVudW0sIGludCwgaW50LCBpbnQs
IGludCwgR0NHTHNpemVpLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSwgR0NHTGVudW0sIEdDR0xzaXpl
aSwgR0NHTHNpemVpLCBjb25zdCB2b2lkKikKK3ZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9u
Ojpjb21wcmVzc2VkVGV4U3ViSW1hZ2UzRFJvYnVzdEFOR0xFKEdDR0xlbnVtLCBpbnQsIGludCwg
aW50LCBpbnQsIEdDR0xzaXplaSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWksIEdDR0xlbnVtLCBHQ0dM
c2l6ZWksIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPikKIHsKICAgICBtX2NvbnRleHQtPnN5bnRo
ZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKIH0KIAogCi12b2lkIEV4dGVuc2lv
bnNHTE9wZW5HTENvbW1vbjo6dGV4SW1hZ2UzRFJvYnVzdEFOR0xFKEdDR0xlbnVtLCBpbnQsIGlu
dCwgR0NHTHNpemVpLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSwgaW50LCBHQ0dMZW51bSwgR0NHTGVu
dW0sIEdDR0xzaXplaSwgY29uc3Qgdm9pZCAqKQordm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21t
b246OnRleEltYWdlM0RSb2J1c3RBTkdMRShHQ0dMZW51bSwgaW50LCBpbnQsIEdDR0xzaXplaSwg
R0NHTHNpemVpLCBHQ0dMc2l6ZWksIGludCwgR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dMU3Bhbjxj
b25zdCBHQ0dMdm9pZD4pCiB7CiAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9J
TlZBTElEX09QRVJBVElPTik7CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjp0
ZXhTdWJJbWFnZTNEUm9idXN0QU5HTEUoR0NHTGVudW0sIGludCwgaW50LCBpbnQsIGludCwgR0NH
THNpemVpLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSwgR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dMc2l6
ZWksIGNvbnN0IHZvaWQgKikKK3ZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjp0ZXhTdWJJ
bWFnZTNEUm9idXN0QU5HTEUoR0NHTGVudW0sIGludCwgaW50LCBpbnQsIGludCwgR0NHTHNpemVp
LCBHQ0dMc2l6ZWksIEdDR0xzaXplaSwgR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dMU3Bhbjxjb25z
dCBHQ0dMdm9pZD4pCiB7CiAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZB
TElEX09QRVJBVElPTik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmgKaW5k
ZXggOTdlZWRmYjc0ODVjODMyZjc5M2M4Y2ZmMGZhMTdmYmZmYmU2NTg4ZC4uMTc2Mzc5YWY0MTc0
MDc1ZGRhMTQzOWJkNTNjOTY2MzZiYWY3OWRhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVu
R0xDb21tb24uaApAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiAgICAgR0NHTGJvb2xlYW4gaXNW
ZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybUdMT2JqZWN0KSBvdmVycmlkZSA9IDA7CiAgICAgdm9pZCBi
aW5kVmVydGV4QXJyYXlPRVMoUGxhdGZvcm1HTE9iamVjdCkgb3ZlcnJpZGUgPSAwOwogCi0gICAg
dm9pZCBkcmF3QnVmZmVyc0VYVChHQ0dMc2l6ZWksIGNvbnN0IEdDR0xlbnVtKikgb3ZlcnJpZGUg
PSAwOworICAgIHZvaWQgZHJhd0J1ZmZlcnNFWFQoR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+KSBv
dmVycmlkZSA9IDA7CiAKICAgICBTdHJpbmcgZ2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xF
KFBsYXRmb3JtR0xPYmplY3QpIG92ZXJyaWRlOwogCkBAIC03MCwxNyArNzAsMTcgQEAgcHVibGlj
OgogCiAgICAgLy8gR0xfQU5HTEVfcm9idXN0X2NsaWVudF9tZW1vcnkKICAgICB2b2lkIHJlYWRQ
aXhlbHNSb2J1c3RBTkdMRShpbnQgeCwgaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVp
IGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xzaXplaSAqY29sdW1ucywgR0NHTHNpemVpICpyb3dz
LCB2b2lkICpwaXhlbHMpIG92ZXJyaWRlOwotICAgIHZvaWQgdGV4SW1hZ2UyRFJvYnVzdEFOR0xF
KEdDR0xlbnVtIHRhcmdldCwgaW50IGxldmVsLCBpbnQgaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXpl
aSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgaW50IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0LCBH
Q0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3Qgdm9pZCAqcGl4ZWxzKSBvdmVy
cmlkZTsKKyAgICB2b2lkIHRleEltYWdlMkRSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIGlu
dCBsZXZlbCwgaW50IGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBo
ZWlnaHQsIGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTFNw
YW48Y29uc3QgR0NHTHZvaWQ+IHBpeGVscykgb3ZlcnJpZGU7CiAgICAgdm9pZCB0ZXhQYXJhbWV0
ZXJmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXpl
aSBidWZTaXplLCBjb25zdCBHQ0dMZmxvYXQgKnBhcmFtcykgb3ZlcnJpZGU7CiAgICAgdm9pZCB0
ZXhQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUs
IEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAg
IHZvaWQgdGV4U3ViSW1hZ2UyRFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgaW50IGxldmVs
LCBpbnQgeG9mZnNldCwgaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhl
aWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
Y29uc3Qgdm9pZCAqcGl4ZWxzKSBvdmVycmlkZTsKLSAgICB2b2lkIGNvbXByZXNzZWRUZXhJbWFn
ZTJEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVy
bmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIGludCBib3JkZXIs
IEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCB2b2lkKiBkYXRh
KSBvdmVycmlkZTsKLSAgICB2b2lkIGNvbXByZXNzZWRUZXhTdWJJbWFnZTJEUm9idXN0QU5HTEUo
R0NHTGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWwsIGludCB4b2Zmc2V0LCBpbnQgeW9mZnNldCwgR0NH
THNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXpl
aSBpbWFnZVNpemUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCB2b2lkKiBkYXRhKSBvdmVycmlk
ZTsKLSAgICB2b2lkIGNvbXByZXNzZWRUZXhJbWFnZTNEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFy
Z2V0LCBpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgs
IEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgaW50IGJvcmRlciwgR0NHTHNpemVp
IGltYWdlU2l6ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IHZvaWQqIGRhdGEpIG92ZXJyaWRl
OwotICAgIHZvaWQgY29tcHJlc3NlZFRleFN1YkltYWdlM0RSb2J1c3RBTkdMRShHQ0dMZW51bSB0
YXJnZXQsIGludCBsZXZlbCwgaW50IHhvZmZzZXQsIGludCB5b2Zmc2V0LCBpbnQgem9mZnNldCwg
R0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xl
bnVtIGZvcm1hdCwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0
IHZvaWQqIGRhdGEpIG92ZXJyaWRlOwotCi0gICAgdm9pZCB0ZXhJbWFnZTNEUm9idXN0QU5HTEUo
R0NHTGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWwsIGludCBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVp
IHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIGludCBib3JkZXIsIEdD
R0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IHZv
aWQgKnBpeGVscykgb3ZlcnJpZGU7Ci0gICAgdm9pZCB0ZXhTdWJJbWFnZTNEUm9idXN0QU5HTEUo
R0NHTGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWwsIGludCB4b2Zmc2V0LCBpbnQgeW9mZnNldCwgaW50
IHpvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRl
cHRoLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBj
b25zdCB2b2lkICpwaXhlbHMpIG92ZXJyaWRlOworICAgIHZvaWQgdGV4U3ViSW1hZ2UyRFJvYnVz
dEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgaW50IGxldmVsLCBpbnQgeG9mZnNldCwgaW50IHlvZmZz
ZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBH
Q0dMZW51bSB0eXBlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gcGl4ZWxzKSBvdmVycmlkZTsK
KyAgICB2b2lkIGNvbXByZXNzZWRUZXhJbWFnZTJEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0
LCBpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdD
R0xzaXplaSBoZWlnaHQsIGludCBib3JkZXIsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xTcGFu
PGNvbnN0IEdDR0x2b2lkPiBkYXRhKSBvdmVycmlkZTsKKyAgICB2b2lkIGNvbXByZXNzZWRUZXhT
dWJJbWFnZTJEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWwsIGludCB4b2Zm
c2V0LCBpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dM
ZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lk
PiBkYXRhKSBvdmVycmlkZTsKKyAgICB2b2lkIGNvbXByZXNzZWRUZXhJbWFnZTNEUm9idXN0QU5H
TEUoR0NHTGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBH
Q0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgaW50IGJv
cmRlciwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEp
IG92ZXJyaWRlOworICAgIHZvaWQgY29tcHJlc3NlZFRleFN1YkltYWdlM0RSb2J1c3RBTkdMRShH
Q0dMZW51bSB0YXJnZXQsIGludCBsZXZlbCwgaW50IHhvZmZzZXQsIGludCB5b2Zmc2V0LCBpbnQg
em9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVw
dGgsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTFNwYW48Y29uc3Qg
R0NHTHZvaWQ+IGRhdGEpIG92ZXJyaWRlOworCisgICAgdm9pZCB0ZXhJbWFnZTNEUm9idXN0QU5H
TEUoR0NHTGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWwsIGludCBpbnRlcm5hbGZvcm1hdCwgR0NHTHNp
emVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIGludCBib3JkZXIs
IEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+
IHBpeGVscykgb3ZlcnJpZGU7CisgICAgdm9pZCB0ZXhTdWJJbWFnZTNEUm9idXN0QU5HTEUoR0NH
TGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWwsIGludCB4b2Zmc2V0LCBpbnQgeW9mZnNldCwgaW50IHpv
ZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRo
LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lk
PiBwaXhlbHMpIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0UXVlcnlpdlJvYnVzdEFOR0xFKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkg
Kmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKICAgICB2b2lkIGdldFF1ZXJ5T2Jq
ZWN0dWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMpIG92ZXJyaWRlOwog
ICAgIHZvaWQgZ2V0QnVmZmVyUG9pbnRlcnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIHZvaWQg
KipwYXJhbXMpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5jcHAKaW5kZXgg
ZDI4ZjRhMDMxZWJkYzQ4Mzg3NWQzOTg0ODdkNTc4NzQ4ZmRlNDdlNy4uMzZjM2VmMzhmOThiOTlh
ZjAxMTUwNjk5MTQyN2JhY2VmY2JiOGFjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMu
Y3BwCkBAIC0xODAsNyArMTgwLDcgQEAgdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xFUzo6YmluZFZl
cnRleEFycmF5T0VTKFBsYXRmb3JtR0xPYmplY3QgYXJyYXkpCiAgICAgICAgIG1fY29udGV4dC0+
c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwogfQogCi12b2lkIEV4dGVu
c2lvbnNHTE9wZW5HTEVTOjpkcmF3QnVmZmVyc0VYVChHQ0dMc2l6ZWkgLyogbiAqLywgY29uc3Qg
R0NHTGVudW0qIC8qIGJ1ZnMgKi8pCit2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTEVTOjpkcmF3QnVm
ZmVyc0VYVChHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4gLyogYnVmcyAqLykKIHsKICAgICAvLyBG
SVhNRTogaW1wbGVtZW50IHRoZSBzdXBwb3J0LgogICAgIG5vdEltcGxlbWVudGVkKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9u
c0dMT3BlbkdMRVMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9F
eHRlbnNpb25zR0xPcGVuR0xFUy5oCmluZGV4IGM3NDgyNWM4MWVhZDBhNzQ2MGFlYTFkYWYxYzlh
ZTE4MzcwMjkzOTYuLjAxN2E0NWI3Mzk4ZDA5OTJlZDE0NzY3ZjA3NjdlMDRiNDY0MTYyODMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNp
b25zR0xPcGVuR0xFUy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5oCkBAIC04NSw3ICs4NSw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIGRlbGV0ZVZlcnRleEFycmF5T0VTKFBsYXRmb3JtR0xPYmplY3QpIG92ZXJyaWRlOwog
ICAgIEdDR0xib29sZWFuIGlzVmVydGV4QXJyYXlPRVMoUGxhdGZvcm1HTE9iamVjdCkgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBiaW5kVmVydGV4QXJyYXlPRVMoUGxhdGZvcm1HTE9iamVjdCkgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCBkcmF3QnVmZmVyc0VYVChHQ0dMc2l6ZWksIGNvbnN0IEdDR0xlbnVtKikg
b3ZlcnJpZGU7CisgICAgdm9pZCBkcmF3QnVmZmVyc0VYVChHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51
bT4pIG92ZXJyaWRlOwogCiAgICAgdm9pZCBkcmF3QXJyYXlzSW5zdGFuY2VkKEdDR0xlbnVtIG1v
ZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xzaXplaSBjb3VudCwgR0NHTHNpemVpIHByaW1jb3VudCkg
b3ZlcnJpZGU7CiAgICAgdm9pZCBkcmF3RWxlbWVudHNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwg
R0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBsb25nIGxvbmcgb2Zmc2V0LCBHQ0dMc2l6
ZWkgcHJpbWNvdW50KSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wu
Y3BwCmluZGV4IGYxNWI3ZjI5NWE5NTFiMmQ4OTRlYzBmYTkxOTU0ZTk2ZjQ3YTRjMTMuLjg0MmI2
YWJmN2I2NmE1MTg5OWZlZjI5MjgzZDhiOWRkOTg3MDRkZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNz
Q29udGV4dEdMT3BlbkdMLmNwcApAQCAtNzYsOCArNzYsOCBAQCBib29sIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjp0ZXhJbWFnZTJEUmVzb3VyY2VTYWZlKEdDR0xlbnVtIHRhcmdldCwgR0NHTGlu
dCBsZQogewogICAgIEFTU0VSVCh1bnBhY2tBbGlnbm1lbnQgPT0gMSB8fCB1bnBhY2tBbGlnbm1l
bnQgPT0gMiB8fCB1bnBhY2tBbGlnbm1lbnQgPT0gNCB8fCB1bnBhY2tBbGlnbm1lbnQgPT0gOCk7
CiAgICAgVW5pcXVlQXJyYXk8dW5zaWduZWQgY2hhcj4gemVybzsKKyAgICB1bnNpZ25lZCBzaXpl
ID0gMDsKICAgICBpZiAod2lkdGggPiAwICYmIGhlaWdodCA+IDApIHsKLSAgICAgICAgdW5zaWdu
ZWQgc2l6ZTsKICAgICAgICAgUGl4ZWxTdG9yZVBhcmFtcyBwYXJhbXM7CiAgICAgICAgIHBhcmFt
cy5hbGlnbm1lbnQgPSB1bnBhY2tBbGlnbm1lbnQ7CiAgICAgICAgIEdDR0xlbnVtIGVycm9yID0g
Y29tcHV0ZUltYWdlU2l6ZUluQnl0ZXMoZm9ybWF0LCB0eXBlLCB3aWR0aCwgaGVpZ2h0LCAxLCBw
YXJhbXMsICZzaXplLCBudWxscHRyLCBudWxscHRyKTsKQEAgLTkyLDcgKzkyLDcgQEAgYm9vbCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dGV4SW1hZ2UyRFJlc291cmNlU2FmZShHQ0dMZW51bSB0
YXJnZXQsIEdDR0xpbnQgbGUKICAgICAgICAgfQogICAgICAgICBtZW1zZXQoemVyby5nZXQoKSwg
MCwgc2l6ZSk7CiAgICAgfQotICAgIHJldHVybiB0ZXhJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIGlu
dGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIsIGZvcm1hdCwgdHlwZSwgemVyby5n
ZXQoKSk7CisgICAgcmV0dXJuIHRleEltYWdlMkQodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3Jt
YXQsIHdpZHRoLCBoZWlnaHQsIGJvcmRlciwgZm9ybWF0LCB0eXBlLCBtYWtlR0NHTFNwYW4oemVy
by5nZXQoKSwgc2l6ZSkpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMLmgKaW5kZXggMDk5MjY3OGI4ZGMxZTE4M2Q5ODI1OWI3NzMxNWMzNjEyMTcwMTMwZi4uNTQx
MzQ2ZmQxZjg1M2Q0NWJlMzIzYTcyZjJlZjIzNzgwMzkyMDE3OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdM
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNz
Q29udGV4dEdMT3BlbkdMLmgKQEAgLTExOSw5ICsxMTksNiBAQCBwdWJsaWM6CiAgICAgLy8gV2l0
aCBtdWx0aXNhbXBsaW5nIG9uLCBibGl0IGZyb20gbXVsdGlzYW1wbGVGQk8gdG8gcmVndWxhciBG
Qk8uCiAgICAgdm9pZCBwcmVwYXJlVGV4dHVyZSgpOwogCi0gICAgLy8gRXF1aXZhbGVudCB0byA6
OmdsVGV4SW1hZ2UyRCgpLiBBbGxvd3MgcGl4ZWxzPT0wIHdpdGggbm8gYWxsb2NhdGlvbi4KLSAg
ICB2b2lkIHRleEltYWdlMkREaXJlY3QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBH
Q0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0
LCBHQ0dMaW50IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBjb25zdCB2
b2lkKiBwaXhlbHMpOwotCiAgICAgLy8gR2V0IGFuIGF0dHJpYnV0ZSBsb2NhdGlvbiB3aXRob3V0
IGNoZWNraW5nIHRoZSBuYW1lIC0+IG1hbmdsZWRuYW1lIG1hcHBpbmcuCiAgICAgaW50IGdldEF0
dHJpYkxvY2F0aW9uRGlyZWN0KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgY29uc3QgU3RyaW5n
JiBuYW1lKTsKIApAQCAtMTI5LDYgKzEyNiw5IEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbXBpbGVT
aGFkZXJEaXJlY3QoUGxhdGZvcm1HTE9iamVjdCk7CiAKICNpZiAhVVNFKEFOR0xFKQorICAgIC8v
IEVxdWl2YWxlbnQgdG8gOjpnbFRleEltYWdlMkQoKS4gQWxsb3dzIHBpeGVscz09MCB3aXRoIG5v
IGFsbG9jYXRpb24uCisgICAgdm9pZCB0ZXhJbWFnZTJERGlyZWN0KEdDR0xlbnVtIHRhcmdldCwg
R0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwg
R0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVu
dW0gdHlwZSwgY29uc3Qgdm9pZCogcGl4ZWxzKTsKKwogICAgIC8vIEhlbHBlciB0byB0ZXhJbWFn
ZTJEIHdpdGggcGl4ZWw9PTAgY2FzZTogcGl4ZWxzIGFyZSBpbml0aWFsaXplZCB0byAwLgogICAg
IC8vIFJldHVybiB0cnVlIGlmIG5vIEdMIGVycm9yIGlzIHN5bnRoZXNpemVkLgogICAgIC8vIEJ5
IGRlZmF1bHQsIGFsaWdubWVudCBpcyA0LCB0aGUgT3BlbkdMIGRlZmF1bHQgc2V0dGluZy4KQEAg
LTE1NSw4ICsxNTUsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBibGVuZEZ1bmNTZXBhcmF0ZShHQ0dM
ZW51bSBzcmNSR0IsIEdDR0xlbnVtIGRzdFJHQiwgR0NHTGVudW0gc3JjQWxwaGEsIEdDR0xlbnVt
IGRzdEFscGhhKSBmaW5hbDsKIAogICAgIHZvaWQgYnVmZmVyRGF0YShHQ0dMZW51bSB0YXJnZXQs
IEdDR0xzaXplaXB0ciBzaXplLCBHQ0dMZW51bSB1c2FnZSkgZmluYWw7Ci0gICAgdm9pZCBidWZm
ZXJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpcHRyIHNpemUsIGNvbnN0IHZvaWQqIGRh
dGEsIEdDR0xlbnVtIHVzYWdlKSBmaW5hbDsKLSAgICB2b2lkIGJ1ZmZlclN1YkRhdGEoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMaW50cHRyIG9mZnNldCwgR0NHTHNpemVpcHRyIHNpemUsIGNvbnN0IHZv
aWQqIGRhdGEpIGZpbmFsOworICAgIHZvaWQgYnVmZmVyRGF0YShHQ0dMZW51bSB0YXJnZXQsIEdD
R0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRhLCBHQ0dMZW51bSB1c2FnZSkgZmluYWw7CisgICAg
dm9pZCBidWZmZXJTdWJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludHB0ciBvZmZzZXQsIEdD
R0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRhKSBmaW5hbDsKIAogICAgIEdDR0xlbnVtIGNoZWNr
RnJhbWVidWZmZXJTdGF0dXMoR0NHTGVudW0gdGFyZ2V0KSBmaW5hbDsKICAgICB2b2lkIGNsZWFy
KEdDR0xiaXRmaWVsZCBtYXNrKSBmaW5hbDsKQEAgLTI1MywzMCArMjUzLDMwIEBAIHB1YmxpYzoK
ICAgICB2b2lkIHN0ZW5jaWxPcChHQ0dMZW51bSBmYWlsLCBHQ0dMZW51bSB6ZmFpbCwgR0NHTGVu
dW0genBhc3MpIGZpbmFsOwogICAgIHZvaWQgc3RlbmNpbE9wU2VwYXJhdGUoR0NHTGVudW0gZmFj
ZSwgR0NHTGVudW0gZmFpbCwgR0NHTGVudW0gemZhaWwsIEdDR0xlbnVtIHpwYXNzKSBmaW5hbDsK
IAotICAgIGJvb2wgdGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdD
R0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQs
IEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIGNvbnN0IHZv
aWQqIHBpeGVscykgZmluYWw7CisgICAgYm9vbCB0ZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwg
R0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVu
dW0gdHlwZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IHBpeGVscykgZmluYWw7CiAgICAgdm9p
ZCB0ZXhQYXJhbWV0ZXJmKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xmbG9h
dCBwYXJhbSkgZmluYWw7CiAgICAgdm9pZCB0ZXhQYXJhbWV0ZXJpKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGVudW0gcG5hbWUsIEdDR0xpbnQgcGFyYW0pIGZpbmFsOwotICAgIHZvaWQgdGV4U3ViSW1h
Z2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NH
TGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVt
IGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgY29uc3Qgdm9pZCogcGl4ZWxzKSBmaW5hbDsKKyAgICB2
b2lkIHRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50
IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVp
Z2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2
b2lkPiBwaXhlbHMpIGZpbmFsOwogCiAgICAgdm9pZCB1bmlmb3JtMWYoR0NHTGludCBsb2NhdGlv
biwgR0NHTGZsb2F0IHgpIGZpbmFsOwotICAgIHZvaWQgdW5pZm9ybTFmdihHQ0dMaW50IGxvY2F0
aW9uLCBHQ0dMc2l6ZWksIGNvbnN0IEdDR0xmbG9hdCogdikgZmluYWw7CisgICAgdm9pZCB1bmlm
b3JtMWZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gdikgZmlu
YWw7CiAgICAgdm9pZCB1bmlmb3JtMWkoR0NHTGludCBsb2NhdGlvbiwgR0NHTGludCB4KSBmaW5h
bDsKLSAgICB2b2lkIHVuaWZvcm0xaXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpLCBjb25z
dCBHQ0dMaW50KiB2KSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm0xaXYoR0NHTGludCBsb2NhdGlv
biwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gdikgZmluYWw7CiAgICAgdm9pZCB1bmlmb3JtMmYo
R0NHTGludCBsb2NhdGlvbiwgR0NHTGZsb2F0IHgsIEdDR0xmbG9hdCB5KSBmaW5hbDsKLSAgICB2
b2lkIHVuaWZvcm0yZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpLCBjb25zdCBHQ0dMZmxv
YXQqIHYpIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybTJmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dM
U3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IHYpIGZpbmFsOwogICAgIHZvaWQgdW5pZm9ybTJpKEdDR0xp
bnQgbG9jYXRpb24sIEdDR0xpbnQgeCwgR0NHTGludCB5KSBmaW5hbDsKLSAgICB2b2lkIHVuaWZv
cm0yaXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpLCBjb25zdCBHQ0dMaW50KiB2KSBmaW5h
bDsKKyAgICB2b2lkIHVuaWZvcm0yaXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3Qg
R0NHTGludD4gdikgZmluYWw7CiAgICAgdm9pZCB1bmlmb3JtM2YoR0NHTGludCBsb2NhdGlvbiwg
R0NHTGZsb2F0IHgsIEdDR0xmbG9hdCB5LCBHQ0dMZmxvYXQgeikgZmluYWw7Ci0gICAgdm9pZCB1
bmlmb3JtM2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSwgY29uc3QgR0NHTGZsb2F0KiB2
KSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm0zZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48
Y29uc3QgR0NHTGZsb2F0PiB2KSBmaW5hbDsKICAgICB2b2lkIHVuaWZvcm0zaShHQ0dMaW50IGxv
Y2F0aW9uLCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTGludCB6KSBmaW5hbDsKLSAgICB2b2lk
IHVuaWZvcm0zaXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpLCBjb25zdCBHQ0dMaW50KiB2
KSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm0zaXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48
Y29uc3QgR0NHTGludD4gdikgZmluYWw7CiAgICAgdm9pZCB1bmlmb3JtNGYoR0NHTGludCBsb2Nh
dGlvbiwgR0NHTGZsb2F0IHgsIEdDR0xmbG9hdCB5LCBHQ0dMZmxvYXQgeiwgR0NHTGZsb2F0IHcp
IGZpbmFsOwotICAgIHZvaWQgdW5pZm9ybTRmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWks
IGNvbnN0IEdDR0xmbG9hdCogdikgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtNGZ2KEdDR0xpbnQg
bG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gdikgZmluYWw7CiAgICAgdm9pZCB1
bmlmb3JtNGkoR0NHTGludCBsb2NhdGlvbiwgR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xpbnQg
eiwgR0NHTGludCB3KSBmaW5hbDsKLSAgICB2b2lkIHVuaWZvcm00aXYoR0NHTGludCBsb2NhdGlv
biwgR0NHTHNpemVpLCBjb25zdCBHQ0dMaW50KiB2KSBmaW5hbDsKLSAgICB2b2lkIHVuaWZvcm1N
YXRyaXgyZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpLCBHQ0dMYm9vbGVhbiB0cmFuc3Bv
c2UsIGNvbnN0IEdDR0xmbG9hdCogdmFsdWUpIGZpbmFsOwotICAgIHZvaWQgdW5pZm9ybU1hdHJp
eDNmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWksIEdDR0xib29sZWFuIHRyYW5zcG9zZSwg
Y29uc3QgR0NHTGZsb2F0KiB2YWx1ZSkgZmluYWw7Ci0gICAgdm9pZCB1bmlmb3JtTWF0cml4NGZ2
KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25z
dCBHQ0dMZmxvYXQqIHZhbHVlKSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm00aXYoR0NHTGludCBs
b2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gdikgZmluYWw7CisgICAgdm9pZCB1bmlm
b3JtTWF0cml4MmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NH
TFNwYW48Y29uc3QgR0NHTGZsb2F0PiB2YWx1ZSkgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtTWF0
cml4M2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48
Y29uc3QgR0NHTGZsb2F0PiB2YWx1ZSkgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtTWF0cml4NGZ2
KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3Qg
R0NHTGZsb2F0PiB2YWx1ZSkgZmluYWw7CiAKICAgICB2b2lkIHVzZVByb2dyYW0oUGxhdGZvcm1H
TE9iamVjdCkgZmluYWw7CiAgICAgdm9pZCB2YWxpZGF0ZVByb2dyYW0oUGxhdGZvcm1HTE9iamVj
dCkgZmluYWw7CkBAIC0yODYsMTMgKzI4NiwxMyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogICAgIHZv
aWQgdmVydGV4QXR0cmliMWYoR0NHTHVpbnQgaW5kZXgsIEdDR0xmbG9hdCB4KSBmaW5hbDsKLSAg
ICB2b2lkIHZlcnRleEF0dHJpYjFmdihHQ0dMdWludCBpbmRleCwgY29uc3QgR0NHTGZsb2F0KiB2
YWx1ZXMpIGZpbmFsOworICAgIHZvaWQgdmVydGV4QXR0cmliMWZ2KEdDR0x1aW50IGluZGV4LCBH
Q0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQsIDE+IHZhbHVlcykgZmluYWw7CiAgICAgdm9pZCB2ZXJ0
ZXhBdHRyaWIyZihHQ0dMdWludCBpbmRleCwgR0NHTGZsb2F0IHgsIEdDR0xmbG9hdCB5KSBmaW5h
bDsKLSAgICB2b2lkIHZlcnRleEF0dHJpYjJmdihHQ0dMdWludCBpbmRleCwgY29uc3QgR0NHTGZs
b2F0KiB2YWx1ZXMpIGZpbmFsOworICAgIHZvaWQgdmVydGV4QXR0cmliMmZ2KEdDR0x1aW50IGlu
ZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQsIDI+IHZhbHVlcykgZmluYWw7CiAgICAgdm9p
ZCB2ZXJ0ZXhBdHRyaWIzZihHQ0dMdWludCBpbmRleCwgR0NHTGZsb2F0IHgsIEdDR0xmbG9hdCB5
LCBHQ0dMZmxvYXQgeikgZmluYWw7Ci0gICAgdm9pZCB2ZXJ0ZXhBdHRyaWIzZnYoR0NHTHVpbnQg
aW5kZXgsIGNvbnN0IEdDR0xmbG9hdCogdmFsdWVzKSBmaW5hbDsKKyAgICB2b2lkIHZlcnRleEF0
dHJpYjNmdihHQ0dMdWludCBpbmRleCwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0LCAzPiB2YWx1
ZXMpIGZpbmFsOwogICAgIHZvaWQgdmVydGV4QXR0cmliNGYoR0NHTHVpbnQgaW5kZXgsIEdDR0xm
bG9hdCB4LCBHQ0dMZmxvYXQgeSwgR0NHTGZsb2F0IHosIEdDR0xmbG9hdCB3KSBmaW5hbDsKLSAg
ICB2b2lkIHZlcnRleEF0dHJpYjRmdihHQ0dMdWludCBpbmRleCwgY29uc3QgR0NHTGZsb2F0KiB2
YWx1ZXMpIGZpbmFsOworICAgIHZvaWQgdmVydGV4QXR0cmliNGZ2KEdDR0x1aW50IGluZGV4LCBH
Q0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQsIDQ+IHZhbHVlcykgZmluYWw7CiAgICAgdm9pZCB2ZXJ0
ZXhBdHRyaWJQb2ludGVyKEdDR0x1aW50IGluZGV4LCBHQ0dMaW50IHNpemUsIEdDR0xlbnVtIHR5
cGUsIEdDR0xib29sZWFuIG5vcm1hbGl6ZWQsIEdDR0xzaXplaSBzdHJpZGUsIEdDR0xpbnRwdHIg
b2Zmc2V0KSBmaW5hbDsKIAogICAgIHZvaWQgdmlld3BvcnQoR0NHTGludCB4LCBHQ0dMaW50IHks
IEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkgZmluYWw7CkBAIC0zMjMsOCArMzIz
LDggQEAgcHVibGljOgogCiAgICAgdm9pZCBibGl0RnJhbWVidWZmZXIoR0NHTGludCBzcmNYMCwg
R0NHTGludCBzcmNZMCwgR0NHTGludCBzcmNYMSwgR0NHTGludCBzcmNZMSwgR0NHTGludCBkc3RY
MCwgR0NHTGludCBkc3RZMCwgR0NHTGludCBkc3RYMSwgR0NHTGludCBkc3RZMSwgR0NHTGJpdGZp
ZWxkIG1hc2ssIEdDR0xlbnVtIGZpbHRlcikgZmluYWw7CiAgICAgdm9pZCBmcmFtZWJ1ZmZlclRl
eHR1cmVMYXllcihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGF0dGFjaG1lbnQsIFBsYXRmb3Jt
R0xPYmplY3QgdGV4dHVyZSwgR0NHTGludCBsZXZlbCwgR0NHTGludCBsYXllcikgZmluYWw7Ci0g
ICAgdm9pZCBpbnZhbGlkYXRlRnJhbWVidWZmZXIoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkg
bnVtQXR0YWNobWVudHMsIGNvbnN0IEdDR0xlbnVtKiBhdHRhY2htZW50cykgZmluYWw7Ci0gICAg
dm9pZCBpbnZhbGlkYXRlU3ViRnJhbWVidWZmZXIoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkg
bnVtQXR0YWNobWVudHMsIGNvbnN0IEdDR0xlbnVtKiBhdHRhY2htZW50cywgR0NHTGludCB4LCBH
Q0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkgZmluYWw7CisgICAg
dm9pZCBpbnZhbGlkYXRlRnJhbWVidWZmZXIoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMU3Bhbjxjb25z
dCBHQ0dMZW51bT4gYXR0YWNobWVudHMpIGZpbmFsOworICAgIHZvaWQgaW52YWxpZGF0ZVN1YkZy
YW1lYnVmZmVyKEdDR0xlbnVtIHRhcmdldCwgR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+IGF0dGFj
aG1lbnRzLCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkg
aGVpZ2h0KSBmaW5hbDsKICAgICB2b2lkIHJlYWRCdWZmZXIoR0NHTGVudW0gc3JjKSBmaW5hbDsK
IAogICAgIC8vIGdldEludGVybmFsRm9ybWF0UGFyYW1ldGVyCkBAIC0zNDIsMjggKzM0MiwyOCBA
QCBwdWJsaWM6CiAgICAgdm9pZCB1bmlmb3JtMnVpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0x1aW50
IHYwLCBHQ0dMdWludCB2MSkgZmluYWw7CiAgICAgdm9pZCB1bmlmb3JtM3VpKEdDR0xpbnQgbG9j
YXRpb24sIEdDR0x1aW50IHYwLCBHQ0dMdWludCB2MSwgR0NHTHVpbnQgdjIpIGZpbmFsOwogICAg
IHZvaWQgdW5pZm9ybTR1aShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMdWludCB2MCwgR0NHTHVpbnQg
djEsIEdDR0x1aW50IHYyLCBHQ0dMdWludCB2MykgZmluYWw7Ci0gICAgdm9pZCB1bmlmb3JtMXVp
dihHQ0dMaW50IGxvY2F0aW9uLCBjb25zdCBHQ0dMdWludCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zm
c2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpIGZpbmFsOwotICAgIHZvaWQgdW5pZm9ybTJ1aXYoR0NH
TGludCBsb2NhdGlvbiwgY29uc3QgR0NHTHVpbnQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwg
R0NHTHVpbnQgc3JjTGVuZ3RoKSBmaW5hbDsKLSAgICB2b2lkIHVuaWZvcm0zdWl2KEdDR0xpbnQg
bG9jYXRpb24sIGNvbnN0IEdDR0x1aW50KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1
aW50IHNyY0xlbmd0aCkgZmluYWw7Ci0gICAgdm9pZCB1bmlmb3JtNHVpdihHQ0dMaW50IGxvY2F0
aW9uLCBjb25zdCBHQ0dMdWludCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBz
cmNMZW5ndGgpIGZpbmFsOwotICAgIHZvaWQgdW5pZm9ybU1hdHJpeDJ4M2Z2KEdDR0xpbnQgbG9j
YXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dM
dWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkgZmluYWw7Ci0gICAgdm9pZCB1bmlm
b3JtTWF0cml4M3gyZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBj
b25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVu
Z3RoKSBmaW5hbDsKLSAgICB2b2lkIHVuaWZvcm1NYXRyaXgyeDRmdihHQ0dMaW50IGxvY2F0aW9u
LCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQg
c3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpIGZpbmFsOwotICAgIHZvaWQgdW5pZm9ybU1h
dHJpeDR4MmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3Qg
R0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkg
ZmluYWw7Ci0gICAgdm9pZCB1bmlmb3JtTWF0cml4M3g0ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NH
TGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNyY09m
ZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKSBmaW5hbDsKLSAgICB2b2lkIHVuaWZvcm1NYXRyaXg0
eDNmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xm
bG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpIGZpbmFs
OworICAgIHZvaWQgdW5pZm9ybTF1aXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3Qg
R0NHTHVpbnQ+KSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm0ydWl2KEdDR0xpbnQgbG9jYXRpb24s
IEdDR0xTcGFuPGNvbnN0IEdDR0x1aW50PikgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtM3VpdihH
Q0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdWludD4pIGZpbmFsOworICAgIHZv
aWQgdW5pZm9ybTR1aXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTHVpbnQ+
KSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm1NYXRyaXgyeDNmdihHQ0dMaW50IGxvY2F0aW9uLCBH
Q0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gZGF0YSkgZmlu
YWw7CisgICAgdm9pZCB1bmlmb3JtTWF0cml4M3gyZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJv
b2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEpIGZpbmFsOwor
ICAgIHZvaWQgdW5pZm9ybU1hdHJpeDJ4NGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFu
IHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiBkYXRhKSBmaW5hbDsKKyAgICB2
b2lkIHVuaWZvcm1NYXRyaXg0eDJmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFu
c3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gZGF0YSkgZmluYWw7CisgICAgdm9pZCB1
bmlmb3JtTWF0cml4M3g0ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3Nl
LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEpIGZpbmFsOworICAgIHZvaWQgdW5pZm9y
bU1hdHJpeDR4M2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NH
TFNwYW48Y29uc3QgR0NHTGZsb2F0PiBkYXRhKSBmaW5hbDsKICAgICB2b2lkIHZlcnRleEF0dHJp
Ykk0aShHQ0dMdWludCBpbmRleCwgR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xpbnQgeiwgR0NH
TGludCB3KSBmaW5hbDsKLSAgICB2b2lkIHZlcnRleEF0dHJpYkk0aXYoR0NHTHVpbnQgaW5kZXgs
IGNvbnN0IEdDR0xpbnQqIHZhbHVlcykgZmluYWw7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJJNGl2
KEdDR0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50LCA0PiB2YWx1ZXMpIGZpbmFs
OwogICAgIHZvaWQgdmVydGV4QXR0cmliSTR1aShHQ0dMdWludCBpbmRleCwgR0NHTHVpbnQgeCwg
R0NHTHVpbnQgeSwgR0NHTHVpbnQgeiwgR0NHTHVpbnQgdykgZmluYWw7Ci0gICAgdm9pZCB2ZXJ0
ZXhBdHRyaWJJNHVpdihHQ0dMdWludCBpbmRleCwgY29uc3QgR0NHTHVpbnQqIHZhbHVlcykgZmlu
YWw7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJJNHVpdihHQ0dMdWludCBpbmRleCwgR0NHTFNwYW48
Y29uc3QgR0NHTHVpbnQsIDQ+IHZhbHVlcykgZmluYWw7CiAgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJJ
UG9pbnRlcihHQ0dMdWludCBpbmRleCwgR0NHTGludCBzaXplLCBHQ0dMZW51bSB0eXBlLCBHQ0dM
c2l6ZWkgc3RyaWRlLCBHQ0dMaW50cHRyIG9mZnNldCkgZmluYWw7CiAKICAgICB2b2lkIGRyYXdS
YW5nZUVsZW1lbnRzKEdDR0xlbnVtIG1vZGUsIEdDR0x1aW50IHN0YXJ0LCBHQ0dMdWludCBlbmQs
IEdDR0xzaXplaSBjb3VudCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpIGZpbmFs
OwogCi0gICAgdm9pZCBkcmF3QnVmZmVycyhHQ0dMc2l6ZWkgbiwgY29uc3QgR0NHTGVudW0qIGJ1
ZnMpIGZpbmFsOwotICAgIHZvaWQgY2xlYXJCdWZmZXJpdihHQ0dMZW51bSBidWZmZXIsIEdDR0xp
bnQgZHJhd2J1ZmZlciwgY29uc3QgR0NHTGludCogdmFsdWVzLCBHQ0dMdWludCBzcmNPZmZzZXQp
IGZpbmFsOwotICAgIHZvaWQgY2xlYXJCdWZmZXJ1aXYoR0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50
IGRyYXdidWZmZXIsIGNvbnN0IEdDR0x1aW50KiB2YWx1ZXMsIEdDR0x1aW50IHNyY09mZnNldCkg
ZmluYWw7Ci0gICAgdm9pZCBjbGVhckJ1ZmZlcmZ2KEdDR0xlbnVtIGJ1ZmZlciwgR0NHTGludCBk
cmF3YnVmZmVyLCBjb25zdCBHQ0dMZmxvYXQqIHZhbHVlcywgR0NHTHVpbnQgc3JjT2Zmc2V0KSBm
aW5hbDsKKyAgICB2b2lkIGRyYXdCdWZmZXJzKEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVtPiBidWZz
KSBmaW5hbDsKKyAgICB2b2lkIGNsZWFyQnVmZmVyaXYoR0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50
IGRyYXdidWZmZXIsIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+IHZhbHVlcykgZmluYWw7CisgICAg
dm9pZCBjbGVhckJ1ZmZlcnVpdihHQ0dMZW51bSBidWZmZXIsIEdDR0xpbnQgZHJhd2J1ZmZlciwg
R0NHTFNwYW48Y29uc3QgR0NHTHVpbnQ+IHZhbHVlcykgZmluYWw7CisgICAgdm9pZCBjbGVhckJ1
ZmZlcmZ2KEdDR0xlbnVtIGJ1ZmZlciwgR0NHTGludCBkcmF3YnVmZmVyLCBHQ0dMU3Bhbjxjb25z
dCBHQ0dMZmxvYXQ+IHZhbHVlcykgZmluYWw7CiAgICAgdm9pZCBjbGVhckJ1ZmZlcmZpKEdDR0xl
bnVtIGJ1ZmZlciwgR0NHTGludCBkcmF3YnVmZmVyLCBHQ0dMZmxvYXQgZGVwdGgsIEdDR0xpbnQg
c3RlbmNpbCkgZmluYWw7CiAKICAgICBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZVF1ZXJ5KCkgZmlu
YWw7CkBAIC00MjQsMTkgKzQyNCw2IEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbXByZXNzZWRUZXhT
dWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0
LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NH
TGVudW0gZm9ybWF0LCBjb25zdCB2b2lkKiBzcmNEYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdD
R0x1aW50IHNyY0xlbmd0aE92ZXJyaWRlKTsKICNlbmRpZgogCi0gICAgdm9pZCB1bmlmb3JtMWZ2
KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zm
c2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpIGZpbmFsOwotICAgIHZvaWQgdW5pZm9ybTJmdihHQ0dM
aW50IGxvY2F0aW9uLCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwg
R0NHTHVpbnQgc3JjTGVuZ3RoKSBmaW5hbDsKLSAgICB2b2lkIHVuaWZvcm0zZnYoR0NHTGludCBs
b2NhdGlvbiwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1
aW50IHNyY0xlbmd0aCkgZmluYWw7Ci0gICAgdm9pZCB1bmlmb3JtNGZ2KEdDR0xpbnQgbG9jYXRp
b24sIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBz
cmNMZW5ndGgpIGZpbmFsOwotCi0gICAgdm9pZCB1bmlmb3JtMWl2KEdDR0xpbnQgbG9jYXRpb24s
IGNvbnN0IEdDR0xpbnQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVu
Z3RoKSBmaW5hbDsKLSAgICB2b2lkIHVuaWZvcm0yaXYoR0NHTGludCBsb2NhdGlvbiwgY29uc3Qg
R0NHTGludCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpIGZp
bmFsOwotICAgIHZvaWQgdW5pZm9ybTNpdihHQ0dMaW50IGxvY2F0aW9uLCBjb25zdCBHQ0dMaW50
KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkgZmluYWw7Ci0g
ICAgdm9pZCB1bmlmb3JtNGl2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0xpbnQqIGRhdGEs
IEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKSBmaW5hbDsKLQotICAgIHZv
aWQgdW5pZm9ybU1hdHJpeDJmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bv
c2UsIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBz
cmNMZW5ndGgpIGZpbmFsOwotICAgIHZvaWQgdW5pZm9ybU1hdHJpeDNmdihHQ0dMaW50IGxvY2F0
aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVp
bnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpIGZpbmFsOwotICAgIHZvaWQgdW5pZm9y
bU1hdHJpeDRmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0
IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgp
IGZpbmFsOwogICAgIHZvaWQgZ2V0QWN0aXZlVW5pZm9ybUJsb2NraXYoR0NHTHVpbnQgcHJvZ3Jh
bSwgR0NHTHVpbnQgdW5pZm9ybUJsb2NrSW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxH
Q0dMaW50PiBwYXJhbXMpIGZpbmFsOwogCiAjaWYgIVVTRShBTkdMRSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9w
ZW5HTEJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dy
YXBoaWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHAKaW5kZXggOWQ3Y2M5MjE2ZTdhNDJjZjBkOTcx
NjQ1NzIwODUxZjE0NTUxNzBkNS4uZTI2MjQ0OTYzMWUzMWZjMmZlMTAyYmUzYjE3YjkyZjA0ZWU3
NmQ3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Blbmds
L0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHAKQEAg
LTM0MSw5ICszNDEsOSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTaGFkZXJQ
cmVjaXNpb25Gb3JtYXQoR0NHTGVudW0gc2hhZGVyVHlwZSwgR0NHTAogICAgIH0KIH0KIAotYm9v
bCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdD
R0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdD
R0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVt
IHR5cGUsIGNvbnN0IHZvaWQqIHBpeGVscykKK2Jvb2wgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OnRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRl
cm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJv
cmRlciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dM
dm9pZD4gcGl4ZWxzKQogewotICAgIGlmICh3aWR0aCAmJiBoZWlnaHQgJiYgIXBpeGVscykgewor
ICAgIGlmICh3aWR0aCAmJiBoZWlnaHQgJiYgIXBpeGVscy5kYXRhKSB7CiAgICAgICAgIHN5bnRo
ZXNpemVHTEVycm9yKElOVkFMSURfVkFMVUUpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
fQpAQCAtNDAzLDcgKzQwMyw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnRleElt
YWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51CiAgICAgICAgIH0K
ICAgICB9CiAKLSAgICB0ZXhJbWFnZTJERGlyZWN0KHRhcmdldCwgbGV2ZWwsIG9wZW5HTEludGVy
bmFsRm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIsIG9wZW5HTEZvcm1hdCwgdHlwZSwgcGl4
ZWxzKTsKKyAgICB0ZXhJbWFnZTJERGlyZWN0KHRhcmdldCwgbGV2ZWwsIG9wZW5HTEludGVybmFs
Rm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIsIG9wZW5HTEZvcm1hdCwgdHlwZSwgcGl4ZWxz
LmRhdGEpOwogICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb21tb24u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMQ29tbW9uLmNwcAppbmRleCBhYmI3ZTI1YTA2ZjA4NWNjZWFjZmY1YWI2ZTgy
MDQ1N2NlOWEyZDkzLi4xMzRiNjY5M2NmNTNjODdjNjIyZDlhMzZkOTY0NzMxZWFhYWZmNzlmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0xDb21tb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvbW1vbi5jcHAKQEAgLTU1
MiwyMCArNTUyLDIwIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmJ1ZmZlckRhdGEo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWlwdHIgc2l6ZSwgR0NHCiAgICAgOjpnbEJ1ZmZlckRh
dGEodGFyZ2V0LCBzaXplLCAwLCB1c2FnZSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OmJ1ZmZlckRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWlwdHIgc2l6ZSwgY29u
c3Qgdm9pZCogZGF0YSwgR0NHTGVudW0gdXNhZ2UpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpidWZmZXJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTFNwYW48Y29uc3Qgdm9pZD4gZGF0
YSwgR0NHTGVudW0gdXNhZ2UpCiB7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgOjpnbEJ1ZmZlckRhdGEodGFyZ2V0LCBzaXplLCBkYXRhLCB1
c2FnZSk7CisgICAgOjpnbEJ1ZmZlckRhdGEodGFyZ2V0LCBkYXRhLmJ1ZlNpemUsIGRhdGEuZGF0
YSwgdXNhZ2UpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpidWZmZXJTdWJE
YXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludHB0ciBvZmZzZXQsIEdDR0xzaXplaXB0ciBzaXpl
LCBjb25zdCB2b2lkKiBkYXRhKQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6YnVmZmVy
U3ViRGF0YShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnRwdHIgb2Zmc2V0LCBHQ0dMU3Bhbjxjb25z
dCBHQ0dMdm9pZD4gZGF0YSkKIHsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICA6OmdsQnVmZmVyU3ViRGF0YSh0YXJnZXQsIG9mZnNldCwgc2l6
ZSwgZGF0YSk7CisgICAgOjpnbEJ1ZmZlclN1YkRhdGEodGFyZ2V0LCBvZmZzZXQsIGRhdGEuYnVm
U2l6ZSwgZGF0YS5kYXRhKTsKIH0KIAogR0NHTGVudW0gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoR0NHTGVudW0gdGFyZ2V0KQpAQCAtMTQxNSwxMiArMTQx
NSwxMiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMWYoR0NHTGludCBs
b2NhdGlvbiwgR0NHTGZsb2F0IHYwKQogICAgIDo6Z2xVbmlmb3JtMWYobG9jYXRpb24sIHYwKTsK
IH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTFmdihHQ0dMaW50IGxv
Y2F0aW9uLCBHQ0dMc2l6ZWkgc2l6ZSwgY29uc3QgR0NHTGZsb2F0KiBhcnJheSkKK3ZvaWQgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0xZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNw
YW48Y29uc3QgR0NHTGZsb2F0PiBhcnJheSkKIHsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVu
dCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICA6OmdsVW5pZm9ybTFmdihsb2NhdGlvbiwgc2l6
ZSwgYXJyYXkpOworICAgIDo6Z2xVbmlmb3JtMWZ2KGxvY2F0aW9uLCBhcnJheS5idWZTaXplLCBh
cnJheS5kYXRhKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTJm
KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xmbG9hdCB2MCwgR0NHTGZsb2F0IHYxKQpAQCAtMTQzMSwx
MyArMTQzMSwxMyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMmYoR0NH
TGludCBsb2NhdGlvbiwgR0NHTGZsb2F0IHYwLCBHQ0dMZmxvYQogICAgIDo6Z2xVbmlmb3JtMmYo
bG9jYXRpb24sIHYwLCB2MSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVu
aWZvcm0yZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIHNpemUsIGNvbnN0IEdDR0xmbG9h
dCogYXJyYXkpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMmZ2KEdDR0xp
bnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gYXJyYXkpCiB7Ci0gICAgLy8g
RklYTUU6IGxlbmd0aCBuZWVkcyB0byBiZSBhIG11bHRpcGxlIG9mIDIuCisgICAgQVNTRVJUKCEo
YXJyYXkuYnVmU2l6ZSAlIDIpKTsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICA6OmdsVW5pZm9ybTJmdihsb2NhdGlvbiwgc2l6ZSwgYXJyYXkp
OworICAgIDo6Z2xVbmlmb3JtMmZ2KGxvY2F0aW9uLCBhcnJheS5idWZTaXplIC8gMiwgYXJyYXku
ZGF0YSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0zZihHQ0dM
aW50IGxvY2F0aW9uLCBHQ0dMZmxvYXQgdjAsIEdDR0xmbG9hdCB2MSwgR0NHTGZsb2F0IHYyKQpA
QCAtMTQ0OCwxMyArMTQ0OCwxMyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlm
b3JtM2YoR0NHTGludCBsb2NhdGlvbiwgR0NHTGZsb2F0IHYwLCBHQ0dMZmxvYQogICAgIDo6Z2xV
bmlmb3JtM2YobG9jYXRpb24sIHYwLCB2MSwgdjIpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjp1bmlmb3JtM2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBzaXplLCBj
b25zdCBHQ0dMZmxvYXQqIGFycmF5KQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5p
Zm9ybTNmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGFycmF5
KQogewotICAgIC8vIEZJWE1FOiBsZW5ndGggbmVlZHMgdG8gYmUgYSBtdWx0aXBsZSBvZiAzLgor
ICAgIEFTU0VSVCghKGFycmF5LmJ1ZlNpemUgJSAzKSk7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1
cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgOjpnbFVuaWZvcm0zZnYobG9jYXRpb24s
IHNpemUsIGFycmF5KTsKKyAgICA6OmdsVW5pZm9ybTNmdihsb2NhdGlvbiwgYXJyYXkuYnVmU2l6
ZSAvIDMsIGFycmF5LmRhdGEpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1
bmlmb3JtNGYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGZsb2F0IHYwLCBHQ0dMZmxvYXQgdjEsIEdD
R0xmbG9hdCB2MiwgR0NHTGZsb2F0IHYzKQpAQCAtMTQ2NSwxMyArMTQ2NSwxMyBAQCB2b2lkIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtNGYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGZs
b2F0IHYwLCBHQ0dMZmxvYQogICAgIDo6Z2xVbmlmb3JtNGYobG9jYXRpb24sIHYwLCB2MSwgdjIs
IHYzKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTRmdihHQ0dM
aW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgc2l6ZSwgY29uc3QgR0NHTGZsb2F0KiBhcnJheSkKK3Zv
aWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm00ZnYoR0NHTGludCBsb2NhdGlvbiwg
R0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiBhcnJheSkKIHsKLSAgICAvLyBGSVhNRTogbGVuZ3Ro
IG5lZWRzIHRvIGJlIGEgbXVsdGlwbGUgb2YgNC4KKyAgICBBU1NFUlQoIShhcnJheS5idWZTaXpl
ICUgNCkpOwogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIDo6Z2xVbmlmb3JtNGZ2KGxvY2F0aW9uLCBzaXplLCBhcnJheSk7CisgICAgOjpnbFVu
aWZvcm00ZnYobG9jYXRpb24sIGFycmF5LmJ1ZlNpemUgLyA0LCBhcnJheS5kYXRhKTsKIH0KIAog
dm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTFpKEdDR0xpbnQgbG9jYXRpb24s
IEdDR0xpbnQgdjApCkBAIC0xNDgyLDEyICsxNDgyLDEyIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OnVuaWZvcm0xaShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMaW50IHYwKQogICAgIDo6
Z2xVbmlmb3JtMWkobG9jYXRpb24sIHYwKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6dW5pZm9ybTFpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgc2l6ZSwgY29uc3Qg
R0NHTGludCogYXJyYXkpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMWl2
KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+IGFycmF5KQogewogICAg
IGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIDo6Z2xV
bmlmb3JtMWl2KGxvY2F0aW9uLCBzaXplLCBhcnJheSk7CisgICAgOjpnbFVuaWZvcm0xaXYobG9j
YXRpb24sIGFycmF5LmJ1ZlNpemUsIGFycmF5LmRhdGEpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjp1bmlmb3JtMmkoR0NHTGludCBsb2NhdGlvbiwgR0NHTGludCB2MCwgR0NH
TGludCB2MSkKQEAgLTE0OTgsMTMgKzE0OTgsMTMgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6dW5pZm9ybTJpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xpbnQgdjAsIEdDR0xpbnQgdjEK
ICAgICA6OmdsVW5pZm9ybTJpKGxvY2F0aW9uLCB2MCwgdjEpOwogfQogCi12b2lkIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMml2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBz
aXplLCBjb25zdCBHQ0dMaW50KiBhcnJheSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OnVuaWZvcm0yaXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gYXJy
YXkpCiB7Ci0gICAgLy8gRklYTUU6IGxlbmd0aCBuZWVkcyB0byBiZSBhIG11bHRpcGxlIG9mIDIu
CisgICAgQVNTRVJUKCEoYXJyYXkuYnVmU2l6ZSAlIDIpKTsKICAgICBpZiAoIW1ha2VDb250ZXh0
Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICA6OmdsVW5pZm9ybTJpdihsb2NhdGlv
biwgc2l6ZSwgYXJyYXkpOworICAgIDo6Z2xVbmlmb3JtMml2KGxvY2F0aW9uLCBhcnJheS5idWZT
aXplIC8gMiwgYXJyYXkuZGF0YSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OnVuaWZvcm0zaShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMaW50IHYwLCBHQ0dMaW50IHYxLCBHQ0dM
aW50IHYyKQpAQCAtMTUxNSwxMyArMTUxNSwxMyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjp1bmlmb3JtM2koR0NHTGludCBsb2NhdGlvbiwgR0NHTGludCB2MCwgR0NHTGludCB2MQog
ICAgIDo6Z2xVbmlmb3JtM2kobG9jYXRpb24sIHYwLCB2MSwgdjIpOwogfQogCi12b2lkIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtM2l2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXpl
aSBzaXplLCBjb25zdCBHQ0dMaW50KiBhcnJheSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OnVuaWZvcm0zaXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4g
YXJyYXkpCiB7Ci0gICAgLy8gRklYTUU6IGxlbmd0aCBuZWVkcyB0byBiZSBhIG11bHRpcGxlIG9m
IDMuCisgICAgQVNTRVJUKCEoYXJyYXkuYnVmU2l6ZSAlIDMpKTsKICAgICBpZiAoIW1ha2VDb250
ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICA6OmdsVW5pZm9ybTNpdihsb2Nh
dGlvbiwgc2l6ZSwgYXJyYXkpOworICAgIDo6Z2xVbmlmb3JtM2l2KGxvY2F0aW9uLCBhcnJheS5i
dWZTaXplIC8gMywgYXJyYXkuZGF0YSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OnVuaWZvcm00aShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMaW50IHYwLCBHQ0dMaW50IHYxLCBH
Q0dMaW50IHYyLCBHQ0dMaW50IHYzKQpAQCAtMTUzMiw0MCArMTUzMiw0MCBAQCB2b2lkIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtNGkoR0NHTGludCBsb2NhdGlvbiwgR0NHTGludCB2
MCwgR0NHTGludCB2MQogICAgIDo6Z2xVbmlmb3JtNGkobG9jYXRpb24sIHYwLCB2MSwgdjIsIHYz
KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTRpdihHQ0dMaW50
IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgc2l6ZSwgY29uc3QgR0NHTGludCogYXJyYXkpCit2b2lkIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtNGl2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xT
cGFuPGNvbnN0IEdDR0xpbnQ+IGFycmF5KQogewotICAgIC8vIEZJWE1FOiBsZW5ndGggbmVlZHMg
dG8gYmUgYSBtdWx0aXBsZSBvZiA0LgorICAgIEFTU0VSVCghKGFycmF5LmJ1ZlNpemUgJSA0KSk7
CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
OjpnbFVuaWZvcm00aXYobG9jYXRpb24sIHNpemUsIGFycmF5KTsKKyAgICA6OmdsVW5pZm9ybTRp
dihsb2NhdGlvbiwgYXJyYXkuYnVmU2l6ZSAvIDQsIGFycmF5LmRhdGEpOwogfQogCi12b2lkIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4MmZ2KEdDR0xpbnQgbG9jYXRpb24s
IEdDR0xzaXplaSBzaXplLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCog
YXJyYXkpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4MmZ2KEdD
R0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NH
TGZsb2F0PiBhcnJheSkKIHsKLSAgICAvLyBGSVhNRTogbGVuZ3RoIG5lZWRzIHRvIGJlIGEgbXVs
dGlwbGUgb2YgNC4KKyAgICBBU1NFUlQoIShhcnJheS5idWZTaXplICUgNCkpOwogICAgIGlmICgh
bWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIDo6Z2xVbmlmb3Jt
TWF0cml4MmZ2KGxvY2F0aW9uLCBzaXplLCB0cmFuc3Bvc2UsIGFycmF5KTsKKyAgICA6OmdsVW5p
Zm9ybU1hdHJpeDJmdihsb2NhdGlvbiwgYXJyYXkuYnVmU2l6ZSAvIDQsIHRyYW5zcG9zZSwgYXJy
YXkuZGF0YSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRy
aXgzZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIHNpemUsIEdDR0xib29sZWFuIHRyYW5z
cG9zZSwgY29uc3QgR0NHTGZsb2F0KiBhcnJheSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OnVuaWZvcm1NYXRyaXgzZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNw
b3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGFycmF5KQogewotICAgIC8vIEZJWE1FOiBs
ZW5ndGggbmVlZHMgdG8gYmUgYSBtdWx0aXBsZSBvZiA5LgorICAgIEFTU0VSVCghKGFycmF5LmJ1
ZlNpemUgJSA5KSk7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgOjpnbFVuaWZvcm1NYXRyaXgzZnYobG9jYXRpb24sIHNpemUsIHRyYW5zcG9z
ZSwgYXJyYXkpOworICAgIDo6Z2xVbmlmb3JtTWF0cml4M2Z2KGxvY2F0aW9uLCBhcnJheS5idWZT
aXplIC8gOSwgdHJhbnNwb3NlLCBhcnJheS5kYXRhKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6dW5pZm9ybU1hdHJpeDRmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkg
c2l6ZSwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHQ0dMZmxvYXQqIGFycmF5KQordm9p
ZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybU1hdHJpeDRmdihHQ0dMaW50IGxvY2F0
aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gYXJy
YXkpCiB7Ci0gICAgLy8gRklYTUU6IGxlbmd0aCBuZWVkcyB0byBiZSBhIG11bHRpcGxlIG9mIDE2
LgorICAgIEFTU0VSVCghKGFycmF5LmJ1ZlNpemUgJSAxNikpOwogICAgIGlmICghbWFrZUNvbnRl
eHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIDo6Z2xVbmlmb3JtTWF0cml4NGZ2
KGxvY2F0aW9uLCBzaXplLCB0cmFuc3Bvc2UsIGFycmF5KTsKKyAgICA6OmdsVW5pZm9ybU1hdHJp
eDRmdihsb2NhdGlvbiwgYXJyYXkuYnVmU2l6ZSAvIDE2LCB0cmFuc3Bvc2UsIGFycmF5LmRhdGEp
OwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1c2VQcm9ncmFtKFBsYXRmb3Jt
R0xPYmplY3QgcHJvZ3JhbSkKQEAgLTE1OTQsMTIgKzE1OTQsMTIgQEAgdm9pZCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliMWYoR0NHTHVpbnQgaW5kZXgsIEdDR0xmbG9hdCB2
MCkKICAgICA6OmdsVmVydGV4QXR0cmliMWYoaW5kZXgsIHYwKTsKIH0KIAotdm9pZCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliMWZ2KEdDR0x1aW50IGluZGV4LCBjb25zdCBH
Q0dMZmxvYXQqIGFycmF5KQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0
cmliMWZ2KEdDR0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQsIDE+IGFycmF5
KQogewogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIDo6Z2xWZXJ0ZXhBdHRyaWIxZnYoaW5kZXgsIGFycmF5KTsKKyAgICA6OmdsVmVydGV4QXR0
cmliMWZ2KGluZGV4LCBhcnJheS5kYXRhKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6dmVydGV4QXR0cmliMmYoR0NHTHVpbnQgaW5kZXgsIEdDR0xmbG9hdCB2MCwgR0NHTGZs
b2F0IHYxKQpAQCAtMTYxMCwxMiArMTYxMCwxMiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjp2ZXJ0ZXhBdHRyaWIyZihHQ0dMdWludCBpbmRleCwgR0NHTGZsb2F0IHYwLCBHQ0dMZgog
ICAgIDo6Z2xWZXJ0ZXhBdHRyaWIyZihpbmRleCwgdjAsIHYxKTsKIH0KIAotdm9pZCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliMmZ2KEdDR0x1aW50IGluZGV4LCBjb25zdCBH
Q0dMZmxvYXQqIGFycmF5KQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0
cmliMmZ2KEdDR0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQsIDI+IGFycmF5
KQogewogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIDo6Z2xWZXJ0ZXhBdHRyaWIyZnYoaW5kZXgsIGFycmF5KTsKKyAgICA6OmdsVmVydGV4QXR0
cmliMmZ2KGluZGV4LCBhcnJheS5kYXRhKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6dmVydGV4QXR0cmliM2YoR0NHTHVpbnQgaW5kZXgsIEdDR0xmbG9hdCB2MCwgR0NHTGZs
b2F0IHYxLCBHQ0dMZmxvYXQgdjIpCkBAIC0xNjI2LDEyICsxNjI2LDEyIEBAIHZvaWQgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYjNmKEdDR0x1aW50IGluZGV4LCBHQ0dMZmxv
YXQgdjAsIEdDR0xmCiAgICAgOjpnbFZlcnRleEF0dHJpYjNmKGluZGV4LCB2MCwgdjEsIHYyKTsK
IH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliM2Z2KEdDR0x1
aW50IGluZGV4LCBjb25zdCBHQ0dMZmxvYXQqIGFycmF5KQordm9pZCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6dmVydGV4QXR0cmliM2Z2KEdDR0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxjb25zdCBH
Q0dMZmxvYXQsIDM+IGFycmF5KQogewogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIDo6Z2xWZXJ0ZXhBdHRyaWIzZnYoaW5kZXgsIGFycmF5KTsK
KyAgICA6OmdsVmVydGV4QXR0cmliM2Z2KGluZGV4LCBhcnJheS5kYXRhKTsKIH0KIAogdm9pZCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliNGYoR0NHTHVpbnQgaW5kZXgsIEdD
R0xmbG9hdCB2MCwgR0NHTGZsb2F0IHYxLCBHQ0dMZmxvYXQgdjIsIEdDR0xmbG9hdCB2MykKQEAg
LTE2NDIsMTIgKzE2NDIsMTIgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4
QXR0cmliNGYoR0NHTHVpbnQgaW5kZXgsIEdDR0xmbG9hdCB2MCwgR0NHTGYKICAgICA6OmdsVmVy
dGV4QXR0cmliNGYoaW5kZXgsIHYwLCB2MSwgdjIsIHYzKTsKIH0KIAotdm9pZCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliNGZ2KEdDR0x1aW50IGluZGV4LCBjb25zdCBHQ0dM
ZmxvYXQqIGFycmF5KQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmli
NGZ2KEdDR0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQsIDQ+IGFycmF5KQog
ewogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAg
IDo6Z2xWZXJ0ZXhBdHRyaWI0ZnYoaW5kZXgsIGFycmF5KTsKKyAgICA6OmdsVmVydGV4QXR0cmli
NGZ2KGluZGV4LCBhcnJheS5kYXRhKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6dmVydGV4QXR0cmliUG9pbnRlcihHQ0dMdWludCBpbmRleCwgR0NHTGludCBzaXplLCBHQ0dM
ZW51bSB0eXBlLCBHQ0dMYm9vbGVhbiBub3JtYWxpemVkLCBHQ0dMc2l6ZWkgc3RyaWRlLCBHQ0dM
aW50cHRyIG9mZnNldCkKQEAgLTIwNTUsNyArMjA1NSw3IEBAIEdDR0xzaXplaXB0ciBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6Z2V0VmVydGV4QXR0cmliT2Zmc2V0KEdDR0x1aW50IGluZGV4LCBH
Q0dMCiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdDR0xzaXplaXB0cj4ocmVpbnRlcnByZXRfY2Fz
dDxpbnRwdHJfdD4ocG9pbnRlcikpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
Ojp0ZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4
b2ZmLCBHQ0dMaW50IHlvZmYsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NH
TGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBjb25zdCB2b2lkKiBwaXhlbHMpCit2b2lkIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjp0ZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NH
TGludCBsZXZlbCwgR0NHTGludCB4b2ZmLCBHQ0dMaW50IHlvZmYsIEdDR0xzaXplaSB3aWR0aCwg
R0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bh
bjxjb25zdCBHQ0dMdm9pZD4gcGl4ZWxzKQogewogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50
KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTIwODMsNyArMjA4Myw3IEBAIHZvaWQgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OnRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxl
dmVsLCBHQ0dMCiAgICAgfQogCiAgICAgLy8gRklYTUU6IHdlIHdpbGwgbmVlZCB0byBkZWFsIHdp
dGggUGl4ZWxTdG9yZSBwYXJhbXMgd2hlbiBkZWFsaW5nIHdpdGggaW1hZ2UgYnVmZmVycyB0aGF0
IGRpZmZlciBmcm9tIHRoZSBzdWJpbWFnZSBzaXplLgotICAgIDo6Z2xUZXhTdWJJbWFnZTJEKHRh
cmdldCwgbGV2ZWwsIHhvZmYsIHlvZmYsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgcGl4
ZWxzKTsKKyAgICA6OmdsVGV4U3ViSW1hZ2UyRCh0YXJnZXQsIGxldmVsLCB4b2ZmLCB5b2ZmLCB3
aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIHBpeGVscy5kYXRhKTsKICAgICBtX3N0YXRlLnRl
eHR1cmVTZWVkQ291bnQuYWRkKG1fc3RhdGUuY3VycmVudEJvdW5kVGV4dHVyZSgpKTsKIH0KIApA
QCAtMjM5NSwxNyArMjM5NSwxNSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpmcmFt
ZWJ1ZmZlclRleHR1cmVMYXllcihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtCiAgICAgVU5VU0VE
X1BBUkFNKGxheWVyKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6aW52YWxp
ZGF0ZUZyYW1lYnVmZmVyKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpIG51bUF0dGFjaG1lbnRz
LCBjb25zdCBHQ0dMZW51bSogYXR0YWNobWVudHMpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjppbnZhbGlkYXRlRnJhbWVidWZmZXIoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMU3Bhbjxjb25z
dCBHQ0dMZW51bT4gYXR0YWNobWVudHMpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHRhcmdldCk7Ci0g
ICAgVU5VU0VEX1BBUkFNKG51bUF0dGFjaG1lbnRzKTsKICAgICBVTlVTRURfUEFSQU0oYXR0YWNo
bWVudHMpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjppbnZhbGlkYXRlU3Vi
RnJhbWVidWZmZXIoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgbnVtQXR0YWNobWVudHMsIGNv
bnN0IEdDR0xlbnVtKiBhdHRhY2htZW50cywgR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXpl
aSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OmludmFsaWRhdGVTdWJGcmFtZWJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQsIEdDR0xTcGFuPGNvbnN0
IEdDR0xlbnVtPiBhdHRhY2htZW50cywgR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3
aWR0aCwgR0NHTHNpemVpIGhlaWdodCkKIHsKICAgICBVTlVTRURfUEFSQU0odGFyZ2V0KTsKLSAg
ICBVTlVTRURfUEFSQU0obnVtQXR0YWNobWVudHMpOwogICAgIFVOVVNFRF9QQVJBTShhdHRhY2ht
ZW50cyk7CiAgICAgVU5VU0VEX1BBUkFNKHgpOwogICAgIFVOVVNFRF9QQVJBTSh5KTsKQEAgLTI1
MjksOTAgKzI1MjcsNzAgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTR1
aShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMdWludCB2MCwgR0NHTHVpbnQKICAgICBVTlVTRURfUEFS
QU0odjMpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMXVpdihH
Q0dMaW50IGxvY2F0aW9uLCBjb25zdCBHQ0dMdWludCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0
LCBHQ0dMdWludCBzcmNMZW5ndGgpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlm
b3JtMXVpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdWludD4gZGF0YSkK
IHsKICAgICBVTlVTRURfUEFSQU0obG9jYXRpb24pOwogICAgIFVOVVNFRF9QQVJBTShkYXRhKTsK
LSAgICBVTlVTRURfUEFSQU0oc3JjT2Zmc2V0KTsKLSAgICBVTlVTRURfUEFSQU0oc3JjTGVuZ3Ro
KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTJ1aXYoR0NHTGlu
dCBsb2NhdGlvbiwgY29uc3QgR0NHTHVpbnQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NH
THVpbnQgc3JjTGVuZ3RoKQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTJ1
aXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTHVpbnQ+IGRhdGEpCiB7CiAg
ICAgVU5VU0VEX1BBUkFNKGxvY2F0aW9uKTsKICAgICBVTlVTRURfUEFSQU0oZGF0YSk7Ci0gICAg
VU5VU0VEX1BBUkFNKHNyY09mZnNldCk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY0xlbmd0aCk7CiB9
CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0zdWl2KEdDR0xpbnQgbG9j
YXRpb24sIGNvbnN0IEdDR0x1aW50KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50
IHNyY0xlbmd0aCkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0zdWl2KEdD
R0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0x1aW50PiBkYXRhKQogewogICAgIFVO
VVNFRF9QQVJBTShsb2NhdGlvbik7CiAgICAgVU5VU0VEX1BBUkFNKGRhdGEpOwotICAgIFVOVVNF
RF9QQVJBTShzcmNPZmZzZXQpOwotICAgIFVOVVNFRF9QQVJBTShzcmNMZW5ndGgpOwogfQogCi12
b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtNHVpdihHQ0dMaW50IGxvY2F0aW9u
LCBjb25zdCBHQ0dMdWludCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNM
ZW5ndGgpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtNHVpdihHQ0dMaW50
IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdWludD4gZGF0YSkKIHsKICAgICBVTlVTRURf
UEFSQU0obG9jYXRpb24pOwogICAgIFVOVVNFRF9QQVJBTShkYXRhKTsKLSAgICBVTlVTRURfUEFS
QU0oc3JjT2Zmc2V0KTsKLSAgICBVTlVTRURfUEFSQU0oc3JjTGVuZ3RoKTsKIH0KIAotdm9pZCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybU1hdHJpeDJ4M2Z2KEdDR0xpbnQgbG9jYXRp
b24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWlu
dCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OnVuaWZvcm1NYXRyaXgyeDNmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0
cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gZGF0YSkKIHsKICAgICBVTlVTRURf
UEFSQU0obG9jYXRpb24pOwogICAgIFVOVVNFRF9QQVJBTSh0cmFuc3Bvc2UpOwogICAgIFVOVVNF
RF9QQVJBTShkYXRhKTsKLSAgICBVTlVTRURfUEFSQU0oc3JjT2Zmc2V0KTsKLSAgICBVTlVTRURf
UEFSQU0oc3JjTGVuZ3RoKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5p
Zm9ybU1hdHJpeDN4MmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwg
Y29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xl
bmd0aCkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXgzeDJmdihH
Q0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdD
R0xmbG9hdD4gZGF0YSkKIHsKICAgICBVTlVTRURfUEFSQU0obG9jYXRpb24pOwogICAgIFVOVVNF
RF9QQVJBTSh0cmFuc3Bvc2UpOwogICAgIFVOVVNFRF9QQVJBTShkYXRhKTsKLSAgICBVTlVTRURf
UEFSQU0oc3JjT2Zmc2V0KTsKLSAgICBVTlVTRURfUEFSQU0oc3JjTGVuZ3RoKTsKIH0KIAotdm9p
ZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybU1hdHJpeDJ4NGZ2KEdDR0xpbnQgbG9j
YXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dM
dWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXgyeDRmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVh
biB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gZGF0YSkKIHsKICAgICBVTlVT
RURfUEFSQU0obG9jYXRpb24pOwogICAgIFVOVVNFRF9QQVJBTSh0cmFuc3Bvc2UpOwogICAgIFVO
VVNFRF9QQVJBTShkYXRhKTsKLSAgICBVTlVTRURfUEFSQU0oc3JjT2Zmc2V0KTsKLSAgICBVTlVT
RURfUEFSQU0oc3JjTGVuZ3RoKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
dW5pZm9ybU1hdHJpeDR4MmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9z
ZSwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNy
Y0xlbmd0aCkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXg0eDJm
dihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0
IEdDR0xmbG9hdD4gZGF0YSkKIHsKICAgICBVTlVTRURfUEFSQU0obG9jYXRpb24pOwogICAgIFVO
VVNFRF9QQVJBTSh0cmFuc3Bvc2UpOwogICAgIFVOVVNFRF9QQVJBTShkYXRhKTsKLSAgICBVTlVT
RURfUEFSQU0oc3JjT2Zmc2V0KTsKLSAgICBVTlVTRURfUEFSQU0oc3JjTGVuZ3RoKTsKIH0KIAot
dm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybU1hdHJpeDN4NGZ2KEdDR0xpbnQg
bG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBH
Q0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKK3ZvaWQgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXgzeDRmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9v
bGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gZGF0YSkKIHsKICAgICBV
TlVTRURfUEFSQU0obG9jYXRpb24pOwogICAgIFVOVVNFRF9QQVJBTSh0cmFuc3Bvc2UpOwogICAg
IFVOVVNFRF9QQVJBTShkYXRhKTsKLSAgICBVTlVTRURfUEFSQU0oc3JjT2Zmc2V0KTsKLSAgICBV
TlVTRURfUEFSQU0oc3JjTGVuZ3RoKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6dW5pZm9ybU1hdHJpeDR4M2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5z
cG9zZSwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50
IHNyY0xlbmd0aCkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXg0
eDNmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNv
bnN0IEdDR0xmbG9hdD4gZGF0YSkKIHsKICAgICBVTlVTRURfUEFSQU0obG9jYXRpb24pOwogICAg
IFVOVVNFRF9QQVJBTSh0cmFuc3Bvc2UpOwogICAgIFVOVVNFRF9QQVJBTShkYXRhKTsKLSAgICBV
TlVTRURfUEFSQU0oc3JjT2Zmc2V0KTsKLSAgICBVTlVTRURfUEFSQU0oc3JjTGVuZ3RoKTsKIH0K
IAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliSTRpKEdDR0x1aW50
IGluZGV4LCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTGludCB6LCBHQ0dMaW50IHcpCkBAIC0y
NjI0LDcgKzI2MDIsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2ZXJ0ZXhBdHRy
aWJJNGkoR0NHTHVpbnQgaW5kZXgsIEdDR0xpbnQgeCwgR0NHTGludAogICAgIFVOVVNFRF9QQVJB
TSh3KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliSTRp
dihHQ0dMdWludCBpbmRleCwgY29uc3QgR0NHTGludCogdmFsdWVzKQordm9pZCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliSTRpdihHQ0dMdWludCBpbmRleCwgR0NHTFNwYW48
Y29uc3QgR0NHTGludCwgND4gdmFsdWVzKQogewogICAgIFVOVVNFRF9QQVJBTShpbmRleCk7CiAg
ICAgVU5VU0VEX1BBUkFNKHZhbHVlcyk7CkBAIC0yNjM5LDcgKzI2MTcsNyBAQCB2b2lkIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjp2ZXJ0ZXhBdHRyaWJJNHVpKEdDR0x1aW50IGluZGV4LCBHQ0dM
dWludCB4LCBHQ0dMdQogICAgIFVOVVNFRF9QQVJBTSh3KTsKIH0KIAotdm9pZCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliSTR1aXYoR0NHTHVpbnQgaW5kZXgsIGNvbnN0IEdD
R0x1aW50KiB2YWx1ZXMpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2ZXJ0ZXhBdHRy
aWJJNHVpdihHQ0dMdWludCBpbmRleCwgR0NHTFNwYW48Y29uc3QgR0NHTHVpbnQsIDQ+IHZhbHVl
cykKIHsKICAgICBVTlVTRURfUEFSQU0oaW5kZXgpOwogICAgIFVOVVNFRF9QQVJBTSh2YWx1ZXMp
OwpAQCAtMjY2NCwzNCArMjY0MiwzMCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpk
cmF3UmFuZ2VFbGVtZW50cyhHQ0dMZW51bSBtb2RlLCBHQ0dMdWludCBzdGFydCwgRwogICAgIFVO
VVNFRF9QQVJBTShvZmZzZXQpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpk
cmF3QnVmZmVycyhHQ0dMc2l6ZWkgbiwgY29uc3QgR0NHTGVudW0qIGJ1ZnMpCit2b2lkIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpkcmF3QnVmZmVycyhHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4g
YnVmcykKIHsKLSAgICBVTlVTRURfUEFSQU0obik7CiAgICAgVU5VU0VEX1BBUkFNKGJ1ZnMpOwog
fQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjbGVhckJ1ZmZlcml2KEdDR0xlbnVt
IGJ1ZmZlciwgR0NHTGludCBkcmF3YnVmZmVyLCBjb25zdCBHQ0dMaW50KiB2YWx1ZXMsIEdDR0x1
aW50IHNyY09mZnNldCkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNsZWFyQnVmZmVy
aXYoR0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50IGRyYXdidWZmZXIsIEdDR0xTcGFuPGNvbnN0IEdD
R0xpbnQ+IHZhbHVlcykKIHsKICAgICBVTlVTRURfUEFSQU0oYnVmZmVyKTsKICAgICBVTlVTRURf
UEFSQU0oZHJhd2J1ZmZlcik7CiAgICAgVU5VU0VEX1BBUkFNKHZhbHVlcyk7Ci0gICAgVU5VU0VE
X1BBUkFNKHNyY09mZnNldCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNs
ZWFyQnVmZmVydWl2KEdDR0xlbnVtIGJ1ZmZlciwgR0NHTGludCBkcmF3YnVmZmVyLCBjb25zdCBH
Q0dMdWludCogdmFsdWVzLCBHQ0dMdWludCBzcmNPZmZzZXQpCit2b2lkIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpjbGVhckJ1ZmZlcnVpdihHQ0dMZW51bSBidWZmZXIsIEdDR0xpbnQgZHJhd2J1
ZmZlciwgR0NHTFNwYW48Y29uc3QgR0NHTHVpbnQ+IHZhbHVlcykKIHsKICAgICBVTlVTRURfUEFS
QU0oYnVmZmVyKTsKICAgICBVTlVTRURfUEFSQU0oZHJhd2J1ZmZlcik7CiAgICAgVU5VU0VEX1BB
UkFNKHZhbHVlcyk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY09mZnNldCk7CiB9CiAKLXZvaWQgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OmNsZWFyQnVmZmVyZnYoR0NHTGVudW0gYnVmZmVyLCBHQ0dM
aW50IGRyYXdidWZmZXIsIGNvbnN0IEdDR0xmbG9hdCogdmFsdWVzLCBHQ0dMdWludCBzcmNPZmZz
ZXQpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjbGVhckJ1ZmZlcmZ2KEdDR0xlbnVt
IGJ1ZmZlciwgR0NHTGludCBkcmF3YnVmZmVyLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IHZh
bHVlcykKIHsKICAgICBVTlVTRURfUEFSQU0oYnVmZmVyKTsKICAgICBVTlVTRURfUEFSQU0oZHJh
d2J1ZmZlcik7CiAgICAgVU5VU0VEX1BBUkFNKHZhbHVlcyk7Ci0gICAgVU5VU0VEX1BBUkFNKHNy
Y09mZnNldCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNsZWFyQnVmZmVy
ZmkoR0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50IGRyYXdidWZmZXIsIEdDR0xmbG9hdCBkZXB0aCwg
R0NHTGludCBzdGVuY2lsKQpAQCAtMzAyMSw5NiArMjk5NSw2IEBAIHZvaWQgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NH
TGludCBsCiAgICAgVU5VU0VEX1BBUkFNKHNyY0xlbmd0aE92ZXJyaWRlKTsKIH0KIAotdm9pZCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTFmdihHQ0dMaW50IGxvY2F0aW9uLCBjb25z
dCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3Ro
KQotewotICAgIFVOVVNFRF9QQVJBTShsb2NhdGlvbik7Ci0gICAgVU5VU0VEX1BBUkFNKGRhdGEp
OwotICAgIFVOVVNFRF9QQVJBTShzcmNPZmZzZXQpOwotICAgIFVOVVNFRF9QQVJBTShzcmNMZW5n
dGgpOwotfQotCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMmZ2KEdDR0xp
bnQgbG9jYXRpb24sIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBH
Q0dMdWludCBzcmNMZW5ndGgpCi17Ci0gICAgVU5VU0VEX1BBUkFNKGxvY2F0aW9uKTsKLSAgICBV
TlVTRURfUEFSQU0oZGF0YSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY09mZnNldCk7Ci0gICAgVU5V
U0VEX1BBUkFNKHNyY0xlbmd0aCk7Ci19Ci0KLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OnVuaWZvcm0zZnYoR0NHTGludCBsb2NhdGlvbiwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dM
dWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKLXsKLSAgICBVTlVTRURfUEFSQU0o
bG9jYXRpb24pOwotICAgIFVOVVNFRF9QQVJBTShkYXRhKTsKLSAgICBVTlVTRURfUEFSQU0oc3Jj
T2Zmc2V0KTsKLSAgICBVTlVTRURfUEFSQU0oc3JjTGVuZ3RoKTsKLX0KLQotdm9pZCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTRmdihHQ0dMaW50IGxvY2F0aW9uLCBjb25zdCBHQ0dM
ZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQotewot
ICAgIFVOVVNFRF9QQVJBTShsb2NhdGlvbik7Ci0gICAgVU5VU0VEX1BBUkFNKGRhdGEpOwotICAg
IFVOVVNFRF9QQVJBTShzcmNPZmZzZXQpOwotICAgIFVOVVNFRF9QQVJBTShzcmNMZW5ndGgpOwot
fQotCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMWl2KEdDR0xpbnQgbG9j
YXRpb24sIGNvbnN0IEdDR0xpbnQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQg
c3JjTGVuZ3RoKQotewotICAgIFVOVVNFRF9QQVJBTShsb2NhdGlvbik7Ci0gICAgVU5VU0VEX1BB
UkFNKGRhdGEpOwotICAgIFVOVVNFRF9QQVJBTShzcmNPZmZzZXQpOwotICAgIFVOVVNFRF9QQVJB
TShzcmNMZW5ndGgpOwotfQotCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3Jt
Mml2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0xpbnQqIGRhdGEsIEdDR0x1aW50IHNyY09m
ZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQotewotICAgIFVOVVNFRF9QQVJBTShsb2NhdGlvbik7
Ci0gICAgVU5VU0VEX1BBUkFNKGRhdGEpOwotICAgIFVOVVNFRF9QQVJBTShzcmNPZmZzZXQpOwot
ICAgIFVOVVNFRF9QQVJBTShzcmNMZW5ndGgpOwotfQotCi12b2lkIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjp1bmlmb3JtM2l2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0xpbnQqIGRhdGEs
IEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQotewotICAgIFVOVVNFRF9Q
QVJBTShsb2NhdGlvbik7Ci0gICAgVU5VU0VEX1BBUkFNKGRhdGEpOwotICAgIFVOVVNFRF9QQVJB
TShzcmNPZmZzZXQpOwotICAgIFVOVVNFRF9QQVJBTShzcmNMZW5ndGgpOwotfQotCi12b2lkIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtNGl2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0
IEdDR0xpbnQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQot
ewotICAgIFVOVVNFRF9QQVJBTShsb2NhdGlvbik7Ci0gICAgVU5VU0VEX1BBUkFNKGRhdGEpOwot
ICAgIFVOVVNFRF9QQVJBTShzcmNPZmZzZXQpOwotICAgIFVOVVNFRF9QQVJBTShzcmNMZW5ndGgp
OwotfQotCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4MmZ2KEdD
R0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiBk
YXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKLXsKLSAgICBVTlVT
RURfUEFSQU0obG9jYXRpb24pOwotICAgIFVOVVNFRF9QQVJBTSh0cmFuc3Bvc2UpOwotICAgIFVO
VVNFRF9QQVJBTShkYXRhKTsKLSAgICBVTlVTRURfUEFSQU0oc3JjT2Zmc2V0KTsKLSAgICBVTlVT
RURfUEFSQU0oc3JjTGVuZ3RoKTsKLX0KLQotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
dW5pZm9ybU1hdHJpeDNmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2Us
IGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNM
ZW5ndGgpCi17Ci0gICAgVU5VU0VEX1BBUkFNKGxvY2F0aW9uKTsKLSAgICBVTlVTRURfUEFSQU0o
dHJhbnNwb3NlKTsKLSAgICBVTlVTRURfUEFSQU0oZGF0YSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNy
Y09mZnNldCk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY0xlbmd0aCk7Ci19Ci0KLXZvaWQgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXg0ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NH
TGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNyY09m
ZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQotewotICAgIFVOVVNFRF9QQVJBTShsb2NhdGlvbik7
Ci0gICAgVU5VU0VEX1BBUkFNKHRyYW5zcG9zZSk7Ci0gICAgVU5VU0VEX1BBUkFNKGRhdGEpOwot
ICAgIFVOVVNFRF9QQVJBTShzcmNPZmZzZXQpOwotICAgIFVOVVNFRF9QQVJBTShzcmNMZW5ndGgp
OwotfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkUGl4ZWxzKEdDR0xpbnQg
eCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVt
IGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpCiB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0xFUy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wv
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0xFUy5jcHAKaW5kZXggYTFkODA5MmJjY2FlMDA4ZDZlNjll
OGNkOGY2ZGRmYjE3YWNhZjAwZi4uNTAxZWNhZTVkYzQ5OGM3N2ZlOWVhODFlNDQxYzJhNDg0OWZi
YzliMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Blbmds
L0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMRVMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEVTLmNwcApAQCAtMjE1
LDE0ICsyMTUsMTQgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U2hhZGVyUHJl
Y2lzaW9uRm9ybWF0KEdDR0xlbnVtIHNoYWRlclR5cGUsIEdDR0wKICAgICA6OmdsR2V0U2hhZGVy
UHJlY2lzaW9uRm9ybWF0KHNoYWRlclR5cGUsIHByZWNpc2lvblR5cGUsIHJhbmdlLmRhdGEsIHBy
ZWNpc2lvbik7CiB9CiAKLWJvb2wgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnRleEltYWdlMkQo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwg
R0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTGVu
dW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBjb25zdCB2b2lkKiBwaXhlbHMpCitib29sIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjp0ZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBs
ZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVp
IGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwg
R0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IHBpeGVscykKIHsKLSAgICBpZiAod2lkdGggJiYgaGVp
Z2h0ICYmICFwaXhlbHMpIHsKKyAgICBpZiAod2lkdGggJiYgaGVpZ2h0ICYmICFwaXhlbHMuZGF0
YSkgewogICAgICAgICBzeW50aGVzaXplR0xFcnJvcihJTlZBTElEX1ZBTFVFKTsKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIHRleEltYWdlMkREaXJlY3QodGFyZ2V0LCBsZXZl
bCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGJvcmRlciwgZm9ybWF0LCB0eXBlLCBw
aXhlbHMpOworICAgIHRleEltYWdlMkREaXJlY3QodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3Jt
YXQsIHdpZHRoLCBoZWlnaHQsIGJvcmRlciwgZm9ybWF0LCB0eXBlLCBwaXhlbHMuZGF0YSk7CiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>414895</attachid>
            <date>2020-11-26 05:16:58 -0800</date>
            <delta_ts>2020-11-26 05:26:38 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219256-20201126151656.patch</filename>
            <type>text/plain</type>
            <size>201273</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwMTY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzIzYWI2YjRlNmM0NDFj
MDYzZWM1Mzg0YzZmOTA5NDdiZDFhNDY5ZC4uNTZlOTNhNDcxYzU4MzcwZjY1ZDgwY2U1NjJmNjgw
NzljZGEyNzhmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzNiBAQAorMjAyMC0xMS0yMyAgS2lt
bW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIEdyYXBoaWNzQ29u
dGV4dEdMIHNob3VsZCBoYXZlIHJvYnVzdCBtdWx0aXZhbHVlIHNldHRlcnMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxOTI1NgorCisgICAgICAgIFJl
dmlld2VkIGJ5IERlYW4gSmFja3Nvbi4KKworICAgICAgICBSZXBsYWNlIGJ1ZlNpemUsIHBvaW50
ZXIgcGFpcnMgYW5kIHBsYWluIHBvaW50ZXJzIGluIEdyYXBoaWNzQ29udGV4dEdMCisgICAgICAg
IHdpdGggR0NHTFNwYW4uIFRoaXMgbWFrZXMgaXQgZWFzaWVyIHRvIHVuZGVyc3RhbmQgaG93IG1h
bnkgdmFsdWVzIHRoZXJlCisgICAgICAgIGFyZSBwb2ludGVkIGJ5IHRoZSBwb2ludGVyLiBUaGlz
IGlzIG5lZWRlZCBmb3Igc2ltcGxlciBpbXBsZW1lbnRhdGlvbiBvZiBHUFUKKyAgICAgICAgcHJv
Y2VzcyBJUEMsIHdoZXJlIHRoZSBJUEMgbGF5ZXIgZG9lcyBub3QgbmVlZCB0byBpbnRlcnByZXQg
dGhlIE9wZW5HTAorICAgICAgICBwcm9wZXJ0aWVzLgorCisgICAgICAgIEluIFdlYkdMIGltcGxl
bWVudGF0aW9uLCBjaGFuZ2VzIHRoZSB2YWxpZGF0aW9uIGZ1bmN0aW9ucyB0byByZXR1cm4KKyAg
ICAgICAgdGhlIG1lbW9yeSByZWZlcmVuY2UgdGhhdCB3aWxsIGJlIHRvdWNoZWQgYnkgdGhlIHZh
bGlkIGZ1bmN0aW9uIGNhbGwuCisgICAgICAgIE9uIHZhbGlkYXRpb24gZmFpbHVyZSwgbnVsbG9w
dCB3aWxsIGJlIHJldHVybmVkLgorCisgICAgICAgIE1ha2VzIHRoZSBleGlzdGluZyBHcmFwaGlj
c0NvbnRleHRHTCB0ZXh0dXJlIGltYWdlIG1hbmlwdWxhdGlvbiBmdW5jdGlvbnMgCisgICAgICAg
IHRvIHN1cHBvcnQgcm9idXN0IGludm9jYXRpb24uIFJlbW92ZXMgdGhlIHJvYnVzdCBBUElzIGZy
b20gRXh0ZW5zaW9uc0dMLgorICAgICAgICBBZGRzIHRoZSBtaXNzaW5nIHRleHR1cmUgaW1hZ2Ug
bWFuaXB1bGF0aW9uIGZ1bmN0aW9ucyBmcm9tIEV4dGVuc2lvbkdMCisgICAgICAgIHRvIEdyYXBo
aWNzQ29udGV4dEdMLiBJbXBsZW1lbnRhdGlvbnMgZm9yIHRoZSBtb3ZlZCBtZXRob2RzIAorICAg
ICAgICBleGlzdCBvbmx5IGZvciBBTkdMRSBpbXBsZW1lbnRhdGlvbiBvZiBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTC4gCisKKyAgICAgICAgQ2hhbmdlcyB0aGUgQU5HTEUgdmFyaWFudCBvZiBHcmFw
aGljc0NvbnRleHRHTDo6dGV4SW1hZ2UyRCB0byBiZSAKKyAgICAgICAgaW1wbGVtZW50ZWQgYXMg
RXh0ZW5zaW9uc0dMQU5HTEU6OnRleEltYWdlMkRSb2J1c3RBTkdMRS4gQmVmb3JlLCBmb3IKKyAg
ICAgICAgQU5HTEUgdGhlIEdyYXBoaWNzQ29udGV4dEdMOjp0ZXhJbWFnZTJEIHdhcyB1bnVzZWQu
CisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBhIHJlZmFjdG9yLgorCisgICAgICAgICogaHRtbC9j
YW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJH
TDJSZW5kZXJpbmdDb250ZXh0OjppbnZhbGlkYXRlRnJhbWVidWZmZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6aW52YWxpZGF0ZVN1YkZyYW1lYnVmZmVyKToK
KyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm0xdWl2KToK
KyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm0ydWl2KToK
KyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm0zdWl2KToK
KyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm00dWl2KToK
KyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm1NYXRyaXgy
eDNmdik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3Jt
TWF0cml4M3gyZnYpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6
dW5pZm9ybU1hdHJpeDJ4NGZ2KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0Nv
bnRleHQ6OnVuaWZvcm1NYXRyaXg0eDJmdik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5k
ZXJpbmdDb250ZXh0Ojp1bmlmb3JtTWF0cml4M3g0ZnYpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
R0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybU1hdHJpeDR4M2Z2KToKKyAgICAgICAgKFdlYkNv
cmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnZlcnRleEF0dHJpYkk0aXYpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dmVydGV4QXR0cmliSTR1aXYpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6ZHJhd0J1ZmZlcnMpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Y2xlYXJCdWZmZXJpdik6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpjbGVhckJ1ZmZlcnVpdik6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpjbGVhckJ1ZmZlcmZ2
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnZhbGlkYXRlQ2xl
YXJCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5p
Zm9ybTFmdik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlm
b3JtMmZ2KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZv
cm0zZnYpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9y
bTRmdik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3Jt
MWl2KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm0y
aXYpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTNp
dik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtNGl2
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm1NYXRy
aXgyZnYpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9y
bU1hdHJpeDNmdik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1
bmlmb3JtTWF0cml4NGZ2KToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdD
b250ZXh0Lmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xEcmF3QnVmZmVycy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJHTERyYXdCdWZmZXJzOjpkcmF3QnVmZmVyc1dFQkdMKToKKyAg
ICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTEZyYW1lYnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OldlYkdMRnJhbWVidWZmZXI6OmRyYXdCdWZmZXJzSWZOZWNlc3NhcnkpOgorICAgICAgICAq
IGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6YnVmZmVyRGF0YSk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpidWZmZXJTdWJEYXRhKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm0xZnYpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybTJmdik6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtM2Z2KToK
KyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm00ZnYp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybTFp
dik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3Jt
Mml2KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZv
cm0zaXYpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5p
Zm9ybTRpdik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1
bmlmb3JtTWF0cml4MmZ2KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2U6OnVuaWZvcm1NYXRyaXgzZnYpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6dW5pZm9ybU1hdHJpeDRmdik6CisgICAgICAgIChXZWJDb3JlOjpXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZVVuaWZvcm1NYXRyaXhQYXJhbWV0ZXJzKToK
KyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZlcnRleEF0dHJp
YmZ2SW1wbCk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZS5oOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmFsaWRh
dGVVbmlmb3JtUGFyYW1ldGVycyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRXh0ZW5z
aW9uc0dMLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5cGVzR0wuaDoKKyAgICAg
ICAgKEdDR0xTcGFuOjpHQ0dMU3Bhbik6CisgICAgICAgIChzdGQ6Om51bWVyaWNfbGltaXRzPHNp
emVfdD46Om1heCk6CisgICAgICAgIChtYWtlR0NHTFNwYW4pOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkV4dGVuc2lvbnNHTEFOR0xFOjpkcmF3QnVmZmVyc0VYVCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpidWZmZXJEYXRhKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpidWZmZXJTdWJEYXRhKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMWZ2KToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMmZ2KToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtM2Z2KToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtNGZ2KToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMWl2KToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMml2KToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtM2l2KToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtNGl2KToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4MmZ2KToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4M2Z2KToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4
NGZ2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2ZXJ0ZXhB
dHRyaWIxZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZl
cnRleEF0dHJpYjJmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6dmVydGV4QXR0cmliM2Z2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjp2ZXJ0ZXhBdHRyaWI0ZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OmludmFsaWRhdGVGcmFtZWJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6aW52YWxpZGF0ZVN1YkZyYW1lYnVmZmVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMXVpdik6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTJ1aXYpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0zdWl2KToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtNHVpdik6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybU1hdHJpeDJ4
M2Z2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3Jt
TWF0cml4M3gyZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OnVuaWZvcm1NYXRyaXgyeDRmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6dW5pZm9ybU1hdHJpeDR4MmZ2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4M3g0ZnYpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXg0eDNmdik6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliSTRpdik6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliSTR1aXYp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmRyYXdCdWZmZXJz
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjbGVhckJ1ZmZl
cml2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjbGVhckJ1
ZmZlcnVpdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y2xl
YXJCdWZmZXJmdik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY3YvR3JhcGhpY3NDb250
ZXh0R0xDVkFOR0xFLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQ1ZB
TkdMRTo6aW5pdGlhbGl6ZVVWQ29udGV4dE9iamVjdHMpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0xDVkFOR0xFOjpjb3B5UGl4ZWxCdWZmZXJUb1RleHR1cmUpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oOgor
CiAyMDIwLTExLTIyICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KIAogICAgICAg
ICBbTEZDXVtJbnRlZ3JhdGlvbl0gQ29udmVydCBzb21lIHJlbWFpbmluZyBJbmxpbmVCb3ggYWNj
ZXNzIHRvIHVzZSBpbmxpbmUgaXRlcmF0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHAKaW5kZXggNTViYzFmOGRiMjQ5ZDMz
ODIyZTc4ODljYTc4M2Y1YmVjMDI1YTI5OS4uNjhlZjNhOTlmZjA1YjRhMzMyZjk1OTgxNGM5ZTg4
OGMyOTVmNzM2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wy
UmVuZGVyaW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0wyUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTg5NSw3ICs4OTUsNyBAQCB2b2lkIFdlYkdMMlJl
bmRlcmluZ0NvbnRleHQ6OmludmFsaWRhdGVGcmFtZWJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQsIGNv
bnN0IFZlY3RvcgogICAgIFZlY3RvcjxHQ0dMZW51bT4gdHJhbnNsYXRlZEF0dGFjaG1lbnRzID0g
YXR0YWNobWVudHM7CiAgICAgaWYgKCFjaGVja0FuZFRyYW5zbGF0ZUF0dGFjaG1lbnRzKCJpbnZh
bGlkYXRlRnJhbWVidWZmZXIiLCB0YXJnZXQsIHRyYW5zbGF0ZWRBdHRhY2htZW50cykpCiAgICAg
ICAgIHJldHVybjsKLSAgICBtX2NvbnRleHQtPmludmFsaWRhdGVGcmFtZWJ1ZmZlcih0YXJnZXQs
IHRyYW5zbGF0ZWRBdHRhY2htZW50cy5zaXplKCksIHRyYW5zbGF0ZWRBdHRhY2htZW50cy5kYXRh
KCkpOworICAgIG1fY29udGV4dC0+aW52YWxpZGF0ZUZyYW1lYnVmZmVyKHRhcmdldCwgdHJhbnNs
YXRlZEF0dGFjaG1lbnRzKTsKIH0KIAogdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjppbnZh
bGlkYXRlU3ViRnJhbWVidWZmZXIoR0NHTGVudW0gdGFyZ2V0LCBjb25zdCBWZWN0b3I8R0NHTGVu
dW0+JiBhdHRhY2htZW50cywgR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwg
R0NHTHNpemVpIGhlaWdodCkKQEAgLTkwNiw3ICs5MDYsNyBAQCB2b2lkIFdlYkdMMlJlbmRlcmlu
Z0NvbnRleHQ6OmludmFsaWRhdGVTdWJGcmFtZWJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQsIGNvbnN0
IFZlYwogICAgIFZlY3RvcjxHQ0dMZW51bT4gdHJhbnNsYXRlZEF0dGFjaG1lbnRzID0gYXR0YWNo
bWVudHM7CiAgICAgaWYgKCFjaGVja0FuZFRyYW5zbGF0ZUF0dGFjaG1lbnRzKCJpbnZhbGlkYXRl
U3ViRnJhbWVidWZmZXIiLCB0YXJnZXQsIHRyYW5zbGF0ZWRBdHRhY2htZW50cykpCiAgICAgICAg
IHJldHVybjsKLSAgICBtX2NvbnRleHQtPmludmFsaWRhdGVTdWJGcmFtZWJ1ZmZlcih0YXJnZXQs
IHRyYW5zbGF0ZWRBdHRhY2htZW50cy5zaXplKCksIHRyYW5zbGF0ZWRBdHRhY2htZW50cy5kYXRh
KCksIHgsIHksIHdpZHRoLCBoZWlnaHQpOworICAgIG1fY29udGV4dC0+aW52YWxpZGF0ZVN1YkZy
YW1lYnVmZmVyKHRhcmdldCwgdHJhbnNsYXRlZEF0dGFjaG1lbnRzLCB4LCB5LCB3aWR0aCwgaGVp
Z2h0KTsKIH0KIAogdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpyZWFkQnVmZmVyKEdDR0xl
bnVtIHNyYykKQEAgLTExMjksNyArMTEyOSw3IEBAIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4
dDo6dGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQKICAg
ICBpZiAoIXZhbGlkYXRlVGV4RnVuYygidGV4SW1hZ2UyRCIsIFRleEltYWdlRnVuY3Rpb25UeXBl
OjpUZXhJbWFnZSwgU291cmNlVW5wYWNrQnVmZmVyLCB0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZv
cm1hdCwgd2lkdGgsIGhlaWdodCwgMSwgYm9yZGVyLCBmb3JtYXQsIHR5cGUsIDAsIDAsIDApKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS50ZXhJbWFn
ZTJEUm9idXN0QU5HTEUodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWln
aHQsIGJvcmRlciwgZm9ybWF0LCB0eXBlLCAwLCByZWludGVycHJldF9jYXN0PHZvaWQqPihvZmZz
ZXQpKTsKKyAgICBtX2NvbnRleHQtPnRleEltYWdlMkQodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxm
b3JtYXQsIHdpZHRoLCBoZWlnaHQsIGJvcmRlciwgZm9ybWF0LCB0eXBlLCBvZmZzZXQpOwogfQog
CiBFeGNlcHRpb25Pcjx2b2lkPiBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp0ZXhJbWFnZTJEKEdD
R0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCBpbnRlcm5hbGZvcm1hdCwgR0NH
THNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTGVudW0g
Zm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBUZXhJbWFnZVNvdXJjZSYmIHNvdXJjZSkKQEAgLTExNzMs
NyArMTE3Myw3IEBAIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dGV4SW1hZ2UzRChHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQKICAgICBpZiAoIXZhbGlkYXRlVGV4
RnVuYygidGV4SW1hZ2UzRCIsIFRleEltYWdlRnVuY3Rpb25UeXBlOjpUZXhJbWFnZSwgU291cmNl
VW5wYWNrQnVmZmVyLCB0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdo
dCwgZGVwdGgsIGJvcmRlciwgZm9ybWF0LCB0eXBlLCAwLCAwLCAwKSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkudGV4SW1hZ2UzRFJvYnVzdEFOR0xF
KHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgYm9y
ZGVyLCBmb3JtYXQsIHR5cGUsIDAsIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KG9mZnNldCkpOwor
ICAgIG1fY29udGV4dC0+dGV4SW1hZ2UzRCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwg
d2lkdGgsIGhlaWdodCwgZGVwdGgsIGJvcmRlciwgZm9ybWF0LCB0eXBlLCAgb2Zmc2V0KTsKIH0K
IAogRXhjZXB0aW9uT3I8dm9pZD4gV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dGV4SW1hZ2UzRChH
Q0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgaW50ZXJuYWxmb3JtYXQsIEdD
R0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMaW50
IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBUZXhJbWFnZVNvdXJjZSYm
IHNvdXJjZSkKQEAgLTEyNTksNyArMTI1OSw3IEBAIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4
dDo6dGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpCiAg
ICAgaWYgKCF2YWxpZGF0ZVRleEZ1bmMoInRleFN1YkltYWdlMkQiLCBUZXhJbWFnZUZ1bmN0aW9u
VHlwZTo6VGV4U3ViSW1hZ2UsIFNvdXJjZVVucGFja0J1ZmZlciwgdGFyZ2V0LCBsZXZlbCwgMCwg
d2lkdGgsIGhlaWdodCwgMSwgMCwgZm9ybWF0LCB0eXBlLCB4b2Zmc2V0LCB5b2Zmc2V0LCAwKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkudGV4U3Vi
SW1hZ2UyRFJvYnVzdEFOR0xFKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRo
LCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgMCwgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ob2Zmc2V0
KSk7CisgICAgbV9jb250ZXh0LT50ZXhTdWJJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQs
IHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgb2Zmc2V0KTsKIH0KIAogRXhj
ZXB0aW9uT3I8dm9pZD4gV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dGV4U3ViSW1hZ2UyRChHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zm
c2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwg
R0NHTGVudW0gdHlwZSwgVGV4SW1hZ2VTb3VyY2UmJiBzb3VyY2UpCkBAIC0xMzAzLDcgKzEzMDMs
NyBAQCB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnRleFN1YkltYWdlM0QoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaQogICAgIGlmICghdmFsaWRhdGVUZXhGdW5jKCJ0
ZXhTdWJJbWFnZTNEIiwgVGV4SW1hZ2VGdW5jdGlvblR5cGU6OlRleFN1YkltYWdlLCBTb3VyY2VV
bnBhY2tCdWZmZXIsIHRhcmdldCwgbGV2ZWwsIDAsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCAwLCBm
b3JtYXQsIHR5cGUsIHhvZmZzZXQsIHlvZmZzZXQsIHpvZmZzZXQpKQogICAgICAgICByZXR1cm47
CiAKLSAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS50ZXhTdWJJbWFnZTNEUm9idXN0QU5H
TEUodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgem9mZnNldCwgd2lkdGgsIGhlaWdo
dCwgZGVwdGgsIGZvcm1hdCwgdHlwZSwgMCwgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ob2Zmc2V0
KSk7CisgICAgbV9jb250ZXh0LT50ZXhTdWJJbWFnZTNEKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQs
IHlvZmZzZXQsIHpvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBmb3JtYXQsIHR5cGUsIG9m
ZnNldCk7CiB9CiAKIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dGV4U3ViSW1hZ2UzRChH
Q0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5
b2Zmc2V0LCBHQ0dMaW50IHpvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdo
dCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIFJlZlB0
cjxBcnJheUJ1ZmZlclZpZXc+JiYgc3JjRGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0KQpAQCAtMTM2
OSwxMCArMTM2OSw3IEBAIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Y29tcHJlc3NlZFRl
eEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsCiAgICAgfQogICAgIGlmICgh
dmFsaWRhdGVUZXh0dXJlMkRCaW5kaW5nKCJjb21wcmVzc2VkVGV4SW1hZ2UyRCIsIHRhcmdldCkp
CiAgICAgICAgIHJldHVybjsKLSAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5jb21wcmVz
c2VkVGV4SW1hZ2UyRFJvYnVzdEFOR0xFKAotICAgICAgICB0YXJnZXQsIGxldmVsLCBpbnRlcm5h
bGZvcm1hdCwgd2lkdGgsCi0gICAgICAgIGhlaWdodCwgYm9yZGVyLCBpbWFnZVNpemUsCi0gICAg
ICAgIDAsIHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KG9mZnNldCkpOworICAgIG1fY29udGV4
dC0+Y29tcHJlc3NlZFRleEltYWdlMkQodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdp
ZHRoLCBoZWlnaHQsIGJvcmRlciwgaW1hZ2VTaXplLCBvZmZzZXQpOwogfQogCiB2b2lkIFdlYkdM
MlJlbmRlcmluZ0NvbnRleHQ6OmNvbXByZXNzZWRUZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwg
R0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEFycmF5QnVmZmVyVmlldyYgc3JjRGF0
YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGhPdmVycmlkZSkKQEAgLTEz
OTAsMTAgKzEzODcsNyBAQCB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmNvbXByZXNzZWRU
ZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbAogICAgIGF1dG8gc2xpY2Ug
PSBzbGljZUFycmF5QnVmZmVyVmlldygiY29tcHJlc3NlZFRleEltYWdlMkQiLCBzcmNEYXRhLCBz
cmNPZmZzZXQsIHNyY0xlbmd0aE92ZXJyaWRlKTsKICAgICBpZiAoIXNsaWNlKQogICAgICAgICBy
ZXR1cm47Ci0gICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuY29tcHJlc3NlZFRleEltYWdl
MkRSb2J1c3RBTkdMRSgKLSAgICAgICAgdGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdp
ZHRoLCBoZWlnaHQsCi0gICAgICAgIGJvcmRlciwgc2xpY2UtPmJ5dGVMZW5ndGgoKSwKLSAgICAg
ICAgc2xpY2UtPmJ5dGVMZW5ndGgoKSwgc2xpY2UtPmJhc2VBZGRyZXNzKCkpOworICAgIG1fY29u
dGV4dC0+Y29tcHJlc3NlZFRleEltYWdlMkQodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQs
IHdpZHRoLCBoZWlnaHQsIGJvcmRlciwgc2xpY2UtPmJ5dGVMZW5ndGgoKSwgbWFrZUdDR0xTcGFu
KHNsaWNlLT5iYXNlQWRkcmVzcygpLCBzbGljZS0+Ynl0ZUxlbmd0aCgpKSk7CiB9CiAKIHZvaWQg
V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Y29tcHJlc3NlZFRleEltYWdlM0QoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdp
ZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xpbnQgYm9yZGVyLCBH
Q0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMaW50NjQgb2Zmc2V0KQpAQCAtMTQwOCwxMCArMTQwMiw3
IEBAIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Y29tcHJlc3NlZFRleEltYWdlM0QoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsCiAgICAgfQogICAgIGlmICghdmFsaWRhdGVUZXh0
dXJlM0RCaW5kaW5nKCJjb21wcmVzc2VkVGV4SW1hZ2UzRCIsIHRhcmdldCkpCiAgICAgICAgIHJl
dHVybjsKLSAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5jb21wcmVzc2VkVGV4SW1hZ2Uz
RFJvYnVzdEFOR0xFKAotICAgICAgICB0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lk
dGgsCi0gICAgICAgIGhlaWdodCwgZGVwdGgsIGJvcmRlciwgaW1hZ2VTaXplLAotICAgICAgICAw
LCByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihvZmZzZXQpKTsKKyAgICBtX2NvbnRleHQtPmNv
bXByZXNzZWRUZXhJbWFnZTNEKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwg
aGVpZ2h0LCBkZXB0aCwgYm9yZGVyLCBpbWFnZVNpemUsIG9mZnNldCk7CiB9CiAKIHZvaWQgV2Vi
R0wyUmVuZGVyaW5nQ29udGV4dDo6Y29tcHJlc3NlZFRleEltYWdlM0QoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRo
LCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xpbnQgYm9yZGVyLCBBcnJh
eUJ1ZmZlclZpZXcmIHNyY0RhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVu
Z3RoT3ZlcnJpZGUpCkBAIC0xNDI5LDEwICsxNDIwLDEwIEBAIHZvaWQgV2ViR0wyUmVuZGVyaW5n
Q29udGV4dDo6Y29tcHJlc3NlZFRleEltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxl
dmVsCiAgICAgYXV0byBzbGljZSA9IHNsaWNlQXJyYXlCdWZmZXJWaWV3KCJjb21wcmVzc2VkVGV4
SW1hZ2UzRCIsIHNyY0RhdGEsIHNyY09mZnNldCwgc3JjTGVuZ3RoT3ZlcnJpZGUpOwogICAgIGlm
ICghc2xpY2UpCiAgICAgICAgIHJldHVybjsKLSAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMo
KS5jb21wcmVzc2VkVGV4SW1hZ2UzRFJvYnVzdEFOR0xFKAorICAgIG1fY29udGV4dC0+Y29tcHJl
c3NlZFRleEltYWdlM0QoCiAgICAgICAgIHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3
aWR0aCwgaGVpZ2h0LAogICAgICAgICBkZXB0aCwgYm9yZGVyLCBzbGljZS0+Ynl0ZUxlbmd0aCgp
LAotICAgICAgICBzbGljZS0+Ynl0ZUxlbmd0aCgpLCBzbGljZS0+YmFzZUFkZHJlc3MoKSk7Cisg
ICAgICAgIG1ha2VHQ0dMU3BhbihzbGljZS0+YmFzZUFkZHJlc3MoKSwgc2xpY2UtPmJ5dGVMZW5n
dGgoKSkpOwogfQogCiB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmNvbXByZXNzZWRUZXhT
dWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0
LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NH
TGVudW0gZm9ybWF0LCBBcnJheUJ1ZmZlclZpZXcmIHNyY0RhdGEpCkBAIC0xNDYwLDEwICsxNDUx
LDcgQEAgdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojpjb21wcmVzc2VkVGV4U3ViSW1hZ2Uy
RChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGUKICAgICB9CiAgICAgaWYgKCF2YWxpZGF0ZVRl
eHR1cmUyREJpbmRpbmcoImNvbXByZXNzZWRUZXhJbWFnZTJEIiwgdGFyZ2V0KSkKICAgICAgICAg
cmV0dXJuOwotICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmNvbXByZXNzZWRUZXhTdWJJ
bWFnZTJEUm9idXN0QU5HTEUoCi0gICAgICAgIHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZz
ZXQsCi0gICAgICAgIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgaW1hZ2VTaXplLAotICAgICAgICAw
LCByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihvZmZzZXQpKTsKKyAgICBtX2NvbnRleHQtPmNv
bXByZXNzZWRUZXhTdWJJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdp
ZHRoLCBoZWlnaHQsIGZvcm1hdCwgaW1hZ2VTaXplLCBvZmZzZXQpOwogfQogCiB2b2lkIFdlYkdM
MlJlbmRlcmluZ0NvbnRleHQ6OmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xz
aXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBBcnJheUJ1ZmZl
clZpZXcmIHNyY0RhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoT3Zl
cnJpZGUpCkBAIC0xNDgxLDEwICsxNDY5LDcgQEAgdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0
Ojpjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGUKICAg
ICBhdXRvIHNsaWNlID0gc2xpY2VBcnJheUJ1ZmZlclZpZXcoImNvbXByZXNzZWRUZXhTdWJJbWFn
ZTJEIiwgc3JjRGF0YSwgc3JjT2Zmc2V0LCBzcmNMZW5ndGhPdmVycmlkZSk7CiAgICAgaWYgKCFz
bGljZSkKICAgICAgICAgcmV0dXJuOwotICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmNv
bXByZXNzZWRUZXhTdWJJbWFnZTJEUm9idXN0QU5HTEUoCi0gICAgICAgIHRhcmdldCwgbGV2ZWws
IHhvZmZzZXQsIHlvZmZzZXQsCi0gICAgICAgIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgc2xpY2Ut
PmJ5dGVMZW5ndGgoKSwKLSAgICAgICAgc2xpY2UtPmJ5dGVMZW5ndGgoKSwgc2xpY2UtPmJhc2VB
ZGRyZXNzKCkpOworICAgIG1fY29udGV4dC0+Y29tcHJlc3NlZFRleFN1YkltYWdlMkQodGFyZ2V0
LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCBzbGljZS0+
Ynl0ZUxlbmd0aCgpLCBtYWtlR0NHTFNwYW4oc2xpY2UtPmJhc2VBZGRyZXNzKCksIHNsaWNlLT5i
eXRlTGVuZ3RoKCkpKTsKIH0KIAogdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojpjb21wcmVz
c2VkVGV4U3ViSW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQg
eG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMaW50IHpvZmZzZXQsIEdDR0xzaXplaSB3aWR0
aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMZW51bSBmb3JtYXQsIEdD
R0xzaXplaSBpbWFnZVNpemUsIEdDR0xpbnQ2NCBvZmZzZXQpCkBAIC0xNDk5LDEwICsxNDg0LDcg
QEAgdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojpjb21wcmVzc2VkVGV4U3ViSW1hZ2UzRChH
Q0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGUKICAgICB9CiAgICAgaWYgKCF2YWxpZGF0ZVRleHR1
cmUzREJpbmRpbmcoImNvbXByZXNzZWRUZXhTdWJJbWFnZTNEIiwgdGFyZ2V0KSkKICAgICAgICAg
cmV0dXJuOwotICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmNvbXByZXNzZWRUZXhTdWJJ
bWFnZTNEUm9idXN0QU5HTEUoCi0gICAgICAgIHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZz
ZXQsIHpvZmZzZXQsCi0gICAgICAgIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBmb3JtYXQsIGltYWdl
U2l6ZSwKLSAgICAgICAgMCwgcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4ob2Zmc2V0KSk7Cisg
ICAgbV9jb250ZXh0LT5jb21wcmVzc2VkVGV4U3ViSW1hZ2UzRCh0YXJnZXQsIGxldmVsLCB4b2Zm
c2V0LCB5b2Zmc2V0LCB6b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgZm9ybWF0LCBpbWFn
ZVNpemUsIG9mZnNldCk7CiB9CiAKIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Y29tcHJl
c3NlZFRleFN1YkltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50
IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTGludCB6b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lk
dGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGVudW0gZm9ybWF0LCBB
cnJheUJ1ZmZlclZpZXcmIHNyY0RhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3Jj
TGVuZ3RoT3ZlcnJpZGUpCkBAIC0xNTIwLDEwICsxNTAyLDEwIEBAIHZvaWQgV2ViR0wyUmVuZGVy
aW5nQ29udGV4dDo6Y29tcHJlc3NlZFRleFN1YkltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
aW50IGxlCiAgICAgYXV0byBzbGljZSA9IHNsaWNlQXJyYXlCdWZmZXJWaWV3KCJjb21wcmVzc2Vk
VGV4U3ViSW1hZ2UzRCIsIHNyY0RhdGEsIHNyY09mZnNldCwgc3JjTGVuZ3RoT3ZlcnJpZGUpOwog
ICAgIGlmICghc2xpY2UpCiAgICAgICAgIHJldHVybjsKLSAgICBtX2NvbnRleHQtPmdldEV4dGVu
c2lvbnMoKS5jb21wcmVzc2VkVGV4U3ViSW1hZ2UzRFJvYnVzdEFOR0xFKAorICAgIG1fY29udGV4
dC0+Y29tcHJlc3NlZFRleFN1YkltYWdlM0QoCiAgICAgICAgIHRhcmdldCwgbGV2ZWwsIHhvZmZz
ZXQsIHlvZmZzZXQsIHpvZmZzZXQsCiAgICAgICAgIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBmb3Jt
YXQsIHNsaWNlLT5ieXRlTGVuZ3RoKCksCi0gICAgICAgIHNsaWNlLT5ieXRlTGVuZ3RoKCksIHNs
aWNlLT5iYXNlQWRkcmVzcygpKTsKKyAgICAgICAgbWFrZUdDR0xTcGFuKHNsaWNlLT5iYXNlQWRk
cmVzcygpLCBzbGljZS0+Ynl0ZUxlbmd0aCgpKSk7CiB9CiAKIEdDR0xpbnQgV2ViR0wyUmVuZGVy
aW5nQ29udGV4dDo6Z2V0RnJhZ0RhdGFMb2NhdGlvbihXZWJHTFByb2dyYW0mIHByb2dyYW0sIGNv
bnN0IFN0cmluZyYgbmFtZSkKQEAgLTE1NjMsNzIgKzE1NDUsMTAyIEBAIHZvaWQgV2ViR0wyUmVu
ZGVyaW5nQ29udGV4dDo6dW5pZm9ybTR1aShXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24s
IEdDR0x1aW50CiAKIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTF1aXYoV2Vi
R0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBVaW50MzJMaXN0JiYgdmFsdWUsIEdDR0x1aW50
IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQogewotICAgIGlmIChpc0NvbnRleHRMb3N0
T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMoInVuaWZvcm0xdWl2Iiwg
bG9jYXRpb24sIHZhbHVlLCAxLCBzcmNPZmZzZXQsIHNyY0xlbmd0aCkpCisgICAgaWYgKGlzQ29u
dGV4dExvc3RPclBlbmRpbmcoKSkKKyAgICAgICAgcmV0dXJuOworICAgIGF1dG8gZGF0YSA9IHZh
bGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMoInVuaWZvcm0xdWl2IiwgbG9jYXRpb24sIHZhbHVlLCAx
LCBzcmNPZmZzZXQsIHNyY0xlbmd0aCk7CisgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm47
Ci0gICAgbV9jb250ZXh0LT51bmlmb3JtMXVpdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgdmFsdWUu
ZGF0YSgpLCBzcmNPZmZzZXQsIHNyY0xlbmd0aCA/IHNyY0xlbmd0aCA6ICh2YWx1ZS5sZW5ndGgo
KSAtIHNyY09mZnNldCkpOworICAgIG1fY29udGV4dC0+dW5pZm9ybTF1aXYobG9jYXRpb24tPmxv
Y2F0aW9uKCksIGRhdGEudmFsdWUoKSk7CiB9CiAKIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4
dDo6dW5pZm9ybTJ1aXYoV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBVaW50MzJMaXN0
JiYgdmFsdWUsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQogewotICAg
IGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlVW5pZm9ybVBhcmFtZXRl
cnMoInVuaWZvcm0ydWl2IiwgbG9jYXRpb24sIHZhbHVlLCAyLCBzcmNPZmZzZXQsIHNyY0xlbmd0
aCkpCisgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSkKKyAgICAgICAgcmV0dXJuOwor
ICAgIGF1dG8gZGF0YSA9IHZhbGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMoInVuaWZvcm0ydWl2Iiwg
bG9jYXRpb24sIHZhbHVlLCAyLCBzcmNPZmZzZXQsIHNyY0xlbmd0aCk7CisgICAgaWYgKCFkYXRh
KQogICAgICAgICByZXR1cm47Ci0gICAgbV9jb250ZXh0LT51bmlmb3JtMnVpdihsb2NhdGlvbi0+
bG9jYXRpb24oKSwgdmFsdWUuZGF0YSgpLCBzcmNPZmZzZXQsIChzcmNMZW5ndGggPyBzcmNMZW5n
dGggOiB2YWx1ZS5sZW5ndGgoKSAtIHNyY09mZnNldCkgLyAyKTsKKyAgICBtX2NvbnRleHQtPnVu
aWZvcm0ydWl2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCBkYXRhLnZhbHVlKCkpOwogfQogCiB2b2lk
IFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm0zdWl2KFdlYkdMVW5pZm9ybUxvY2F0aW9u
KiBsb2NhdGlvbiwgVWludDMyTGlzdCYmIHZhbHVlLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1
aW50IHNyY0xlbmd0aCkKIHsKLSAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2
YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKCJ1bmlmb3JtM3VpdiIsIGxvY2F0aW9uLCB2YWx1ZSwg
Mywgc3JjT2Zmc2V0LCBzcmNMZW5ndGgpKQorICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5n
KCkpCisgICAgICAgIHJldHVybjsKKyAgICBhdXRvIGRhdGEgPSB2YWxpZGF0ZVVuaWZvcm1QYXJh
bWV0ZXJzKCJ1bmlmb3JtM3VpdiIsIGxvY2F0aW9uLCB2YWx1ZSwgMywgc3JjT2Zmc2V0LCBzcmNM
ZW5ndGgpOworICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuOwotICAgIG1fY29udGV4dC0+
dW5pZm9ybTN1aXYobG9jYXRpb24tPmxvY2F0aW9uKCksIHZhbHVlLmRhdGEoKSwgc3JjT2Zmc2V0
LCAoc3JjTGVuZ3RoID8gc3JjTGVuZ3RoIDogdmFsdWUubGVuZ3RoKCkgLSBzcmNPZmZzZXQpIC8g
Myk7CisgICAgbV9jb250ZXh0LT51bmlmb3JtM3Vpdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgZGF0
YS52YWx1ZSgpKTsKIH0KIAogdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtNHVp
dihXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIFVpbnQzMkxpc3QmJiB2YWx1ZSwgR0NH
THVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCiB7Ci0gICAgaWYgKGlzQ29udGV4
dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycygidW5pZm9ybTR1
aXYiLCBsb2NhdGlvbiwgdmFsdWUsIDQsIHNyY09mZnNldCwgc3JjTGVuZ3RoKSkKKyAgICBpZiAo
aXNDb250ZXh0TG9zdE9yUGVuZGluZygpKQorICAgICAgICByZXR1cm47CisgICAgYXV0byBkYXRh
ID0gdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycygidW5pZm9ybTR1aXYiLCBsb2NhdGlvbiwgdmFs
dWUsIDQsIHNyY09mZnNldCwgc3JjTGVuZ3RoKTsKKyAgICBpZiAoIWRhdGEpCiAgICAgICAgIHJl
dHVybjsKLSAgICBtX2NvbnRleHQtPnVuaWZvcm00dWl2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCB2
YWx1ZS5kYXRhKCksIHNyY09mZnNldCwgKHNyY0xlbmd0aCA/IHNyY0xlbmd0aCA6IHZhbHVlLmxl
bmd0aCgpIC0gc3JjT2Zmc2V0KSAvIDQpOworICAgIG1fY29udGV4dC0+dW5pZm9ybTR1aXYobG9j
YXRpb24tPmxvY2F0aW9uKCksIGRhdGEudmFsdWUoKSk7CiB9CiAKIHZvaWQgV2ViR0wyUmVuZGVy
aW5nQ29udGV4dDo6dW5pZm9ybU1hdHJpeDJ4M2Z2KFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2Nh
dGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBGbG9hdDMyTGlzdCYmIHYsIEdDR0x1aW50IHNy
Y09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQogewotICAgIGlmIChpc0NvbnRleHRMb3N0T3JQ
ZW5kaW5nKCkgfHwgIXZhbGlkYXRlVW5pZm9ybU1hdHJpeFBhcmFtZXRlcnMoInVuaWZvcm1NYXRy
aXgyeDNmdiIsIGxvY2F0aW9uLCB0cmFuc3Bvc2UsIHYsIDYsIHNyY09mZnNldCwgc3JjTGVuZ3Ro
KSkKKyAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpKQorICAgICAgICByZXR1cm47Cisg
ICAgYXV0byBkYXRhID0gdmFsaWRhdGVVbmlmb3JtTWF0cml4UGFyYW1ldGVycygidW5pZm9ybU1h
dHJpeDJ4M2Z2IiwgbG9jYXRpb24sIHRyYW5zcG9zZSwgdiwgNiwgc3JjT2Zmc2V0LCBzcmNMZW5n
dGgpOworICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuOwotICAgIG1fY29udGV4dC0+dW5p
Zm9ybU1hdHJpeDJ4M2Z2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCB0cmFuc3Bvc2UsIHYuZGF0YSgp
LCBzcmNPZmZzZXQsIChzcmNMZW5ndGggPyBzcmNMZW5ndGggOiB2Lmxlbmd0aCgpIC0gc3JjT2Zm
c2V0KSAvIDYpOworICAgIG1fY29udGV4dC0+dW5pZm9ybU1hdHJpeDJ4M2Z2KGxvY2F0aW9uLT5s
b2NhdGlvbigpLCB0cmFuc3Bvc2UsIGRhdGEudmFsdWUoKSk7CiB9CiAKIHZvaWQgV2ViR0wyUmVu
ZGVyaW5nQ29udGV4dDo6dW5pZm9ybU1hdHJpeDN4MmZ2KFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBs
b2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBGbG9hdDMyTGlzdCYmIHYsIEdDR0x1aW50
IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQogewotICAgIGlmIChpc0NvbnRleHRMb3N0
T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlVW5pZm9ybU1hdHJpeFBhcmFtZXRlcnMoInVuaWZvcm1N
YXRyaXgzeDJmdiIsIGxvY2F0aW9uLCB0cmFuc3Bvc2UsIHYsIDYsIHNyY09mZnNldCwgc3JjTGVu
Z3RoKSkKKyAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpKQorICAgICAgICByZXR1cm47
CisgICAgYXV0byBkYXRhID0gdmFsaWRhdGVVbmlmb3JtTWF0cml4UGFyYW1ldGVycygidW5pZm9y
bU1hdHJpeDN4MmZ2IiwgbG9jYXRpb24sIHRyYW5zcG9zZSwgdiwgNiwgc3JjT2Zmc2V0LCBzcmNM
ZW5ndGgpOworICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuOwotICAgIG1fY29udGV4dC0+
dW5pZm9ybU1hdHJpeDN4MmZ2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCB0cmFuc3Bvc2UsIHYuZGF0
YSgpLCBzcmNPZmZzZXQsIChzcmNMZW5ndGggPyBzcmNMZW5ndGggOiB2Lmxlbmd0aCgpIC0gc3Jj
T2Zmc2V0KSAvIDYpOworICAgIG1fY29udGV4dC0+dW5pZm9ybU1hdHJpeDN4MmZ2KGxvY2F0aW9u
LT5sb2NhdGlvbigpLCB0cmFuc3Bvc2UsIGRhdGEudmFsdWUoKSk7CiB9CiAKIHZvaWQgV2ViR0wy
UmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybU1hdHJpeDJ4NGZ2KFdlYkdMVW5pZm9ybUxvY2F0aW9u
KiBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBGbG9hdDMyTGlzdCYmIHYsIEdDR0x1
aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQogewotICAgIGlmIChpc0NvbnRleHRM
b3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlVW5pZm9ybU1hdHJpeFBhcmFtZXRlcnMoInVuaWZv
cm1NYXRyaXgyeDRmdiIsIGxvY2F0aW9uLCB0cmFuc3Bvc2UsIHYsIDgsIHNyY09mZnNldCwgc3Jj
TGVuZ3RoKSkKKyAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpKQorICAgICAgICByZXR1
cm47CisgICAgYXV0byBkYXRhID0gdmFsaWRhdGVVbmlmb3JtTWF0cml4UGFyYW1ldGVycygidW5p
Zm9ybU1hdHJpeDJ4NGZ2IiwgbG9jYXRpb24sIHRyYW5zcG9zZSwgdiwgOCwgc3JjT2Zmc2V0LCBz
cmNMZW5ndGgpOworICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuOwotICAgIG1fY29udGV4
dC0+dW5pZm9ybU1hdHJpeDJ4NGZ2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCB0cmFuc3Bvc2UsIHYu
ZGF0YSgpLCBzcmNPZmZzZXQsIChzcmNMZW5ndGggPyBzcmNMZW5ndGggOiB2Lmxlbmd0aCgpIC0g
c3JjT2Zmc2V0KSAvIDgpOworICAgIG1fY29udGV4dC0+dW5pZm9ybU1hdHJpeDJ4NGZ2KGxvY2F0
aW9uLT5sb2NhdGlvbigpLCB0cmFuc3Bvc2UsIGRhdGEudmFsdWUoKSk7CiB9CiAKIHZvaWQgV2Vi
R0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybU1hdHJpeDR4MmZ2KFdlYkdMVW5pZm9ybUxvY2F0
aW9uKiBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBGbG9hdDMyTGlzdCYmIHYsIEdD
R0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQogewotICAgIGlmIChpc0NvbnRl
eHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlVW5pZm9ybU1hdHJpeFBhcmFtZXRlcnMoInVu
aWZvcm1NYXRyaXg0eDJmdiIsIGxvY2F0aW9uLCB0cmFuc3Bvc2UsIHYsIDgsIHNyY09mZnNldCwg
c3JjTGVuZ3RoKSkKKyAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpKQorICAgICAgICBy
ZXR1cm47CisgICAgYXV0byBkYXRhID0gdmFsaWRhdGVVbmlmb3JtTWF0cml4UGFyYW1ldGVycygi
dW5pZm9ybU1hdHJpeDR4MmZ2IiwgbG9jYXRpb24sIHRyYW5zcG9zZSwgdiwgOCwgc3JjT2Zmc2V0
LCBzcmNMZW5ndGgpOworICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuOwotICAgIG1fY29u
dGV4dC0+dW5pZm9ybU1hdHJpeDR4MmZ2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCB0cmFuc3Bvc2Us
IHYuZGF0YSgpLCBzcmNPZmZzZXQsIChzcmNMZW5ndGggPyBzcmNMZW5ndGggOiB2Lmxlbmd0aCgp
IC0gc3JjT2Zmc2V0KSAvIDgpOworICAgIG1fY29udGV4dC0+dW5pZm9ybU1hdHJpeDR4MmZ2KGxv
Y2F0aW9uLT5sb2NhdGlvbigpLCB0cmFuc3Bvc2UsIGRhdGEudmFsdWUoKSk7CiB9CiAKIHZvaWQg
V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybU1hdHJpeDN4NGZ2KFdlYkdMVW5pZm9ybUxv
Y2F0aW9uKiBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBGbG9hdDMyTGlzdCYmIHYs
IEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQogewotICAgIGlmIChpc0Nv
bnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlVW5pZm9ybU1hdHJpeFBhcmFtZXRlcnMo
InVuaWZvcm1NYXRyaXgzeDRmdiIsIGxvY2F0aW9uLCB0cmFuc3Bvc2UsIHYsIDEyLCBzcmNPZmZz
ZXQsIHNyY0xlbmd0aCkpCisgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSkKKyAgICAg
ICAgcmV0dXJuOworICAgIGF1dG8gZGF0YSA9IHZhbGlkYXRlVW5pZm9ybU1hdHJpeFBhcmFtZXRl
cnMoInVuaWZvcm1NYXRyaXgzeDRmdiIsIGxvY2F0aW9uLCB0cmFuc3Bvc2UsIHYsIDEyLCBzcmNP
ZmZzZXQsIHNyY0xlbmd0aCk7CisgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm47Ci0gICAg
bV9jb250ZXh0LT51bmlmb3JtTWF0cml4M3g0ZnYobG9jYXRpb24tPmxvY2F0aW9uKCksIHRyYW5z
cG9zZSwgdi5kYXRhKCksIHNyY09mZnNldCwgKHNyY0xlbmd0aCA/IHNyY0xlbmd0aCA6IHYubGVu
Z3RoKCkgLSBzcmNPZmZzZXQpIC8gMTIpOworICAgIG1fY29udGV4dC0+dW5pZm9ybU1hdHJpeDN4
NGZ2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCB0cmFuc3Bvc2UsIGRhdGEudmFsdWUoKSk7CiB9CiAK
IHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybU1hdHJpeDR4M2Z2KFdlYkdMVW5p
Zm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBGbG9hdDMyTGlz
dCYmIHYsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQogewotICAgIGlm
IChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlVW5pZm9ybU1hdHJpeFBhcmFt
ZXRlcnMoInVuaWZvcm1NYXRyaXg0eDNmdiIsIGxvY2F0aW9uLCB0cmFuc3Bvc2UsIHYsIDEyLCBz
cmNPZmZzZXQsIHNyY0xlbmd0aCkpCisgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSkK
KyAgICAgICAgcmV0dXJuOworICAgIGF1dG8gZGF0YSA9IHZhbGlkYXRlVW5pZm9ybU1hdHJpeFBh
cmFtZXRlcnMoInVuaWZvcm1NYXRyaXg0eDNmdiIsIGxvY2F0aW9uLCB0cmFuc3Bvc2UsIHYsIDEy
LCBzcmNPZmZzZXQsIHNyY0xlbmd0aCk7CisgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm47
Ci0gICAgbV9jb250ZXh0LT51bmlmb3JtTWF0cml4NHgzZnYobG9jYXRpb24tPmxvY2F0aW9uKCks
IHRyYW5zcG9zZSwgdi5kYXRhKCksIHNyY09mZnNldCwgKHNyY0xlbmd0aCA/IHNyY0xlbmd0aCA6
IHYubGVuZ3RoKCkgLSBzcmNPZmZzZXQpIC8gMTIpOworICAgIG1fY29udGV4dC0+dW5pZm9ybU1h
dHJpeDR4M2Z2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCB0cmFuc3Bvc2UsIGRhdGEudmFsdWUoKSk7
CiB9CiAKIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dmVydGV4QXR0cmliSTRpKEdDR0x1
aW50IGluZGV4LCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTGludCB6LCBHQ0dMaW50IHcpCkBA
IC0xNjY0LDcgKzE2NzYsNyBAQCB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnZlcnRleEF0
dHJpYkk0aXYoR0NHTHVpbnQgaW5kZXgsIEludDMyTGlzdCYmIGxpc3QpCiAgICAgICAgIHN5bnRo
ZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX1ZBTFVFLCAidmVydGV4QXR0
cmliSTRpdiIsICJpbmRleCBvdXQgb2YgcmFuZ2UiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
LSAgICBtX2NvbnRleHQtPnZlcnRleEF0dHJpYkk0aXYoaW5kZXgsIGRhdGEpOworICAgIG1fY29u
dGV4dC0+dmVydGV4QXR0cmliSTRpdihpbmRleCwgbWFrZUdDR0xTcGFuPDQ+KGRhdGEpKTsKICAg
ICBtX3ZlcnRleEF0dHJpYlZhbHVlW2luZGV4XS50eXBlID0gR3JhcGhpY3NDb250ZXh0R0w6OklO
VDsKICAgICBtZW1jcHkobV92ZXJ0ZXhBdHRyaWJWYWx1ZVtpbmRleF0uaVZhbHVlLCBkYXRhLCBz
aXplb2YobV92ZXJ0ZXhBdHRyaWJWYWx1ZVtpbmRleF0uaVZhbHVlKSk7CiB9CkBAIC0xNzAyLDcg
KzE3MTQsNyBAQCB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnZlcnRleEF0dHJpYkk0dWl2
KEdDR0x1aW50IGluZGV4LCBVaW50MzJMaXN0JiYgbGlzdAogICAgICAgICBzeW50aGVzaXplR0xF
cnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9WQUxVRSwgInZlcnRleEF0dHJpYkk0dWl2
IiwgImluZGV4IG91dCBvZiByYW5nZSIpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIG1f
Y29udGV4dC0+dmVydGV4QXR0cmliSTR1aXYoaW5kZXgsIGRhdGEpOworICAgIG1fY29udGV4dC0+
dmVydGV4QXR0cmliSTR1aXYoaW5kZXgsIG1ha2VHQ0dMU3Bhbjw0PihkYXRhKSk7CiAgICAgbV92
ZXJ0ZXhBdHRyaWJWYWx1ZVtpbmRleF0udHlwZSA9IEdyYXBoaWNzQ29udGV4dEdMOjpVTlNJR05F
RF9JTlQ7CiAgICAgbWVtY3B5KG1fdmVydGV4QXR0cmliVmFsdWVbaW5kZXhdLnVpVmFsdWUsIGRh
dGEsIHNpemVvZihtX3ZlcnRleEF0dHJpYlZhbHVlW2luZGV4XS51aVZhbHVlKSk7CiB9CkBAIC0x
NzYzLDggKzE3NzUsOCBAQCB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmRyYXdCdWZmZXJz
KGNvbnN0IFZlY3RvcjxHQ0dMZW51bT4mIGJ1ZmZlcnMpCiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KICAgICAgICAgLy8gQmVjYXVzZSB0aGUgYmFja2J1ZmZlciBpcyBzaW11bGF0ZWQg
b24gYWxsIGN1cnJlbnQgV2ViS2l0IHBvcnRzLCB3ZSBuZWVkIHRvIGNoYW5nZSBCQUNLIHRvIENP
TE9SX0FUVEFDSE1FTlQwLgotICAgICAgICBHQ0dMZW51bSB2YWx1ZSA9IChidWZzWzBdID09IEdy
YXBoaWNzQ29udGV4dEdMOjpCQUNLKSA/IEdyYXBoaWNzQ29udGV4dEdMOjpDT0xPUl9BVFRBQ0hN
RU5UMCA6IEdyYXBoaWNzQ29udGV4dEdMOjpOT05FOwotICAgICAgICBtX2NvbnRleHQtPmRyYXdC
dWZmZXJzKDEsICZ2YWx1ZSk7CisgICAgICAgIEdDR0xlbnVtIHZhbHVlWzFdIHsgKGJ1ZnNbMF0g
PT0gR3JhcGhpY3NDb250ZXh0R0w6OkJBQ0spID8gR3JhcGhpY3NDb250ZXh0R0w6OkNPTE9SX0FU
VEFDSE1FTlQwIDogR3JhcGhpY3NDb250ZXh0R0w6Ok5PTkUgfTsKKyAgICAgICAgbV9jb250ZXh0
LT5kcmF3QnVmZmVycyh2YWx1ZSk7CiAgICAgICAgIHNldEJhY2tEcmF3QnVmZmVyKGJ1ZnNbMF0p
OwogICAgIH0gZWxzZSB7CiAgICAgICAgIGlmIChuID4gZ2V0TWF4RHJhd0J1ZmZlcnMoKSkgewpA
QCAtMTc4MywyOCArMTc5NSwzNiBAQCB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmRyYXdC
dWZmZXJzKGNvbnN0IFZlY3RvcjxHQ0dMZW51bT4mIGJ1ZmZlcnMpCiAKIHZvaWQgV2ViR0wyUmVu
ZGVyaW5nQ29udGV4dDo6Y2xlYXJCdWZmZXJpdihHQ0dMZW51bSBidWZmZXIsIEdDR0xpbnQgZHJh
d2J1ZmZlciwgSW50MzJMaXN0JiYgdmFsdWVzLCBHQ0dMdWludCBzcmNPZmZzZXQpCiB7Ci0gICAg
aWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVDbGVhckJ1ZmZlcigiY2xl
YXJCdWZmZXJpdiIsIGJ1ZmZlciwgdmFsdWVzLmxlbmd0aCgpLCBzcmNPZmZzZXQpKQorICAgIGlm
IChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCisgICAgICAgIHJldHVybjsKKyAgICBhdXRvIGRh
dGEgPSB2YWxpZGF0ZUNsZWFyQnVmZmVyKCJjbGVhckJ1ZmZlcml2IiwgYnVmZmVyLCB2YWx1ZXMs
IHNyY09mZnNldCk7CisgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2Nv
bnRleHQtPmNsZWFyQnVmZmVyaXYoYnVmZmVyLCBkcmF3YnVmZmVyLCB2YWx1ZXMuZGF0YSgpLCBz
cmNPZmZzZXQpOworICAgIG1fY29udGV4dC0+Y2xlYXJCdWZmZXJpdihidWZmZXIsIGRyYXdidWZm
ZXIsIGRhdGEudmFsdWUoKSk7CiAgICAgdXBkYXRlQnVmZmVyc1RvQXV0b0NsZWFyKENsZWFyQnVm
ZmVyQ2FsbGVyOjpDbGVhckJ1ZmZlcml2LCBidWZmZXIsIGRyYXdidWZmZXIpOwogfQogCiB2b2lk
IFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmNsZWFyQnVmZmVydWl2KEdDR0xlbnVtIGJ1ZmZlciwg
R0NHTGludCBkcmF3YnVmZmVyLCBVaW50MzJMaXN0JiYgdmFsdWVzLCBHQ0dMdWludCBzcmNPZmZz
ZXQpCiB7Ci0gICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVDbGVh
ckJ1ZmZlcigiY2xlYXJCdWZmZXJ1aXYiLCBidWZmZXIsIHZhbHVlcy5sZW5ndGgoKSwgc3JjT2Zm
c2V0KSkKKyAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpKQogICAgICAgICByZXR1cm47
Ci0KLSAgICBtX2NvbnRleHQtPmNsZWFyQnVmZmVydWl2KGJ1ZmZlciwgZHJhd2J1ZmZlciwgdmFs
dWVzLmRhdGEoKSwgc3JjT2Zmc2V0KTsKKyAgICBhdXRvIGRhdGEgPSB2YWxpZGF0ZUNsZWFyQnVm
ZmVyKCJjbGVhckJ1ZmZlcnVpdiIsIGJ1ZmZlciwgdmFsdWVzLCBzcmNPZmZzZXQpOworICAgIGlm
ICghZGF0YSkKKyAgICAgICAgcmV0dXJuOworICAgIG1fY29udGV4dC0+Y2xlYXJCdWZmZXJ1aXYo
YnVmZmVyLCBkcmF3YnVmZmVyLCBkYXRhLnZhbHVlKCkpOwogICAgIHVwZGF0ZUJ1ZmZlcnNUb0F1
dG9DbGVhcihDbGVhckJ1ZmZlckNhbGxlcjo6Q2xlYXJCdWZmZXJ1aXYsIGJ1ZmZlciwgZHJhd2J1
ZmZlcik7CiB9CiAKIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Y2xlYXJCdWZmZXJmdihH
Q0dMZW51bSBidWZmZXIsIEdDR0xpbnQgZHJhd2J1ZmZlciwgRmxvYXQzMkxpc3QmJiB2YWx1ZXMs
IEdDR0x1aW50IHNyY09mZnNldCkKIHsKLSAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygp
IHx8ICF2YWxpZGF0ZUNsZWFyQnVmZmVyKCJjbGVhckJ1ZmZlcmZ2IiwgYnVmZmVyLCB2YWx1ZXMu
bGVuZ3RoKCksIHNyY09mZnNldCkpCisgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSkK
KyAgICAgICAgcmV0dXJuOworICAgIGF1dG8gZGF0YSA9IHZhbGlkYXRlQ2xlYXJCdWZmZXIoImNs
ZWFyQnVmZmVyZnYiLCBidWZmZXIsIHZhbHVlcywgc3JjT2Zmc2V0KTsKKyAgICBpZiAoIWRhdGEp
CiAgICAgICAgIHJldHVybjsKIAotICAgIG1fY29udGV4dC0+Y2xlYXJCdWZmZXJmdihidWZmZXIs
IGRyYXdidWZmZXIsIHZhbHVlcy5kYXRhKCksIHNyY09mZnNldCk7CisgICAgbV9jb250ZXh0LT5j
bGVhckJ1ZmZlcmZ2KGJ1ZmZlciwgZHJhd2J1ZmZlciwgZGF0YS52YWx1ZSgpKTsKICAgICAvLyBj
bGVhckJ1ZmZlcml2IGFuZCBjbGVhckJ1ZmZlcnVpdiB3aWxsIGN1cnJlbnRseSBnZW5lcmF0ZSBh
biBlcnJvcgogICAgIC8vIGlmIHRoZXkncmUgY2FsbGVkIGFnYWluc3QgdGhlIGRlZmF1bHQgYmFj
ayBidWZmZXIuIElmIHN1cHBvcnQgZm9yCiAgICAgLy8gZXh0ZW5kZWQgY2FudmFzIGNvbG9yIHNw
YWNlcyBpcyBhZGRlZCwgdGhpcyBjYWxsIG1pZ2h0IG5lZWQgdG8gYmUKQEAgLTMzNzIsMTEwICsz
MzkyLDE0NCBAQCBib29sIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnZhbGlkYXRlQ2FwYWJpbGl0
eShjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIEdDR0xlbgogICAgIH0KIH0KIAotYm9vbCBXZWJH
TDJSZW5kZXJpbmdDb250ZXh0Ojp2YWxpZGF0ZUNsZWFyQnVmZmVyKGNvbnN0IGNoYXIqIGZ1bmN0
aW9uTmFtZSwgR0NHTGVudW0gYnVmZmVyLCBzaXplX3Qgc2l6ZSwgR0NHTHVpbnQgc3JjT2Zmc2V0
KQordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVHlwZWRBcnJheVR5cGU+CitPcHRpb25h
bDxHQ0dMU3Bhbjxjb25zdCBUPj4gV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dmFsaWRhdGVDbGVh
ckJ1ZmZlcihjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIEdDR0xlbnVtIGJ1ZmZlciwgVHlwZWRM
aXN0PFR5cGVkQXJyYXlUeXBlLCBUPiYgdmFsdWVzLCBHQ0dMdWludCBzcmNPZmZzZXQpCiB7Ci0g
ICAgQ2hlY2tlZDxHQ0dMc2l6ZWksIFJlY29yZE92ZXJmbG93PiBjaGVja2VkU2l6ZShzaXplKTsK
KyAgICBDaGVja2VkPEdDR0xzaXplaSwgUmVjb3JkT3ZlcmZsb3c+IGNoZWNrZWRTaXplKHZhbHVl
cy5sZW5ndGgoKSk7CiAgICAgY2hlY2tlZFNpemUgLT0gc3JjT2Zmc2V0OwogICAgIGlmIChjaGVj
a2VkU2l6ZS5oYXNPdmVyZmxvd2VkKCkpIHsKICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3Jh
cGhpY3NDb250ZXh0R0w6OklOVkFMSURfVkFMVUUsIGZ1bmN0aW9uTmFtZSwgImludmFsaWQgYXJy
YXkgc2l6ZSAvIHNyY09mZnNldCIpOwotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJl
dHVybiB7IH07CiAgICAgfQogICAgIHN3aXRjaCAoYnVmZmVyKSB7CiAgICAgY2FzZSBHcmFwaGlj
c0NvbnRleHRHTDo6Q09MT1I6CiAgICAgICAgIGlmIChjaGVja2VkU2l6ZS51bnNhZmVHZXQoKSA8
IDQpIHsKICAgICAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJ
TlZBTElEX1ZBTFVFLCBmdW5jdGlvbk5hbWUsICJpbnZhbGlkIGFycmF5IHNpemUgLyBzcmNPZmZz
ZXQiKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIHJldHVybiB7IH07
CiAgICAgICAgIH0KLSAgICAgICAgYnJlYWs7CisgICAgICAgIHJldHVybiBtYWtlR0NHTFNwYW4o
dmFsdWVzLmRhdGEoKSArIHNyY09mZnNldCwgNCk7CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRH
TDo6REVQVEg6CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6U1RFTkNJTDoKICAgICAgICAg
aWYgKGNoZWNrZWRTaXplLnVuc2FmZUdldCgpIDwgMSkgewogICAgICAgICAgICAgc3ludGhlc2l6
ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfVkFMVUUsIGZ1bmN0aW9uTmFtZSwg
ImludmFsaWQgYXJyYXkgc2l6ZSAvIHNyY09mZnNldCIpOwotICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICAgICAgcmV0dXJuIHsgfTsKICAgICAgICAgfQotICAgICAgICBicmVhazsK
KyAgICAgICAgcmV0dXJuIG1ha2VHQ0dMU3Bhbih2YWx1ZXMuZGF0YSgpICsgc3JjT2Zmc2V0LCAx
KTsKKwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29u
dGV4dEdMOjpJTlZBTElEX0VOVU0sIGZ1bmN0aW9uTmFtZSwgImludmFsaWQgYnVmZmVyIik7Ci0g
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9Ci0gICAgcmV0
dXJuIHRydWU7CiB9CiAKIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTFmdihX
ZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEZsb2F0MzJMaXN0IGRhdGEsIEdDR0x1aW50
IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQogewotICAgIGlmIChpc0NvbnRleHRMb3N0
T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMoInVuaWZvcm0xZnYiLCBs
b2NhdGlvbiwgZGF0YSwgMSwgc3JjT2Zmc2V0LCBzcmNMZW5ndGgpKQorICAgIGlmIChpc0NvbnRl
eHRMb3N0T3JQZW5kaW5nKCkpCisgICAgICAgIHJldHVybjsKKyAgICBhdXRvIHJlc3VsdCA9IHZh
bGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMoInVuaWZvcm0xZnYiLCBsb2NhdGlvbiwgZGF0YSwgMSwg
c3JjT2Zmc2V0LCBzcmNMZW5ndGgpOworICAgIGlmICghcmVzdWx0KQogICAgICAgICByZXR1cm47
Ci0gICAgbV9jb250ZXh0LT51bmlmb3JtMWZ2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCBkYXRhLmRh
dGEoKSwgc3JjT2Zmc2V0LCBzcmNMZW5ndGggPyBzcmNMZW5ndGggOiAoZGF0YS5sZW5ndGgoKSAt
IHNyY09mZnNldCkpOworICAgIG1fY29udGV4dC0+dW5pZm9ybTFmdihsb2NhdGlvbi0+bG9jYXRp
b24oKSwgcmVzdWx0LnZhbHVlKCkpOwogfQogCiB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6
OnVuaWZvcm0yZnYoV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBGbG9hdDMyTGlzdCBk
YXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKIHsKLSAgICBpZiAo
aXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKCJ1
bmlmb3JtMmZ2IiwgbG9jYXRpb24sIGRhdGEsIDIsIHNyY09mZnNldCwgc3JjTGVuZ3RoKSkKKyAg
ICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpKQorICAgICAgICByZXR1cm47CisgICAgYXV0
byByZXN1bHQgPSB2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKCJ1bmlmb3JtMmZ2IiwgbG9jYXRp
b24sIGRhdGEsIDIsIHNyY09mZnNldCwgc3JjTGVuZ3RoKTsKKyAgICBpZiAoIXJlc3VsdCkKICAg
ICAgICAgcmV0dXJuOwotICAgIG1fY29udGV4dC0+dW5pZm9ybTJmdihsb2NhdGlvbi0+bG9jYXRp
b24oKSwgZGF0YS5kYXRhKCksIHNyY09mZnNldCwgKHNyY0xlbmd0aCA/IHNyY0xlbmd0aCA6IGRh
dGEubGVuZ3RoKCkgLSBzcmNPZmZzZXQpIC8gMik7CisgICAgbV9jb250ZXh0LT51bmlmb3JtMmZ2
KGxvY2F0aW9uLT5sb2NhdGlvbigpLCByZXN1bHQudmFsdWUoKSk7CiB9CiAKIHZvaWQgV2ViR0wy
UmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTNmdihXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRp
b24sIEZsb2F0MzJMaXN0IGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVu
Z3RoKQogewotICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlVW5p
Zm9ybVBhcmFtZXRlcnMoInVuaWZvcm0zZnYiLCBsb2NhdGlvbiwgZGF0YSwgMywgc3JjT2Zmc2V0
LCBzcmNMZW5ndGgpKQorICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCisgICAgICAg
IHJldHVybjsKKyAgICBhdXRvIHJlc3VsdCA9IHZhbGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMoInVu
aWZvcm0zZnYiLCBsb2NhdGlvbiwgZGF0YSwgMywgc3JjT2Zmc2V0LCBzcmNMZW5ndGgpOworICAg
IGlmICghcmVzdWx0KQogICAgICAgICByZXR1cm47Ci0gICAgbV9jb250ZXh0LT51bmlmb3JtM2Z2
KGxvY2F0aW9uLT5sb2NhdGlvbigpLCBkYXRhLmRhdGEoKSwgc3JjT2Zmc2V0LCAoc3JjTGVuZ3Ro
ID8gc3JjTGVuZ3RoIDogZGF0YS5sZW5ndGgoKSAtIHNyY09mZnNldCkgLyAzKTsKKyAgICBtX2Nv
bnRleHQtPnVuaWZvcm0zZnYobG9jYXRpb24tPmxvY2F0aW9uKCksIHJlc3VsdC52YWx1ZSgpKTsK
IH0KIAogdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtNGZ2KFdlYkdMVW5pZm9y
bUxvY2F0aW9uKiBsb2NhdGlvbiwgRmxvYXQzMkxpc3QgZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0
LCBHQ0dMdWludCBzcmNMZW5ndGgpCiB7Ci0gICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmco
KSB8fCAhdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycygidW5pZm9ybTRmdiIsIGxvY2F0aW9uLCBk
YXRhLCA0LCBzcmNPZmZzZXQsIHNyY0xlbmd0aCkpCisgICAgaWYgKGlzQ29udGV4dExvc3RPclBl
bmRpbmcoKSkKICAgICAgICAgcmV0dXJuOwotICAgIG1fY29udGV4dC0+dW5pZm9ybTRmdihsb2Nh
dGlvbi0+bG9jYXRpb24oKSwgZGF0YS5kYXRhKCksIHNyY09mZnNldCwgKHNyY0xlbmd0aCA/IHNy
Y0xlbmd0aCA6IGRhdGEubGVuZ3RoKCkgLSBzcmNPZmZzZXQpIC8gNCk7CisgICAgYXV0byByZXN1
bHQgPSB2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKCJ1bmlmb3JtNGZ2IiwgbG9jYXRpb24sIGRh
dGEsIDQsIHNyY09mZnNldCwgc3JjTGVuZ3RoKTsKKyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAg
cmV0dXJuOworICAgIG1fY29udGV4dC0+dW5pZm9ybTRmdihsb2NhdGlvbi0+bG9jYXRpb24oKSwg
cmVzdWx0LnZhbHVlKCkpOwogfQogCiB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZv
cm0xaXYoV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBJbnQzMkxpc3QgZGF0YSwgR0NH
THVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCiB7Ci0gICAgaWYgKGlzQ29udGV4
dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycygidW5pZm9ybTFp
diIsIGxvY2F0aW9uLCBkYXRhLCAxLCBzcmNPZmZzZXQsIHNyY0xlbmd0aCkpCisgICAgaWYgKGlz
Q29udGV4dExvc3RPclBlbmRpbmcoKSkKICAgICAgICAgcmV0dXJuOwotICAgIG1fY29udGV4dC0+
dW5pZm9ybTFpdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgZGF0YS5kYXRhKCksIHNyY09mZnNldCwg
c3JjTGVuZ3RoID8gc3JjTGVuZ3RoIDogKGRhdGEubGVuZ3RoKCkgLSBzcmNPZmZzZXQpKTsKKyAg
ICBhdXRvIHJlc3VsdCA9IHZhbGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMoInVuaWZvcm0xaXYiLCBs
b2NhdGlvbiwgZGF0YSwgMSwgc3JjT2Zmc2V0LCBzcmNMZW5ndGgpOworICAgIGlmICghcmVzdWx0
KQorICAgICAgICByZXR1cm47CisgICAgbV9jb250ZXh0LT51bmlmb3JtMWl2KGxvY2F0aW9uLT5s
b2NhdGlvbigpLCByZXN1bHQudmFsdWUoKSk7CiB9CiAKIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29u
dGV4dDo6dW5pZm9ybTJpdihXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEludDMyTGlz
dCBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKIHsKLSAgICBp
ZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJz
KCJ1bmlmb3JtMml2IiwgbG9jYXRpb24sIGRhdGEsIDIsIHNyY09mZnNldCwgc3JjTGVuZ3RoKSkK
KyAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpKQogICAgICAgICByZXR1cm47Ci0gICAg
bV9jb250ZXh0LT51bmlmb3JtMml2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCBkYXRhLmRhdGEoKSwg
c3JjT2Zmc2V0LCAoc3JjTGVuZ3RoID8gc3JjTGVuZ3RoIDogZGF0YS5sZW5ndGgoKSAtIHNyY09m
ZnNldCkgLyAyKTsKKyAgICBhdXRvIHJlc3VsdCA9IHZhbGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMo
InVuaWZvcm0yaXYiLCBsb2NhdGlvbiwgZGF0YSwgMiwgc3JjT2Zmc2V0LCBzcmNMZW5ndGgpOwor
ICAgIGlmICghcmVzdWx0KQorICAgICAgICByZXR1cm47CisgICAgbV9jb250ZXh0LT51bmlmb3Jt
Mml2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCByZXN1bHQudmFsdWUoKSk7CiB9CiAKIHZvaWQgV2Vi
R0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTNpdihXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9j
YXRpb24sIEludDMyTGlzdCBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xl
bmd0aCkKIHsKLSAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVVu
aWZvcm1QYXJhbWV0ZXJzKCJ1bmlmb3JtM2l2IiwgbG9jYXRpb24sIGRhdGEsIDMsIHNyY09mZnNl
dCwgc3JjTGVuZ3RoKSkKKyAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpKQogICAgICAg
ICByZXR1cm47Ci0gICAgbV9jb250ZXh0LT51bmlmb3JtM2l2KGxvY2F0aW9uLT5sb2NhdGlvbigp
LCBkYXRhLmRhdGEoKSwgc3JjT2Zmc2V0LCAoc3JjTGVuZ3RoID8gc3JjTGVuZ3RoIDogZGF0YS5s
ZW5ndGgoKSAtIHNyY09mZnNldCkgLyAzKTsKKyAgICBhdXRvIHJlc3VsdCA9IHZhbGlkYXRlVW5p
Zm9ybVBhcmFtZXRlcnMoInVuaWZvcm0zaXYiLCBsb2NhdGlvbiwgZGF0YSwgMywgc3JjT2Zmc2V0
LCBzcmNMZW5ndGgpOworICAgIGlmICghcmVzdWx0KQorICAgICAgICByZXR1cm47CisgICAgbV9j
b250ZXh0LT51bmlmb3JtM2l2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCByZXN1bHQudmFsdWUoKSk7
CiB9CiAKIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTRpdihXZWJHTFVuaWZv
cm1Mb2NhdGlvbiogbG9jYXRpb24sIEludDMyTGlzdCBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQs
IEdDR0x1aW50IHNyY0xlbmd0aCkKIHsKLSAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygp
IHx8ICF2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKCJ1bmlmb3JtNGl2IiwgbG9jYXRpb24sIGRh
dGEsIDQsIHNyY09mZnNldCwgc3JjTGVuZ3RoKSkKKyAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVu
ZGluZygpKQogICAgICAgICByZXR1cm47Ci0gICAgbV9jb250ZXh0LT51bmlmb3JtNGl2KGxvY2F0
aW9uLT5sb2NhdGlvbigpLCBkYXRhLmRhdGEoKSwgc3JjT2Zmc2V0LCAoc3JjTGVuZ3RoID8gc3Jj
TGVuZ3RoIDogZGF0YS5sZW5ndGgoKSAtIHNyY09mZnNldCkgLyA0KTsKKyAgICBhdXRvIHJlc3Vs
dCA9IHZhbGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMoInVuaWZvcm00aXYiLCBsb2NhdGlvbiwgZGF0
YSwgNCwgc3JjT2Zmc2V0LCBzcmNMZW5ndGgpOworICAgIGlmICghcmVzdWx0KQorICAgICAgICBy
ZXR1cm47CisgICAgbV9jb250ZXh0LT51bmlmb3JtNGl2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCBy
ZXN1bHQudmFsdWUoKSk7CiB9CiAKIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9y
bU1hdHJpeDJmdihXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEdDR0xib29sZWFuIHRy
YW5zcG9zZSwgRmxvYXQzMkxpc3QgZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBz
cmNMZW5ndGgpCiB7Ci0gICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRh
dGVVbmlmb3JtTWF0cml4UGFyYW1ldGVycygidW5pZm9ybU1hdHJpeDJmdiIsIGxvY2F0aW9uLCB0
cmFuc3Bvc2UsIGRhdGEsIDIqMiwgc3JjT2Zmc2V0LCBzcmNMZW5ndGgpKQorICAgIGlmIChpc0Nv
bnRleHRMb3N0T3JQZW5kaW5nKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBtX2NvbnRleHQtPnVu
aWZvcm1NYXRyaXgyZnYobG9jYXRpb24tPmxvY2F0aW9uKCksIHRyYW5zcG9zZSwgZGF0YS5kYXRh
KCksIHNyY09mZnNldCwgKHNyY0xlbmd0aCA/IHNyY0xlbmd0aCA6IGRhdGEubGVuZ3RoKCkgLSBz
cmNPZmZzZXQpIC8gKDIqMikpOworICAgIGF1dG8gcmVzdWx0ID0gdmFsaWRhdGVVbmlmb3JtTWF0
cml4UGFyYW1ldGVycygidW5pZm9ybU1hdHJpeDJmdiIsIGxvY2F0aW9uLCB0cmFuc3Bvc2UsIGRh
dGEsIDIqMiwgc3JjT2Zmc2V0LCBzcmNMZW5ndGgpOworICAgIGlmICghcmVzdWx0KQorICAgICAg
ICByZXR1cm47CisgICAgbV9jb250ZXh0LT51bmlmb3JtTWF0cml4MmZ2KGxvY2F0aW9uLT5sb2Nh
dGlvbigpLCB0cmFuc3Bvc2UsIHJlc3VsdC52YWx1ZSgpKTsKIH0KIAogdm9pZCBXZWJHTDJSZW5k
ZXJpbmdDb250ZXh0Ojp1bmlmb3JtTWF0cml4M2Z2KFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2Nh
dGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBGbG9hdDMyTGlzdCBkYXRhLCBHQ0dMdWludCBz
cmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKIHsKLSAgICBpZiAoaXNDb250ZXh0TG9zdE9y
UGVuZGluZygpIHx8ICF2YWxpZGF0ZVVuaWZvcm1NYXRyaXhQYXJhbWV0ZXJzKCJ1bmlmb3JtTWF0
cml4M2Z2IiwgbG9jYXRpb24sIHRyYW5zcG9zZSwgZGF0YSwgMyozLCBzcmNPZmZzZXQsIHNyY0xl
bmd0aCkpCisgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSkKICAgICAgICAgcmV0dXJu
OwotICAgIG1fY29udGV4dC0+dW5pZm9ybU1hdHJpeDNmdihsb2NhdGlvbi0+bG9jYXRpb24oKSwg
dHJhbnNwb3NlLCBkYXRhLmRhdGEoKSwgc3JjT2Zmc2V0LCAoc3JjTGVuZ3RoID8gc3JjTGVuZ3Ro
IDogZGF0YS5sZW5ndGgoKSAtIHNyY09mZnNldCkgLyAoMyozKSk7CisgICAgYXV0byByZXN1bHQg
PSB2YWxpZGF0ZVVuaWZvcm1NYXRyaXhQYXJhbWV0ZXJzKCJ1bmlmb3JtTWF0cml4M2Z2IiwgbG9j
YXRpb24sIHRyYW5zcG9zZSwgZGF0YSwgMyozLCBzcmNPZmZzZXQsIHNyY0xlbmd0aCk7CisgICAg
aWYgKCFyZXN1bHQpCisgICAgICAgIHJldHVybjsKKyAgICBtX2NvbnRleHQtPnVuaWZvcm1NYXRy
aXgzZnYobG9jYXRpb24tPmxvY2F0aW9uKCksIHRyYW5zcG9zZSwgcmVzdWx0LnZhbHVlKCkpOwog
fQogCiB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm1NYXRyaXg0ZnYoV2ViR0xV
bmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEZsb2F0MzJM
aXN0IGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQogewotICAg
IGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlVW5pZm9ybU1hdHJpeFBh
cmFtZXRlcnMoInVuaWZvcm1NYXRyaXg0ZnYiLCBsb2NhdGlvbiwgdHJhbnNwb3NlLCBkYXRhLCA0
KjQsIHNyY09mZnNldCwgc3JjTGVuZ3RoKSkKKyAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGlu
ZygpKQorICAgICAgICByZXR1cm47CisgICAgYXV0byByZXN1bHQgPSB2YWxpZGF0ZVVuaWZvcm1N
YXRyaXhQYXJhbWV0ZXJzKCJ1bmlmb3JtTWF0cml4NGZ2IiwgbG9jYXRpb24sIHRyYW5zcG9zZSwg
ZGF0YSwgNCo0LCBzcmNPZmZzZXQsIHNyY0xlbmd0aCk7CisgICAgaWYgKCFyZXN1bHQpCiAgICAg
ICAgIHJldHVybjsKLSAgICBtX2NvbnRleHQtPnVuaWZvcm1NYXRyaXg0ZnYobG9jYXRpb24tPmxv
Y2F0aW9uKCksIHRyYW5zcG9zZSwgZGF0YS5kYXRhKCksIHNyY09mZnNldCwgKHNyY0xlbmd0aCA/
IHNyY0xlbmd0aCA6IGRhdGEubGVuZ3RoKCkgLSBzcmNPZmZzZXQpIC8gKDQqNCkpOworICAgIG1f
Y29udGV4dC0+dW5pZm9ybU1hdHJpeDRmdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgdHJhbnNwb3Nl
LCByZXN1bHQudmFsdWUoKSk7CiB9CiAKIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6cmVh
ZFBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkg
aGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEFycmF5QnVmZmVyVmlldyYg
cGl4ZWxzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVu
ZGVyaW5nQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVy
aW5nQ29udGV4dC5oCmluZGV4IGI4YjAzNmU0NDc2YTRmMTVkNGU1MDY3NThjNTc1OTM1ZTBhMDYy
NGYuLjVmNDdlNjFmMGE0NDQ0YTI4OGMxYjQ2MGZiNGUwZjczNjY3NDY2NzggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmgKQEAg
LTI5Miw3ICsyOTIsOCBAQCBwcml2YXRlOgogICAgIGJvb2wgdmFsaWRhdGVJbmRleEFycmF5Q29u
c2VydmF0aXZlKEdDR0xlbnVtIHR5cGUsIHVuc2lnbmVkJiBudW1FbGVtZW50c1JlcXVpcmVkKSBm
aW5hbDsKICAgICBib29sIHZhbGlkYXRlQmxlbmRFcXVhdGlvbihjb25zdCBjaGFyKiBmdW5jdGlv
bk5hbWUsIEdDR0xlbnVtIG1vZGUpIGZpbmFsOwogICAgIGJvb2wgdmFsaWRhdGVDYXBhYmlsaXR5
KGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgR0NHTGVudW0gY2FwKSBmaW5hbDsKLSAgICBib29s
IHZhbGlkYXRlQ2xlYXJCdWZmZXIoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBHQ0dMZW51bSBi
dWZmZXIsIHNpemVfdCwgR0NHTHVpbnQgc3JjT2Zmc2V0KTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBULCB0eXBlbmFtZSBUeXBlZEFycmF5VHlwZT4KKyAgICBPcHRpb25hbDxHQ0dMU3Bhbjxjb25z
dCBUPj4gdmFsaWRhdGVDbGVhckJ1ZmZlcihjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIEdDR0xl
bnVtIGJ1ZmZlciwgVHlwZWRMaXN0PFR5cGVkQXJyYXlUeXBlLCBUPiYgdmFsdWVzLCBHQ0dMdWlu
dCBzcmNPZmZzZXQpOwogICAgIGJvb2wgdmFsaWRhdGVGcmFtZWJ1ZmZlclRhcmdldChHQ0dMZW51
bSB0YXJnZXQpIGZpbmFsOwogICAgIFdlYkdMRnJhbWVidWZmZXIqIGdldEZyYW1lYnVmZmVyQmlu
ZGluZyhHQ0dMZW51bSB0YXJnZXQpIGZpbmFsOwogICAgIFdlYkdMRnJhbWVidWZmZXIqIGdldFJl
YWRGcmFtZWJ1ZmZlckJpbmRpbmcoKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMRHJhd0J1ZmZlcnMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xEcmF3QnVmZmVycy5jcHAKaW5kZXggNDk0MTU2ZTFlNjViNjAyOTE5MGRiN2Mx
YzAyNmFkZjgwM2RkYThkMi4uZTVjZWI0YmRkY2M0YzA1MWRiOGI5YWE5Y2UwMjA4MWJmMjIzMDUw
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xEcmF3QnVmZmVy
cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xEcmF3QnVmZmVycy5j
cHAKQEAgLTc0LDggKzc0LDggQEAgdm9pZCBXZWJHTERyYXdCdWZmZXJzOjpkcmF3QnVmZmVyc1dF
QkdMKGNvbnN0IFZlY3RvcjxHQ0dMZW51bT4mIGJ1ZmZlcnMpCiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KICAgICAgICAgLy8gQmVjYXVzZSB0aGUgYmFja2J1ZmZlciBpcyBzaW11bGF0
ZWQgb24gYWxsIGN1cnJlbnQgV2ViS2l0IHBvcnRzLCB3ZSBuZWVkIHRvIGNoYW5nZSBCQUNLIHRv
IENPTE9SX0FUVEFDSE1FTlQwLgotICAgICAgICBHQ0dMZW51bSB2YWx1ZSA9IChidWZzWzBdID09
IEdyYXBoaWNzQ29udGV4dEdMOjpCQUNLKSA/IEdyYXBoaWNzQ29udGV4dEdMOjpDT0xPUl9BVFRB
Q0hNRU5UMCA6IEdyYXBoaWNzQ29udGV4dEdMOjpOT05FOwotICAgICAgICBtX2NvbnRleHQtPmdy
YXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5kcmF3QnVmZmVyc0VYVCgxLCAmdmFs
dWUpOworICAgICAgICBHQ0dMZW51bSB2YWx1ZVsxXSB7IChidWZzWzBdID09IEdyYXBoaWNzQ29u
dGV4dEdMOjpCQUNLKSA/IEdyYXBoaWNzQ29udGV4dEdMOjpDT0xPUl9BVFRBQ0hNRU5UMCA6IEdy
YXBoaWNzQ29udGV4dEdMOjpOT05FIH07CisgICAgICAgIG1fY29udGV4dC0+Z3JhcGhpY3NDb250
ZXh0R0woKS0+Z2V0RXh0ZW5zaW9ucygpLmRyYXdCdWZmZXJzRVhUKHZhbHVlKTsKICAgICAgICAg
bV9jb250ZXh0LT5zZXRCYWNrRHJhd0J1ZmZlcihidWZzWzBdKTsKICAgICB9IGVsc2UgewogICAg
ICAgICBpZiAobiA+IG1fY29udGV4dC0+Z2V0TWF4RHJhd0J1ZmZlcnMoKSkgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEZyYW1lYnVmZmVyLmNwcAppbmRleCAzNjU4ZWU4
ZWFhZjdmMGRiYjg4NjNjZWQ1MDI0MjVmNGZiNGUyM2E1Li5iMTk4YjM2NmIxMWYxNWIxYjgwM2Jk
MDYzYzc2YzRmMmNkOGQxMTc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTEZyYW1lYnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTEZyYW1lYnVmZmVyLmNwcApAQCAtNzAyLDEzICs3MDIsMTAgQEAgdm9pZCBXZWJHTEZyYW1l
YnVmZmVyOjpkcmF3QnVmZmVyc0lmTmVjZXNzYXJ5KGJvb2wgZm9yY2UpCiAgICAgICAgICAgICB9
CiAgICAgICAgIH0KICAgICAgICAgaWYgKHJlc2V0KSB7Ci0gICAgICAgICAgICBpZiAoY29udGV4
dCgpLT5pc1dlYkdMMigpKSB7Ci0gICAgICAgICAgICAgICAgY29udGV4dCgpLT5ncmFwaGljc0Nv
bnRleHRHTCgpLT5kcmF3QnVmZmVycygKLSAgICAgICAgICAgICAgICAgICAgbV9maWx0ZXJlZERy
YXdCdWZmZXJzLnNpemUoKSwgbV9maWx0ZXJlZERyYXdCdWZmZXJzLmRhdGEoKSk7Ci0gICAgICAg
ICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGNvbnRleHQoKS0+Z3JhcGhpY3NDb250ZXh0
R0woKS0+Z2V0RXh0ZW5zaW9ucygpLmRyYXdCdWZmZXJzRVhUKAotICAgICAgICAgICAgICAgICAg
ICBtX2ZpbHRlcmVkRHJhd0J1ZmZlcnMuc2l6ZSgpLCBtX2ZpbHRlcmVkRHJhd0J1ZmZlcnMuZGF0
YSgpKTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChjb250ZXh0KCktPmlzV2ViR0wy
KCkpCisgICAgICAgICAgICAgICAgY29udGV4dCgpLT5ncmFwaGljc0NvbnRleHRHTCgpLT5kcmF3
QnVmZmVycyhtX2ZpbHRlcmVkRHJhd0J1ZmZlcnMpOworICAgICAgICAgICAgZWxzZQorICAgICAg
ICAgICAgICAgIGNvbnRleHQoKS0+Z3JhcGhpY3NDb250ZXh0R0woKS0+Z2V0RXh0ZW5zaW9ucygp
LmRyYXdCdWZmZXJzRVhUKG1fZmlsdGVyZWREcmF3QnVmZmVycyk7CiAgICAgICAgIH0KICAgICB9
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2UuY3BwCmluZGV4IDE4NWU4YzYyZTZmYmUzMWYzMTM4OGMwYzlmODBkODFj
ZWUyNGEzYjEuLmY4ZWU1MDU5MDU5MzY4ODYzMDNlMWE4YmVmNmQyY2U4NWEyYzI4ZmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2UuY3BwCkBAIC0xNjAzLDcgKzE2MDMsNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OmJ1ZmZlckRhdGEoR0NHTGVudW0gdGFyZ2V0LCBPcHRpb25hbDxCdWZmZXJEYXRh
UwogICAgICAgICB9CiAKICAgICAgICAgbV9jb250ZXh0LT5tb3ZlRXJyb3JzVG9TeW50aGV0aWNF
cnJvckxpc3QoKTsKLSAgICAgICAgbV9jb250ZXh0LT5idWZmZXJEYXRhKHRhcmdldCwgZGF0YS0+
Ynl0ZUxlbmd0aCgpLCBkYXRhLT5kYXRhKCksIHVzYWdlKTsKKyAgICAgICAgbV9jb250ZXh0LT5i
dWZmZXJEYXRhKHRhcmdldCwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+KGRhdGEtPmRhdGEoKSwg
ZGF0YS0+Ynl0ZUxlbmd0aCgpKSwgdXNhZ2UpOwogICAgICAgICBpZiAobV9jb250ZXh0LT5tb3Zl
RXJyb3JzVG9TeW50aGV0aWNFcnJvckxpc3QoKSkgewogICAgICAgICAgICAgLy8gVGhlIGJ1ZmZl
ckRhdGEgZnVuY3Rpb24gZmFpbGVkLiBUZWxsIHRoZSBidWZmZXIgaXQgZG9lc24ndCBoYXZlIHRo
ZSBkYXRhIGl0IHRoaW5rcyBpdCBkb2VzLgogICAgICAgICAgICAgYnVmZmVyLT5kaXNhc3NvY2lh
dGVCdWZmZXJEYXRhKCk7CkBAIC0xNjMwLDcgKzE2MzAsNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2U6OmJ1ZmZlclN1YkRhdGEoR0NHTGVudW0gdGFyZ2V0LCBsb25nIGxvbmcgb2Zm
c2V0LAogICAgICAgICB9CiAKICAgICAgICAgbV9jb250ZXh0LT5tb3ZlRXJyb3JzVG9TeW50aGV0
aWNFcnJvckxpc3QoKTsKLSAgICAgICAgbV9jb250ZXh0LT5idWZmZXJTdWJEYXRhKHRhcmdldCwg
c3RhdGljX2Nhc3Q8R0NHTGludHB0cj4ob2Zmc2V0KSwgZGF0YS0+Ynl0ZUxlbmd0aCgpLCBkYXRh
LT5kYXRhKCkpOworICAgICAgICBtX2NvbnRleHQtPmJ1ZmZlclN1YkRhdGEodGFyZ2V0LCBzdGF0
aWNfY2FzdDxHQ0dMaW50cHRyPihvZmZzZXQpLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4oZGF0
YS0+ZGF0YSgpLCBkYXRhLT5ieXRlTGVuZ3RoKCkpKTsKICAgICAgICAgaWYgKG1fY29udGV4dC0+
bW92ZUVycm9yc1RvU3ludGhldGljRXJyb3JMaXN0KCkpIHsKICAgICAgICAgICAgIC8vIFRoZSBi
dWZmZXJTdWJEYXRhIGZ1bmN0aW9uIGZhaWxlZC4gVGVsbCB0aGUgYnVmZmVyIGl0IGRvZXNuJ3Qg
aGF2ZSB0aGUgZGF0YSBpdCB0aGlua3MgaXQgZG9lcy4KICAgICAgICAgICAgIGJ1ZmZlci0+ZGlz
YXNzb2NpYXRlQnVmZmVyRGF0YSgpOwpAQCAtMTc1Niw4ICsxNzU2LDggQEAgdm9pZCBXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlOjpjb21wcmVzc2VkVGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQs
IEdDR0xpbnQgbGUKICNpZiBVU0UoQU5HTEUpCiAgICAgaWYgKCF2YWxpZGF0ZVRleHR1cmUyREJp
bmRpbmcoImNvbXByZXNzZWRUZXhJbWFnZTJEIiwgdGFyZ2V0KSkKICAgICAgICAgcmV0dXJuOwot
ICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmNvbXByZXNzZWRUZXhJbWFnZTJEUm9idXN0
QU5HTEUodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsCi0gICAg
ICAgIGJvcmRlciwgZGF0YS5ieXRlTGVuZ3RoKCksIGRhdGEuYnl0ZUxlbmd0aCgpLCBkYXRhLmJh
c2VBZGRyZXNzKCkpOworICAgIG1fY29udGV4dC0+Y29tcHJlc3NlZFRleEltYWdlMkQodGFyZ2V0
LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsCisgICAgICAgIGJvcmRlciwg
ZGF0YS5ieXRlTGVuZ3RoKCksIG1ha2VHQ0dMU3BhbihkYXRhLmJhc2VBZGRyZXNzKCksIGRhdGEu
Ynl0ZUxlbmd0aCgpKSk7CiAjZWxzZQogICAgIGlmICghdmFsaWRhdGVUZXhGdW5jTGV2ZWwoImNv
bXByZXNzZWRUZXhJbWFnZTJEIiwgdGFyZ2V0LCBsZXZlbCkpCiAgICAgICAgIHJldHVybjsKQEAg
LTE3ODIsNyArMTc4Miw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Y29tcHJl
c3NlZFRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxlCiAgICAgICAgIHJldHVy
bjsKICAgICBtX2NvbnRleHQtPm1vdmVFcnJvcnNUb1N5bnRoZXRpY0Vycm9yTGlzdCgpOwogICAg
IHN0YXRpY19jYXN0PEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKj4obV9jb250ZXh0LmdldCgpKS0+
Y29tcHJlc3NlZFRleEltYWdlMkQodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRo
LCBoZWlnaHQsCi0gICAgICAgIGJvcmRlciwgZGF0YS5ieXRlTGVuZ3RoKCksIGRhdGEuYmFzZUFk
ZHJlc3MoKSk7CisgICAgICAgIGJvcmRlciwgbWFrZUdDR0xTcGFuKGRhdGEuYmFzZUFkZHJlc3Mo
KSwgZGF0YS5ieXRlTGVuZ3RoKCkpKTsKICAgICBpZiAobV9jb250ZXh0LT5tb3ZlRXJyb3JzVG9T
eW50aGV0aWNFcnJvckxpc3QoKSkgewogICAgICAgICAvLyBUaGUgY29tcHJlc3NlZFRleEltYWdl
MkQgZnVuY3Rpb24gZmFpbGVkLiBUZWxsIHRoZSBXZWJHTFRleHR1cmUgaXQgZG9lc24ndCBoYXZl
IHRoZSBkYXRhIGZvciB0aGlzIGxldmVsLgogICAgICAgICB0ZXgtPm1hcmtJbnZhbGlkKHRhcmdl
dCwgbGV2ZWwpOwpAQCAtMTgwMSw3ICsxODAxLDcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlOjpjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQK
ICNpZiBVU0UoQU5HTEUpCiAgICAgaWYgKCF2YWxpZGF0ZVRleHR1cmUyREJpbmRpbmcoImNvbXBy
ZXNzZWRUZXhTdWJJbWFnZTJEIiwgdGFyZ2V0KSkKICAgICAgICAgcmV0dXJuOwotICAgIGdyYXBo
aWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5jb21wcmVzc2VkVGV4U3ViSW1hZ2UyRFJv
YnVzdEFOR0xFKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQs
IGZvcm1hdCwgZGF0YS5ieXRlTGVuZ3RoKCksIGRhdGEuYnl0ZUxlbmd0aCgpLCBkYXRhLmJhc2VB
ZGRyZXNzKCkpOworICAgIG1fY29udGV4dC0+Y29tcHJlc3NlZFRleFN1YkltYWdlMkQodGFyZ2V0
LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCBkYXRhLmJ5
dGVMZW5ndGgoKSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+KGRhdGEuYmFzZUFkZHJlc3MoKSwg
ZGF0YS5ieXRlTGVuZ3RoKCkpKTsKICNlbHNlCiAgICAgaWYgKCF2YWxpZGF0ZVRleEZ1bmNMZXZl
bCgiY29tcHJlc3NlZFRleFN1YkltYWdlMkQiLCB0YXJnZXQsIGxldmVsKSkKICAgICAgICAgcmV0
dXJuOwpAQCAtMTgyNCw3ICsxODI0LDcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
Ojpjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQKICAgICBp
ZiAoIXZhbGlkYXRlQ29tcHJlc3NlZFRleFN1YkRpbWVuc2lvbnMoImNvbXByZXNzZWRUZXhTdWJJ
bWFnZTJEIiwgdGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdodCwg
Zm9ybWF0LCB0ZXguZ2V0KCkpKQogICAgICAgICByZXR1cm47CiAKLSAgICBzdGF0aWNfY2FzdDxH
cmFwaGljc0NvbnRleHRHTE9wZW5HTCo+KGdyYXBoaWNzQ29udGV4dEdMKCkpLT5jb21wcmVzc2Vk
VGV4U3ViSW1hZ2UyRCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVp
Z2h0LCBmb3JtYXQsIGRhdGEuYnl0ZUxlbmd0aCgpLCBkYXRhLmJhc2VBZGRyZXNzKCkpOworICAg
IHN0YXRpY19jYXN0PEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKj4oZ3JhcGhpY3NDb250ZXh0R0wo
KSktPmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZz
ZXQsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgbWFrZUdDR0xTcGFuKGRhdGEuYmFzZUFkZHJlc3Mo
KSwgZGF0YS5ieXRlTGVuZ3RoKCkpOwogICAgIHRleC0+c2V0Q29tcHJlc3NlZCgpOwogI2VuZGlm
CiB9CkBAIC0xOTAwLDggKzE5MDAsOCBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6
OmNvcHlUZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbAogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIFVuaXF1ZUFycmF5PHVuc2lnbmVkIGNo
YXI+IHplcm87CisgICAgICAgIHVuc2lnbmVkIHNpemUgPSAwOwogICAgICAgICBpZiAod2lkdGgg
JiYgaGVpZ2h0KSB7Ci0gICAgICAgICAgICB1bnNpZ25lZCBzaXplOwogICAgICAgICAgICAgR0NH
TGVudW0gZXJyb3IgPSBtX2NvbnRleHQtPmNvbXB1dGVJbWFnZVNpemVJbkJ5dGVzKGZvcm1hdCwg
dHlwZSwgd2lkdGgsIGhlaWdodCwgMSwgZ2V0VW5wYWNrUGl4ZWxTdG9yZVBhcmFtcyhUZXhJbWFn
ZURpbWVuc2lvbjo6VGV4MkQpLCAmc2l6ZSwgbnVsbHB0ciwgbnVsbHB0cik7CiAgICAgICAgICAg
ICBpZiAoZXJyb3IgIT0gR3JhcGhpY3NDb250ZXh0R0w6Ok5PX0VSUk9SKSB7CiAgICAgICAgICAg
ICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoZXJyb3IsICJjb3B5VGV4U3ViSW1hZ2UyRCIsICJiYWQg
ZGltZW5zaW9ucyIpOwpAQCAtMTkxNCw3ICsxOTE0LDcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlOjpjb3B5VGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2
ZWwKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIG1lbXNldCh6ZXJvLmdldCgpLCAwLCBzaXpl
KTsKICAgICAgICAgfQotICAgICAgICBtX2NvbnRleHQtPnRleFN1YkltYWdlMkQodGFyZ2V0LCBs
ZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCB6ZXJv
LmdldCgpKTsKKyAgICAgICAgbV9jb250ZXh0LT50ZXhTdWJJbWFnZTJEKHRhcmdldCwgbGV2ZWws
IHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgbWFrZUdDR0xT
cGFuKHplcm8uZ2V0KCksIHNpemUpKTsKICAgICAgICAgaWYgKGNsaXBwZWRXaWR0aCA+IDAgJiYg
Y2xpcHBlZEhlaWdodCA+IDApCiAgICAgICAgICAgICBtX2NvbnRleHQtPmNvcHlUZXhTdWJJbWFn
ZTJEKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQgKyBjbGlwcGVkWCAtIHgsIHlvZmZzZXQgKyBjbGlw
cGVkWSAtIHksIGNsaXBwZWRYLCBjbGlwcGVkWSwgY2xpcHBlZFdpZHRoLCBjbGlwcGVkSGVpZ2h0
KTsKICAgICB9IGVsc2UKQEAgLTQ3MDcsMTQgKzQ3MDcsMTQgQEAgRXhjZXB0aW9uT3I8dm9pZD4g
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dGV4SW1hZ2VTb3VyY2VIZWxwZXIoVGV4SW1hZ2VG
dW5jdGkKICNpZiBVU0UoQU5HTEUpCiAgICAgICAgICAgICAvLyAzRCBmdW5jdGlvbnMuCiAgICAg
ICAgICAgICBpZiAoZnVuY3Rpb25JRCA9PSBUZXhJbWFnZUZ1bmN0aW9uSUQ6OlRleEltYWdlM0Qp
IHsKLSAgICAgICAgICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS50ZXhJbWFnZTNE
Um9idXN0QU5HTEUodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsCisgICAgICAgICAgICAg
ICAgbV9jb250ZXh0LT50ZXhJbWFnZTNEKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LAog
ICAgICAgICAgICAgICAgICAgICBhZGp1c3RlZFNvdXJjZUltYWdlUmVjdC53aWR0aCgpLCBhZGp1
c3RlZFNvdXJjZUltYWdlUmVjdC5oZWlnaHQoKSwgZGVwdGgsIDAsCi0gICAgICAgICAgICAgICAg
ICAgIGZvcm1hdCwgdHlwZSwgYnl0ZUxlbmd0aCwgbmVlZENvbnZlcnNpb24gPyBkYXRhLmRhdGEo
KSA6IHBpeGVscy0+ZGF0YSgpLT5kYXRhKCkpOworICAgICAgICAgICAgICAgICAgICBmb3JtYXQs
IHR5cGUsIG1ha2VHQ0dMU3BhbihuZWVkQ29udmVyc2lvbiA/IGRhdGEuZGF0YSgpIDogcGl4ZWxz
LT5kYXRhKCktPmRhdGEoKSwgYnl0ZUxlbmd0aCkpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAg
ICAgICAgICAgICAgICBBU1NFUlQoZnVuY3Rpb25JRCA9PSBUZXhJbWFnZUZ1bmN0aW9uSUQ6OlRl
eFN1YkltYWdlM0QpOwotICAgICAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygp
LnRleFN1YkltYWdlM0RSb2J1c3RBTkdMRSh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0
LCB6b2Zmc2V0LAorICAgICAgICAgICAgICAgIG1fY29udGV4dC0+dGV4U3ViSW1hZ2UzRCh0YXJn
ZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB6b2Zmc2V0LAogICAgICAgICAgICAgICAgICAg
ICBhZGp1c3RlZFNvdXJjZUltYWdlUmVjdC53aWR0aCgpLCBhZGp1c3RlZFNvdXJjZUltYWdlUmVj
dC5oZWlnaHQoKSwgZGVwdGgsCi0gICAgICAgICAgICAgICAgICAgIGZvcm1hdCwgdHlwZSwgYnl0
ZUxlbmd0aCwgbmVlZENvbnZlcnNpb24gPyBkYXRhLmRhdGEoKSA6IHBpeGVscy0+ZGF0YSgpLT5k
YXRhKCkpOworICAgICAgICAgICAgICAgICAgICBmb3JtYXQsIHR5cGUsIG1ha2VHQ0dMU3Bhbihu
ZWVkQ29udmVyc2lvbiA/IGRhdGEuZGF0YSgpIDogcGl4ZWxzLT5kYXRhKCktPmRhdGEoKSwgYnl0
ZUxlbmd0aCkpOwogICAgICAgICAgICAgfQogI2Vsc2UKICAgICAgICAgICAgIC8vIFdlYkdMIDIu
MCBpcyBvbmx5IHN1cHBvcnRlZCB3aXRoIHRoZSBBTkdMRSBiYWNrZW5kLgpAQCAtNDg5NCwxMSAr
NDg5NCwxMSBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnRleEltYWdlQXJyYXlC
dWZmZXJWaWV3SGVscGVyKFRleEltYWdlRnVuY3Rpb25JRAogICAgIH0KICNpZiBVU0UoQU5HTEUp
CiAgICAgaWYgKGZ1bmN0aW9uSUQgPT0gVGV4SW1hZ2VGdW5jdGlvbklEOjpUZXhJbWFnZTNEKSB7
Ci0gICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnRleEltYWdlM0RSb2J1c3RBTkdM
RSh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGJv
cmRlciwgZm9ybWF0LCB0eXBlLCBieXRlTGVuZ3RoLCBkYXRhKTsKKyAgICAgICAgbV9jb250ZXh0
LT50ZXhJbWFnZTNEKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0
LCBkZXB0aCwgYm9yZGVyLCBmb3JtYXQsIHR5cGUsIG1ha2VHQ0dMU3BhbihkYXRhLCBieXRlTGVu
Z3RoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgaWYgKGZ1bmN0aW9uSUQgPT0gVGV4
SW1hZ2VGdW5jdGlvbklEOjpUZXhTdWJJbWFnZTNEKSB7Ci0gICAgICAgIG1fY29udGV4dC0+Z2V0
RXh0ZW5zaW9ucygpLnRleFN1YkltYWdlM0RSb2J1c3RBTkdMRSh0YXJnZXQsIGxldmVsLCB4b2Zm
c2V0LCB5b2Zmc2V0LCB6b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgZm9ybWF0LCB0eXBl
LCBieXRlTGVuZ3RoLCBkYXRhKTsKKyAgICAgICAgbV9jb250ZXh0LT50ZXhTdWJJbWFnZTNEKHRh
cmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHpvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGRl
cHRoLCBmb3JtYXQsIHR5cGUsIG1ha2VHQ0dMU3BhbihkYXRhLCBieXRlTGVuZ3RoKSk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAjZW5kaWYgLy8gVVNFKEFOR0xFKQpAQCAtNDk3MywxNCArNDk3
MywxNCBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnRleEltYWdlSW1wbChUZXhJ
bWFnZUZ1bmN0aW9uSUQgZnVuY3Rpb25JRCwgR0NHTAogI2lmIFVTRShBTkdMRSkKICAgICAgICAg
Ly8gM0QgZnVuY3Rpb25zLgogICAgICAgICBpZiAoZnVuY3Rpb25JRCA9PSBUZXhJbWFnZUZ1bmN0
aW9uSUQ6OlRleEltYWdlM0QpIHsKLSAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9u
cygpLnRleEltYWdlM0RSb2J1c3RBTkdMRSh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwK
KyAgICAgICAgICAgIG1fY29udGV4dC0+dGV4SW1hZ2UzRCh0YXJnZXQsIGxldmVsLCBpbnRlcm5h
bGZvcm1hdCwKICAgICAgICAgICAgICAgICBhZGp1c3RlZFNvdXJjZUltYWdlUmVjdC53aWR0aCgp
LCBhZGp1c3RlZFNvdXJjZUltYWdlUmVjdC5oZWlnaHQoKSwgZGVwdGgsIDAsCi0gICAgICAgICAg
ICAgICAgZm9ybWF0LCB0eXBlLCBieXRlTGVuZ3RoLCBuZWVkQ29udmVyc2lvbiA/IGRhdGEuZGF0
YSgpIDogaW1hZ2VQaXhlbERhdGEpOworICAgICAgICAgICAgICAgIGZvcm1hdCwgdHlwZSwgbWFr
ZUdDR0xTcGFuKG5lZWRDb252ZXJzaW9uID8gZGF0YS5kYXRhKCkgOiBpbWFnZVBpeGVsRGF0YSwg
Ynl0ZUxlbmd0aCkpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgQVNTRVJUKGZ1bmN0
aW9uSUQgPT0gVGV4SW1hZ2VGdW5jdGlvbklEOjpUZXhTdWJJbWFnZTNEKTsKLSAgICAgICAgICAg
IG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnRleFN1YkltYWdlM0RSb2J1c3RBTkdMRSh0YXJn
ZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB6b2Zmc2V0LAorICAgICAgICAgICAgbV9jb250
ZXh0LT50ZXhTdWJJbWFnZTNEKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHpvZmZz
ZXQsCiAgICAgICAgICAgICAgICAgYWRqdXN0ZWRTb3VyY2VJbWFnZVJlY3Qud2lkdGgoKSwgYWRq
dXN0ZWRTb3VyY2VJbWFnZVJlY3QuaGVpZ2h0KCksIGRlcHRoLAotICAgICAgICAgICAgICAgIGZv
cm1hdCwgdHlwZSwgYnl0ZUxlbmd0aCwgbmVlZENvbnZlcnNpb24gPyBkYXRhLmRhdGEoKSA6IGlt
YWdlUGl4ZWxEYXRhKTsKKyAgICAgICAgICAgICAgICBmb3JtYXQsIHR5cGUsIG1ha2VHQ0dMU3Bh
bihuZWVkQ29udmVyc2lvbiA/IGRhdGEuZGF0YSgpIDogaW1hZ2VQaXhlbERhdGEsIGJ5dGVMZW5n
dGgpKTsKICAgICAgICAgfQogI2Vsc2UKICAgICAgICAgVU5VU0VEX1BBUkFNKHpvZmZzZXQpOwpA
QCAtNDk5Myw3ICs0OTkzLDcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp0ZXhJ
bWFnZUltcGwoVGV4SW1hZ2VGdW5jdGlvbklEIGZ1bmN0aW9uSUQsIEdDR0wKIHZvaWQgV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZTo6dGV4SW1hZ2UyREJhc2UoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
aW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbEZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dM
c2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0
eXBlLCBHQ0dMc2l6ZWkgYnl0ZUxlbmd0aCwgY29uc3Qgdm9pZCogcGl4ZWxzKQogewogI2lmIFVT
RShBTkdMRSkKLSAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS50ZXhJbWFnZTJEUm9idXN0
QU5HTEUodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxGb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGJvcmRl
ciwgZm9ybWF0LCB0eXBlLCBieXRlTGVuZ3RoLCBwaXhlbHMpOworICAgIG1fY29udGV4dC0+dGV4
SW1hZ2UyRCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbEZvcm1hdCwgd2lkdGgsIGhlaWdodCwgYm9y
ZGVyLCBmb3JtYXQsIHR5cGUsIG1ha2VHQ0dMU3BhbihwaXhlbHMsIGJ5dGVMZW5ndGgpKTsKICNl
bHNlCiAgICAgVU5VU0VEX1BBUkFNKGJ5dGVMZW5ndGgpOwogICAgIC8vIEZJWE1FOiBGb3Igbm93
IHdlIGlnbm9yZSBhbnkgZXJyb3JzIHJldHVybmVkLgpAQCAtNTAwNyw3ICs1MDA3LDcgQEAgdm9p
ZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp0ZXhJbWFnZTJEQmFzZShHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xpbnQgbGV2ZWwsIEcKICAgICB9IGVsc2UgewogICAgICAgICBBU1NFUlQodmFsaWRh
dGVTZXR0YWJsZVRleEludGVybmFsRm9ybWF0KCJ0ZXhJbWFnZTJEIiwgaW50ZXJuYWxGb3JtYXQp
KTsKICAgICAgICAgbV9jb250ZXh0LT5tb3ZlRXJyb3JzVG9TeW50aGV0aWNFcnJvckxpc3QoKTsK
LSAgICAgICAgbV9jb250ZXh0LT50ZXhJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIGludGVybmFsRm9y
bWF0LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIsIGZvcm1hdCwgdHlwZSwgcGl4ZWxzKTsKKyAgICAg
ICAgbV9jb250ZXh0LT50ZXhJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIGludGVybmFsRm9ybWF0LCB3
aWR0aCwgaGVpZ2h0LCBib3JkZXIsIGZvcm1hdCwgdHlwZSwgbWFrZUdDR0xTcGFuKHBpeGVscywg
Ynl0ZUxlbmd0aCkpOwogICAgICAgICBpZiAobV9jb250ZXh0LT5tb3ZlRXJyb3JzVG9TeW50aGV0
aWNFcnJvckxpc3QoKSkgewogICAgICAgICAgICAgLy8gVGhlIHRleEltYWdlMkQgZnVuY3Rpb24g
ZmFpbGVkLiBUZWxsIHRoZSBXZWJHTFRleHR1cmUgaXQgZG9lc24ndCBoYXZlIHRoZSBkYXRhIGZv
ciB0aGlzIGxldmVsLgogICAgICAgICAgICAgdGV4LT5tYXJrSW52YWxpZCh0YXJnZXQsIGxldmVs
KTsKQEAgLTUwMjMsNyArNTAyMyw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6
dGV4U3ViSW1hZ2UyREJhc2UoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsCiAgICAgQVNT
RVJUKCFpc0NvbnRleHRMb3N0KCkpOwogI2lmIFVTRShBTkdMRSkKICAgICBVTlVTRURfUEFSQU0o
aW50ZXJuYWxGb3JtYXQpOwotICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnRleFN1Yklt
YWdlMkRSb2J1c3RBTkdMRSh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwg
aGVpZ2h0LCBmb3JtYXQsIHR5cGUsIGJ5dGVMZW5ndGgsIHBpeGVscyk7CisgICAgbV9jb250ZXh0
LT50ZXhTdWJJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBo
ZWlnaHQsIGZvcm1hdCwgdHlwZSwgbWFrZUdDR0xTcGFuKHBpeGVscywgYnl0ZUxlbmd0aCkpOwog
I2Vsc2UKICAgICBVTlVTRURfUEFSQU0oYnl0ZUxlbmd0aCk7CiAgICAgQVNTRVJUKHZhbGlkYXRl
VGV4RnVuY1BhcmFtZXRlcnMoInRleFN1YkltYWdlMkQiLCBUZXhJbWFnZUZ1bmN0aW9uVHlwZTo6
VGV4U3ViSW1hZ2UsIFNvdXJjZUFycmF5QnVmZmVyVmlldywgdGFyZ2V0LCBsZXZlbCwgaW50ZXJu
YWxGb3JtYXQsIHdpZHRoLCBoZWlnaHQsIDEsIDAsIGZvcm1hdCwgdHlwZSkpOwpAQCAtNTA0MCw3
ICs1MDQwLDcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp0ZXhTdWJJbWFnZTJE
QmFzZShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwKICAgICBBU1NFUlQodGV4LT5nZXRI
ZWlnaHQodGFyZ2V0LCBsZXZlbCkgPj0gKHlvZmZzZXQgKyBoZWlnaHQpKTsKICAgICBpZiAoIWlz
V2ViR0wyKCkpCiAgICAgICAgIEFTU0VSVF9VTlVTRUQoaW50ZXJuYWxGb3JtYXQsIHRleC0+Z2V0
SW50ZXJuYWxGb3JtYXQodGFyZ2V0LCBsZXZlbCkgPT0gaW50ZXJuYWxGb3JtYXQpOwotICAgIG1f
Y29udGV4dC0+dGV4U3ViSW1hZ2UyRCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB3
aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIHBpeGVscyk7CisgICAgbV9jb250ZXh0LT50ZXhT
dWJJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQs
IGZvcm1hdCwgdHlwZSwgbWFrZUdDR0xTcGFuKHBpeGVscywgYnl0ZUxlbmd0aCkpOwogI2VuZGlm
CiB9CiAKQEAgLTU4MjYsMTAwICs1ODI2LDEyNSBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2U6OnVuaWZvcm00aShjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sCiAK
IHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybTFmdihjb25zdCBXZWJHTFVu
aWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEZsb2F0MzJMaXN0JiYgdikKIHsKLSAgICBpZiAoaXND
b250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKCJ1bmlm
b3JtMWZ2IiwgbG9jYXRpb24sIHYsIDEsIDAsIHYubGVuZ3RoKCkpKQorICAgIGlmIChpc0NvbnRl
eHRMb3N0T3JQZW5kaW5nKCkpCiAgICAgICAgIHJldHVybjsKLQotICAgIG1fY29udGV4dC0+dW5p
Zm9ybTFmdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgdi5sZW5ndGgoKSwgdi5kYXRhKCkpOworICAg
IGF1dG8gZGF0YSA9IHZhbGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMoInVuaWZvcm0xZnYiLCBsb2Nh
dGlvbiwgdiwgMSk7CisgICAgaWYgKCFkYXRhKQorICAgICAgICByZXR1cm47CisgICAgbV9jb250
ZXh0LT51bmlmb3JtMWZ2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCBkYXRhLnZhbHVlKCkpOwogfQog
CiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm0yZnYoY29uc3QgV2ViR0xV
bmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBGbG9hdDMyTGlzdCYmIHYpCiB7Ci0gICAgaWYgKGlz
Q29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycygidW5p
Zm9ybTJmdiIsIGxvY2F0aW9uLCB2LCAyLCAwLCB2Lmxlbmd0aCgpKSkKKyAgICBpZiAoaXNDb250
ZXh0TG9zdE9yUGVuZGluZygpKQogICAgICAgICByZXR1cm47Ci0KLSAgICBtX2NvbnRleHQtPnVu
aWZvcm0yZnYobG9jYXRpb24tPmxvY2F0aW9uKCksIHYubGVuZ3RoKCkgLyAyLCB2LmRhdGEoKSk7
CisgICAgYXV0byBkYXRhID0gdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycygidW5pZm9ybTJmdiIs
IGxvY2F0aW9uLCB2LCAyKTsKKyAgICBpZiAoIWRhdGEpCisgICAgICAgIHJldHVybjsKKyAgICBt
X2NvbnRleHQtPnVuaWZvcm0yZnYobG9jYXRpb24tPmxvY2F0aW9uKCksIGRhdGEudmFsdWUoKSk7
CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybTNmdihjb25zdCBX
ZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEZsb2F0MzJMaXN0JiYgdikKIHsKLSAgICBp
ZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJz
KCJ1bmlmb3JtM2Z2IiwgbG9jYXRpb24sIHYsIDMsIDAsIHYubGVuZ3RoKCkpKQorICAgIGlmIChp
c0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCiAgICAgICAgIHJldHVybjsKLQotICAgIG1fY29udGV4
dC0+dW5pZm9ybTNmdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgdi5sZW5ndGgoKSAvIDMsIHYuZGF0
YSgpKTsKKyAgICBhdXRvIGRhdGEgPSB2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKCJ1bmlmb3Jt
M2Z2IiwgbG9jYXRpb24sIHYsIDMpOworICAgIGlmICghZGF0YSkKKyAgICAgICAgcmV0dXJuOwor
ICAgIG1fY29udGV4dC0+dW5pZm9ybTNmdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgZGF0YS52YWx1
ZSgpKTsKIH0KIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtNGZ2KGNv
bnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgRmxvYXQzMkxpc3QmJiB2KQogewot
ICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlVW5pZm9ybVBhcmFt
ZXRlcnMoInVuaWZvcm00ZnYiLCBsb2NhdGlvbiwgdiwgNCwgMCwgdi5sZW5ndGgoKSkpCisgICAg
aWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSkKICAgICAgICAgcmV0dXJuOwotCi0gICAgbV9j
b250ZXh0LT51bmlmb3JtNGZ2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCB2Lmxlbmd0aCgpIC8gNCwg
di5kYXRhKCkpOworICAgIGF1dG8gZGF0YSA9IHZhbGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMoInVu
aWZvcm00ZnYiLCBsb2NhdGlvbiwgdiwgNCk7CisgICAgaWYgKCFkYXRhKQorICAgICAgICByZXR1
cm47CisgICAgbV9jb250ZXh0LT51bmlmb3JtNGZ2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCBkYXRh
LnZhbHVlKCkpOwogfQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm0x
aXYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBJbnQzMkxpc3QmJiB2KQog
ewotICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlVW5pZm9ybVBh
cmFtZXRlcnMoInVuaWZvcm0xaXYiLCBsb2NhdGlvbiwgdiwgMSwgMCwgdi5sZW5ndGgoKSkpCisg
ICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSkKKyAgICAgICAgcmV0dXJuOworICAgIGF1
dG8gcmVzdWx0ID0gdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycygidW5pZm9ybTFpdiIsIGxvY2F0
aW9uLCB2LCAxKTsKKyAgICBpZiAoIXJlc3VsdCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0
byBkYXRhID0gdi5kYXRhKCk7Ci0gICAgYXV0byBsZW5ndGggPSB2Lmxlbmd0aCgpOworICAgIGF1
dG8gZGF0YSA9IHJlc3VsdC52YWx1ZSgpOwogCiAgICAgaWYgKGxvY2F0aW9uLT50eXBlKCkgPT0g
R3JhcGhpY3NDb250ZXh0R0w6OlNBTVBMRVJfMkQgfHwgbG9jYXRpb24tPnR5cGUoKSA9PSBHcmFw
aGljc0NvbnRleHRHTDo6U0FNUExFUl9DVUJFKSB7Ci0gICAgICAgIGZvciAoYXV0byBpID0gMDsg
aSA8IGxlbmd0aDsgKytpKSB7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZGF0YS5i
dWZTaXplOyArK2kpIHsKICAgICAgICAgICAgIGlmIChkYXRhW2ldID49IHN0YXRpY19jYXN0PGlu
dD4obV90ZXh0dXJlVW5pdHMuc2l6ZSgpKSkgewotICAgICAgICAgICAgICAgIExPRyhXZWJHTCwg
IlRleHR1cmUgdW5pdCBzaXplPSV6dSwgdlslZF09JWQuIExvY2F0aW9uIHR5cGUgPSAlMDRYLiIs
IG1fdGV4dHVyZVVuaXRzLnNpemUoKSwgaSwgZGF0YVtpXSwgbG9jYXRpb24tPnR5cGUoKSk7Cisg
ICAgICAgICAgICAgICAgTE9HKFdlYkdMLCAiVGV4dHVyZSB1bml0IHNpemU9JXp1LCB2WyV6dV09
JWQuIExvY2F0aW9uIHR5cGUgPSAlMDRYLiIsIG1fdGV4dHVyZVVuaXRzLnNpemUoKSwgaSwgZGF0
YVtpXSwgbG9jYXRpb24tPnR5cGUoKSk7CiAgICAgICAgICAgICAgICAgc3ludGhlc2l6ZUdMRXJy
b3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfVkFMVUUsICJ1bmlmb3JtMWl2IiwgImludmFs
aWQgdGV4dHVyZSB1bml0Iik7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAg
fQogICAgICAgICB9CiAgICAgfQogCi0gICAgbV9jb250ZXh0LT51bmlmb3JtMWl2KGxvY2F0aW9u
LT5sb2NhdGlvbigpLCBsZW5ndGgsIGRhdGEpOworICAgIG1fY29udGV4dC0+dW5pZm9ybTFpdihs
b2NhdGlvbi0+bG9jYXRpb24oKSwgZGF0YSk7CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZTo6dW5pZm9ybTJpdihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24s
IEludDMyTGlzdCYmIHYpCiB7Ci0gICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAh
dmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycygidW5pZm9ybTJpdiIsIGxvY2F0aW9uLCB2LCAyLCAw
LCB2Lmxlbmd0aCgpKSkKKyAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpKQogICAgICAg
ICByZXR1cm47Ci0KLSAgICBtX2NvbnRleHQtPnVuaWZvcm0yaXYobG9jYXRpb24tPmxvY2F0aW9u
KCksIHYubGVuZ3RoKCkgLyAyLCB2LmRhdGEoKSk7CisgICAgYXV0byBkYXRhID0gdmFsaWRhdGVV
bmlmb3JtUGFyYW1ldGVycygidW5pZm9ybTJpdiIsIGxvY2F0aW9uLCB2LCAyKTsKKyAgICBpZiAo
IWRhdGEpCisgICAgICAgIHJldHVybjsKKyAgICBtX2NvbnRleHQtPnVuaWZvcm0yaXYobG9jYXRp
b24tPmxvY2F0aW9uKCksIGRhdGEudmFsdWUoKSk7CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6dW5pZm9ybTNpdihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRp
b24sIEludDMyTGlzdCYmIHYpCiB7Ci0gICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8
fCAhdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycygidW5pZm9ybTNpdiIsIGxvY2F0aW9uLCB2LCAz
LCAwLCB2Lmxlbmd0aCgpKSkKKyAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpKQogICAg
ICAgICByZXR1cm47Ci0KLSAgICBtX2NvbnRleHQtPnVuaWZvcm0zaXYobG9jYXRpb24tPmxvY2F0
aW9uKCksIHYubGVuZ3RoKCkgLyAzLCB2LmRhdGEoKSk7CisgICAgYXV0byBkYXRhID0gdmFsaWRh
dGVVbmlmb3JtUGFyYW1ldGVycygidW5pZm9ybTNpdiIsIGxvY2F0aW9uLCB2LCAzKTsKKyAgICBp
ZiAoIWRhdGEpCisgICAgICAgIHJldHVybjsKKyAgICBtX2NvbnRleHQtPnVuaWZvcm0zaXYobG9j
YXRpb24tPmxvY2F0aW9uKCksIGRhdGEudmFsdWUoKSk7CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6dW5pZm9ybTRpdihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9j
YXRpb24sIEludDMyTGlzdCYmIHYpCiB7Ci0gICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmco
KSB8fCAhdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycygidW5pZm9ybTRpdiIsIGxvY2F0aW9uLCB2
LCA0LCAwLCB2Lmxlbmd0aCgpKSkKKyAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpKQog
ICAgICAgICByZXR1cm47Ci0KLSAgICBtX2NvbnRleHQtPnVuaWZvcm00aXYobG9jYXRpb24tPmxv
Y2F0aW9uKCksIHYubGVuZ3RoKCkgLyA0LCB2LmRhdGEoKSk7CisgICAgYXV0byBkYXRhID0gdmFs
aWRhdGVVbmlmb3JtUGFyYW1ldGVycygidW5pZm9ybTRpdiIsIGxvY2F0aW9uLCB2LCA0KTsKKyAg
ICBpZiAoIWRhdGEpCisgICAgICAgIHJldHVybjsKKyAgICBtX2NvbnRleHQtPnVuaWZvcm00aXYo
bG9jYXRpb24tPmxvY2F0aW9uKCksIGRhdGEudmFsdWUoKSk7CiB9CiAKIHZvaWQgV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybU1hdHJpeDJmdihjb25zdCBXZWJHTFVuaWZvcm1Mb2Nh
dGlvbiogbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgRmxvYXQzMkxpc3QmJiB2KQog
ewotICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlVW5pZm9ybU1h
dHJpeFBhcmFtZXRlcnMoInVuaWZvcm1NYXRyaXgyZnYiLCBsb2NhdGlvbiwgdHJhbnNwb3NlLCB2
LCA0LCAwLCB2Lmxlbmd0aCgpKSkKKyAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpKQor
ICAgICAgICByZXR1cm47CisgICAgYXV0byBkYXRhID0gdmFsaWRhdGVVbmlmb3JtTWF0cml4UGFy
YW1ldGVycygidW5pZm9ybU1hdHJpeDJmdiIsIGxvY2F0aW9uLCB0cmFuc3Bvc2UsIHYsIDQpOwor
ICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuOwotICAgIG1fY29udGV4dC0+dW5pZm9ybU1h
dHJpeDJmdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgdi5sZW5ndGgoKSAvIDQsIHRyYW5zcG9zZSwg
di5kYXRhKCkpOworICAgIG1fY29udGV4dC0+dW5pZm9ybU1hdHJpeDJmdihsb2NhdGlvbi0+bG9j
YXRpb24oKSwgdHJhbnNwb3NlLCBkYXRhLnZhbHVlKCkpOwogfQogCiB2b2lkIFdlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2U6OnVuaWZvcm1NYXRyaXgzZnYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRp
b24qIGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEZsb2F0MzJMaXN0JiYgdikKIHsK
LSAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVVuaWZvcm1NYXRy
aXhQYXJhbWV0ZXJzKCJ1bmlmb3JtTWF0cml4M2Z2IiwgbG9jYXRpb24sIHRyYW5zcG9zZSwgdiwg
OSwgMCwgdi5sZW5ndGgoKSkpCisgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSkKKyAg
ICAgICAgcmV0dXJuOworICAgIGF1dG8gZGF0YSA9IHZhbGlkYXRlVW5pZm9ybU1hdHJpeFBhcmFt
ZXRlcnMoInVuaWZvcm1NYXRyaXgzZnYiLCBsb2NhdGlvbiwgdHJhbnNwb3NlLCB2LCA5KTsKKyAg
ICBpZiAoIWRhdGEpCiAgICAgICAgIHJldHVybjsKLSAgICBtX2NvbnRleHQtPnVuaWZvcm1NYXRy
aXgzZnYobG9jYXRpb24tPmxvY2F0aW9uKCksIHYubGVuZ3RoKCkgLyA5LCB0cmFuc3Bvc2UsIHYu
ZGF0YSgpKTsKKyAgICBtX2NvbnRleHQtPnVuaWZvcm1NYXRyaXgzZnYobG9jYXRpb24tPmxvY2F0
aW9uKCksIHRyYW5zcG9zZSwgZGF0YS52YWx1ZSgpKTsKIH0KIAogdm9pZCBXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlOjp1bmlmb3JtTWF0cml4NGZ2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9u
KiBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBGbG9hdDMyTGlzdCYmIHYpCiB7Ci0g
ICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVVbmlmb3JtTWF0cml4
UGFyYW1ldGVycygidW5pZm9ybU1hdHJpeDRmdiIsIGxvY2F0aW9uLCB0cmFuc3Bvc2UsIHYsIDE2
LCAwLCB2Lmxlbmd0aCgpKSkKKyAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpKQorICAg
ICAgICByZXR1cm47CisgICAgYXV0byBkYXRhID0gdmFsaWRhdGVVbmlmb3JtTWF0cml4UGFyYW1l
dGVycygidW5pZm9ybU1hdHJpeDRmdiIsIGxvY2F0aW9uLCB0cmFuc3Bvc2UsIHYsIDE2KTsKKyAg
ICBpZiAoIWRhdGEpCiAgICAgICAgIHJldHVybjsKLSAgICBtX2NvbnRleHQtPnVuaWZvcm1NYXRy
aXg0ZnYobG9jYXRpb24tPmxvY2F0aW9uKCksIHYubGVuZ3RoKCkgLyAxNiwgdHJhbnNwb3NlLCB2
LmRhdGEoKSk7CisgICAgbV9jb250ZXh0LT51bmlmb3JtTWF0cml4NGZ2KGxvY2F0aW9uLT5sb2Nh
dGlvbigpLCB0cmFuc3Bvc2UsIGRhdGEudmFsdWUoKSk7CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6dXNlUHJvZ3JhbShXZWJHTFByb2dyYW0qIHByb2dyYW0pCkBAIC03MDQ3
LDYyICs3MDcyLDQ4IEBAIGJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmFsaWRhdGVD
YXBhYmlsaXR5KGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgR0NHCiAgICAgfQogfQogCi1ib29s
IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMoY29u
c3QgY2hhciogZnVuY3Rpb25OYW1lLCBjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRp
b24sIGNvbnN0IEZsb2F0MzJMaXN0JiB2LCBHQ0dMc2l6ZWkgcmVxdWlyZWRNaW5TaXplLCBHQ0dM
dWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKLXsKLSAgICByZXR1cm4gdmFsaWRh
dGVVbmlmb3JtTWF0cml4UGFyYW1ldGVycyhmdW5jdGlvbk5hbWUsIGxvY2F0aW9uLCBmYWxzZSwg
di5kYXRhKCksIHYubGVuZ3RoKCksIHJlcXVpcmVkTWluU2l6ZSwgc3JjT2Zmc2V0LCBzcmNMZW5n
dGgpOwotfQotCi1ib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlVW5pZm9y
bVBhcmFtZXRlcnMoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBjb25zdCBXZWJHTFVuaWZvcm1M
b2NhdGlvbiogbG9jYXRpb24sIGNvbnN0IEludDMyTGlzdCYgdiwgR0NHTHNpemVpIHJlcXVpcmVk
TWluU2l6ZSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCi17Ci0gICAg
cmV0dXJuIHZhbGlkYXRlVW5pZm9ybU1hdHJpeFBhcmFtZXRlcnMoZnVuY3Rpb25OYW1lLCBsb2Nh
dGlvbiwgZmFsc2UsIHYuZGF0YSgpLCB2Lmxlbmd0aCgpLCByZXF1aXJlZE1pblNpemUsIHNyY09m
ZnNldCwgc3JjTGVuZ3RoKTsKLX0KIAotYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2
YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgY29uc3Qg
V2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBjb25zdCBVaW50MzJMaXN0JiB2LCBHQ0dM
c2l6ZWkgcmVxdWlyZWRNaW5TaXplLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xl
bmd0aCkKLXsKLSAgICByZXR1cm4gdmFsaWRhdGVVbmlmb3JtTWF0cml4UGFyYW1ldGVycyhmdW5j
dGlvbk5hbWUsIGxvY2F0aW9uLCBmYWxzZSwgdi5kYXRhKCksIHYubGVuZ3RoKCksIHJlcXVpcmVk
TWluU2l6ZSwgc3JjT2Zmc2V0LCBzcmNMZW5ndGgpOwotfQotCi1ib29sIFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2U6OnZhbGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMoY29uc3QgY2hhciogZnVuY3Rp
b25OYW1lLCBjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIHZvaWQqIHYsIEdD
R0xzaXplaSBzaXplLCBHQ0dMc2l6ZWkgcmVxdWlyZWRNaW5TaXplLCBHQ0dMdWludCBzcmNPZmZz
ZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKLXsKLSAgICByZXR1cm4gdmFsaWRhdGVVbmlmb3JtTWF0
cml4UGFyYW1ldGVycyhmdW5jdGlvbk5hbWUsIGxvY2F0aW9uLCBmYWxzZSwgdiwgc2l6ZSwgcmVx
dWlyZWRNaW5TaXplLCBzcmNPZmZzZXQsIHNyY0xlbmd0aCk7Ci19Ci0KLWJvb2wgV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZTo6dmFsaWRhdGVVbmlmb3JtTWF0cml4UGFyYW1ldGVycyhjb25zdCBj
aGFyKiBmdW5jdGlvbk5hbWUsIGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwg
R0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBGbG9hdDMyTGlzdCYgdiwgR0NHTHNpemVpIHJl
cXVpcmVkTWluU2l6ZSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCi17
Ci0gICAgcmV0dXJuIHZhbGlkYXRlVW5pZm9ybU1hdHJpeFBhcmFtZXRlcnMoZnVuY3Rpb25OYW1l
LCBsb2NhdGlvbiwgdHJhbnNwb3NlLCB2LmRhdGEoKSwgdi5sZW5ndGgoKSwgcmVxdWlyZWRNaW5T
aXplLCBzcmNPZmZzZXQsIHNyY0xlbmd0aCk7Ci19Ci0KLWJvb2wgV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZTo6dmFsaWRhdGVVbmlmb3JtTWF0cml4UGFyYW1ldGVycyhjb25zdCBjaGFyKiBmdW5j
dGlvbk5hbWUsIGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgR0NHTGJvb2xl
YW4gdHJhbnNwb3NlLCBjb25zdCB2b2lkKiB2LCBHQ0dMc2l6ZWkgc2l6ZSwgR0NHTHNpemVpIHJl
cXVpcmVkTWluU2l6ZSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCit0
ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBUeXBlZExpc3RUeXBlPgorT3B0aW9uYWw8R0NH
TFNwYW48Y29uc3QgVD4+IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlVW5pZm9y
bU1hdHJpeFBhcmFtZXRlcnMoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBjb25zdCBXZWJHTFVu
aWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgVHlw
ZWRMaXN0PFR5cGVkTGlzdFR5cGUsIFQ+JiB2YWx1ZXMsIEdDR0xzaXplaSByZXF1aXJlZE1pblNp
emUsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQogewogICAgIGlmICgh
dmFsaWRhdGVVbmlmb3JtTG9jYXRpb24oZnVuY3Rpb25OYW1lLCBsb2NhdGlvbikpCi0gICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICBpZiAoIXYpIHsKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICBp
ZiAoIXZhbHVlcy5kYXRhKCkpIHsKICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3ND
b250ZXh0R0w6OklOVkFMSURfVkFMVUUsIGZ1bmN0aW9uTmFtZSwgIm5vIGFycmF5Iik7Ci0gICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9CiAgICAgaWYgKHRy
YW5zcG9zZSAmJiAhaXNXZWJHTDIoKSkgewogICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFw
aGljc0NvbnRleHRHTDo6SU5WQUxJRF9WQUxVRSwgZnVuY3Rpb25OYW1lLCAidHJhbnNwb3NlIG5v
dCBGQUxTRSIpOwotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiB7IH07CiAg
ICAgfQotICAgIGlmIChzcmNPZmZzZXQgPj0gc3RhdGljX2Nhc3Q8R0NHTHVpbnQ+KHNpemUpKSB7
CisgICAgaWYgKHNyY09mZnNldCA+PSBzdGF0aWNfY2FzdDxHQ0dMdWludD4odmFsdWVzLmxlbmd0
aCgpKSkgewogICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5W
QUxJRF9WQUxVRSwgZnVuY3Rpb25OYW1lLCAiaW52YWxpZCBzcmNPZmZzZXQiKTsKLSAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4geyB9OwogICAgIH0KLSAgICBHQ0dMc2l6ZWkg
YWN0dWFsU2l6ZSA9IHNpemUgLSBzcmNPZmZzZXQ7CisgICAgR0NHTHNpemVpIGFjdHVhbFNpemUg
PSB2YWx1ZXMubGVuZ3RoKCkgLSBzcmNPZmZzZXQ7CiAgICAgaWYgKHNyY0xlbmd0aCA+IDApIHsK
ICAgICAgICAgaWYgKHNyY0xlbmd0aCA+IHN0YXRpY19jYXN0PEdDR0x1aW50PihhY3R1YWxTaXpl
KSkgewogICAgICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklO
VkFMSURfVkFMVUUsIGZ1bmN0aW9uTmFtZSwgImludmFsaWQgc3JjT2Zmc2V0ICsgc3JjTGVuZ3Ro
Iik7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICByZXR1cm4geyB9Owog
ICAgICAgICB9CiAgICAgICAgIGFjdHVhbFNpemUgPSBzcmNMZW5ndGg7CiAgICAgfQogICAgIGlm
IChhY3R1YWxTaXplIDwgcmVxdWlyZWRNaW5TaXplIHx8IChhY3R1YWxTaXplICUgcmVxdWlyZWRN
aW5TaXplKSkgewogICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6
SU5WQUxJRF9WQUxVRSwgZnVuY3Rpb25OYW1lLCAiaW52YWxpZCBzaXplIik7Ci0gICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9Ci0gICAgcmV0dXJuIHRydWU7
CisgICAgcmV0dXJuIG1ha2VHQ0dMU3Bhbih2YWx1ZXMuZGF0YSgpICsgc3JjT2Zmc2V0LCBhY3R1
YWxTaXplKTsKIH0KIAordGVtcGxhdGUKK09wdGlvbmFsPEdDR0xTcGFuPGNvbnN0IEdDR0x1aW50
Pj4gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmFsaWRhdGVVbmlmb3JtTWF0cml4UGFyYW1l
dGVyczxHQ0dMdWludCwgVWludDMyQXJyYXk+KGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgY29u
c3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IFR5
cGVkTGlzdDxVaW50MzJBcnJheSwgdWludDMyX3Q+JiB2YWx1ZXMsIEdDR0xzaXplaSByZXF1aXJl
ZE1pblNpemUsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKTsKKwordGVt
cGxhdGUKK09wdGlvbmFsPEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+PiBXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlOjp2YWxpZGF0ZVVuaWZvcm1NYXRyaXhQYXJhbWV0ZXJzPEdDR0xpbnQsIEludDMy
QXJyYXk+KGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRp
b24qLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IFR5cGVkTGlzdDxJbnQzMkFycmF5LCBp
bnQzMl90PiYgdmFsdWVzLCBHQ0dMc2l6ZWkgcmVxdWlyZWRNaW5TaXplLCBHQ0dMdWludCBzcmNP
ZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCk7CisKK3RlbXBsYXRlCitPcHRpb25hbDxHQ0dMU3Bh
bjxjb25zdCBHQ0dMZmxvYXQ+PiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZVVu
aWZvcm1NYXRyaXhQYXJhbWV0ZXJzPEdDR0xmbG9hdCwgRmxvYXQzMkFycmF5Pihjb25zdCBjaGFy
KiBmdW5jdGlvbk5hbWUsIGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiwgR0NHTGJvb2xlYW4g
dHJhbnNwb3NlLCBjb25zdCBUeXBlZExpc3Q8RmxvYXQzMkFycmF5LCBmbG9hdD4mIHZhbHVlcywg
R0NHTHNpemVpIHJlcXVpcmVkTWluU2l6ZSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBz
cmNMZW5ndGgpOworCiBXZWJHTEJ1ZmZlciogV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmFs
aWRhdGVCdWZmZXJEYXRhUGFyYW1ldGVycyhjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIEdDR0xl
bnVtIHRhcmdldCwgR0NHTGVudW0gdXNhZ2UpCiB7CiAgICAgV2ViR0xCdWZmZXIqIGJ1ZmZlciA9
IHZhbGlkYXRlQnVmZmVyRGF0YVRhcmdldChmdW5jdGlvbk5hbWUsIHRhcmdldCk7CkBAIC03MjQ2
LDE2ICs3MjU3LDE2IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmVydGV4QXR0
cmliZnZJbXBsKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgR0NHCiAgICAgewogICAgICAgICBz
d2l0Y2ggKGV4cGVjdGVkU2l6ZSkgewogICAgICAgICBjYXNlIDE6Ci0gICAgICAgICAgICBtX2Nv
bnRleHQtPnZlcnRleEF0dHJpYjFmdihpbmRleCwgZGF0YSk7CisgICAgICAgICAgICBtX2NvbnRl
eHQtPnZlcnRleEF0dHJpYjFmdihpbmRleCwgbWFrZUdDR0xTcGFuPDE+KGRhdGEpKTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIDI6Ci0gICAgICAgICAgICBtX2NvbnRleHQtPnZl
cnRleEF0dHJpYjJmdihpbmRleCwgZGF0YSk7CisgICAgICAgICAgICBtX2NvbnRleHQtPnZlcnRl
eEF0dHJpYjJmdihpbmRleCwgbWFrZUdDR0xTcGFuPDI+KGRhdGEpKTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICBjYXNlIDM6Ci0gICAgICAgICAgICBtX2NvbnRleHQtPnZlcnRleEF0dHJp
YjNmdihpbmRleCwgZGF0YSk7CisgICAgICAgICAgICBtX2NvbnRleHQtPnZlcnRleEF0dHJpYjNm
dihpbmRleCwgbWFrZUdDR0xTcGFuPDM+KGRhdGEpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICBjYXNlIDQ6Ci0gICAgICAgICAgICBtX2NvbnRleHQtPnZlcnRleEF0dHJpYjRmdihpbmRl
eCwgZGF0YSk7CisgICAgICAgICAgICBtX2NvbnRleHQtPnZlcnRleEF0dHJpYjRmdihpbmRleCwg
bWFrZUdDR0xTcGFuPDQ+KGRhdGEpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAg
ICAgfQpAQCAtNzMzMCw3ICs3MzQxLDcgQEAgT3B0aW9uYWw8Ym9vbD4gV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6c2ltdWxhdGVWZXJ0ZXhBdHRyaWIwKEdDR0x1aW50IG51bVZlcnQKIAogICAg
IGlmIChidWZmZXJEYXRhU2l6ZSA+IG1fdmVydGV4QXR0cmliMEJ1ZmZlclNpemUpIHsKICAgICAg
ICAgbV9jb250ZXh0LT5tb3ZlRXJyb3JzVG9TeW50aGV0aWNFcnJvckxpc3QoKTsKLSAgICAgICAg
bV9jb250ZXh0LT5idWZmZXJEYXRhKEdyYXBoaWNzQ29udGV4dEdMOjpBUlJBWV9CVUZGRVIsIGJ1
ZmZlckRhdGFTaXplLCAwLCBHcmFwaGljc0NvbnRleHRHTDo6RFlOQU1JQ19EUkFXKTsKKyAgICAg
ICAgbV9jb250ZXh0LT5idWZmZXJEYXRhKEdyYXBoaWNzQ29udGV4dEdMOjpBUlJBWV9CVUZGRVIs
IGJ1ZmZlckRhdGFTaXplLCBHcmFwaGljc0NvbnRleHRHTDo6RFlOQU1JQ19EUkFXKTsKICAgICAg
ICAgaWYgKG1fY29udGV4dC0+Z2V0RXJyb3IoKSAhPSBHcmFwaGljc0NvbnRleHRHTDo6Tk9fRVJS
T1IpIHsKICAgICAgICAgICAgIC8vIFdlIHdlcmUgdW5hYmxlIHRvIGNyZWF0ZSBhIGJ1ZmZlci4K
ICAgICAgICAgICAgIG1fdmVydGV4QXR0cmliMFVzZWRCZWZvcmUgPSBmYWxzZTsKQEAgLTczNjUs
NyArNzM3Niw3IEBAIE9wdGlvbmFsPGJvb2w+IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnNp
bXVsYXRlVmVydGV4QXR0cmliMChHQ0dMdWludCBudW1WZXJ0CiAgICAgICAgIG1fdmVydGV4QXR0
cmliMEJ1ZmZlclZhbHVlWzJdID0gYXR0cmliVmFsdWUuZlZhbHVlWzJdOwogICAgICAgICBtX3Zl
cnRleEF0dHJpYjBCdWZmZXJWYWx1ZVszXSA9IGF0dHJpYlZhbHVlLmZWYWx1ZVszXTsKICAgICAg
ICAgbV9mb3JjZUF0dHJpYjBCdWZmZXJSZWZpbGwgPSBmYWxzZTsKLSAgICAgICAgbV9jb250ZXh0
LT5idWZmZXJTdWJEYXRhKEdyYXBoaWNzQ29udGV4dEdMOjpBUlJBWV9CVUZGRVIsIDAsIGJ1ZmZl
ckRhdGFTaXplLCBidWZmZXJEYXRhLmdldCgpKTsKKyAgICAgICAgbV9jb250ZXh0LT5idWZmZXJT
dWJEYXRhKEdyYXBoaWNzQ29udGV4dEdMOjpBUlJBWV9CVUZGRVIsIDAsIG1ha2VHQ0dMU3Bhbihi
dWZmZXJEYXRhLmdldCgpLCBidWZmZXJEYXRhU2l6ZSkpOwogICAgIH0KICAgICBtX2NvbnRleHQt
PnZlcnRleEF0dHJpYlBvaW50ZXIoMCwgNCwgR3JhcGhpY3NDb250ZXh0R0w6OkZMT0FULCAwLCAw
LCAwKTsKICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaAppbmRleCBhNzFkMDM2YWEwZGVhNTJi
NDU3OTA5ZmJmZmRjM2FkZjgwZjUxMGNjLi4wMDc4MjhmN2ZkNTczZWE1MDA1OTQwZWQ1NmU0Mzk3
NTE1NzQzZTc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oCkBAIC0xMDA1LDEyICsxMDA1LDEzIEBAIHByb3RlY3Rl
ZDoKIAogICAgIC8vIEhlbHBlciBmdW5jdGlvbiB0byB2YWxpZGF0ZSBpbnB1dCBwYXJhbWV0ZXJz
IGZvciB1bmlmb3JtIGZ1bmN0aW9ucy4KICAgICBib29sIHZhbGlkYXRlVW5pZm9ybUxvY2F0aW9u
KGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qKTsK
LSAgICBib29sIHZhbGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMoY29uc3QgY2hhciogZnVuY3Rpb25O
YW1lLCBjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiosIGNvbnN0IEZsb2F0MzJMaXN0JiwgR0NH
THNpemVpIHJlcXVpcmVkTWluU2l6ZSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNM
ZW5ndGgpOwotICAgIGJvb2wgdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycyhjb25zdCBjaGFyKiBm
dW5jdGlvbk5hbWUsIGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiwgY29uc3QgSW50MzJMaXN0
JiwgR0NHTHNpemVpIHJlcXVpcmVkTWluU2l6ZSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWlu
dCBzcmNMZW5ndGgpOwotICAgIGJvb2wgdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycyhjb25zdCBj
aGFyKiBmdW5jdGlvbk5hbWUsIGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiwgY29uc3QgVWlu
dDMyTGlzdCYsIEdDR0xzaXplaSByZXF1aXJlZE1pblNpemUsIEdDR0x1aW50IHNyY09mZnNldCwg
R0NHTHVpbnQgc3JjTGVuZ3RoKTsKLSAgICBib29sIHZhbGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMo
Y29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiosIHZv
aWQqLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSByZXF1aXJlZE1pblNpemUsIEdDR0x1aW50IHNyY09m
ZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKTsKLSAgICBib29sIHZhbGlkYXRlVW5pZm9ybU1hdHJp
eFBhcmFtZXRlcnMoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBjb25zdCBXZWJHTFVuaWZvcm1M
b2NhdGlvbiosIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgRmxvYXQzMkxpc3QmLCBHQ0dM
c2l6ZWkgcmVxdWlyZWRNaW5TaXplLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xl
bmd0aCk7Ci0gICAgYm9vbCB2YWxpZGF0ZVVuaWZvcm1NYXRyaXhQYXJhbWV0ZXJzKGNvbnN0IGNo
YXIqIGZ1bmN0aW9uTmFtZSwgY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qLCBHQ0dMYm9vbGVh
biB0cmFuc3Bvc2UsIGNvbnN0IHZvaWQqLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSByZXF1aXJlZE1p
blNpemUsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKTsKKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBUeXBlZExpc3RUeXBlPgorICAgIE9wdGlvbmFsPEdD
R0xTcGFuPGNvbnN0IFQ+PiB2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKGNvbnN0IGNoYXIqIGZ1
bmN0aW9uTmFtZSwgY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBjb25zdCBU
eXBlZExpc3Q8VHlwZWRMaXN0VHlwZSwgVD4mIHZhbHVlcywgR0NHTHNpemVpIHJlcXVpcmVkTWlu
U2l6ZSwgR0NHTHVpbnQgc3JjT2Zmc2V0ID0gMCwgR0NHTHVpbnQgc3JjTGVuZ3RoID0gMCkKKyAg
ICB7CisgICAgICAgIHJldHVybiB2YWxpZGF0ZVVuaWZvcm1NYXRyaXhQYXJhbWV0ZXJzKGZ1bmN0
aW9uTmFtZSwgbG9jYXRpb24sIGZhbHNlLCB2YWx1ZXMsIHJlcXVpcmVkTWluU2l6ZSwgc3JjT2Zm
c2V0LCBzcmNMZW5ndGgpOworICAgIH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFt
ZSBUeXBlZExpc3RUeXBlPgorICAgIE9wdGlvbmFsPEdDR0xTcGFuPGNvbnN0IFQ+PiB2YWxpZGF0
ZVVuaWZvcm1NYXRyaXhQYXJhbWV0ZXJzKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgY29uc3Qg
V2ViR0xVbmlmb3JtTG9jYXRpb24qLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IFR5cGVk
TGlzdDxUeXBlZExpc3RUeXBlLCBUPiYsIEdDR0xzaXplaSByZXF1aXJlZE1pblNpemUsIEdDR0x1
aW50IHNyY09mZnNldCA9IDAsIEdDR0x1aW50IHNyY0xlbmd0aCA9IDApOwogCiAgICAgLy8gSGVs
cGVyIGZ1bmN0aW9uIHRvIHZhbGlkYXRlIHBhcmFtZXRlcnMgZm9yIGJ1ZmZlckRhdGEuCiAgICAg
Ly8gUmV0dXJuIHRoZSBjdXJyZW50IGJvdW5kIGJ1ZmZlciB0byB0YXJnZXQsIG9yIDAgaWYgcGFy
YW1ldGVycyBhcmUgaW52YWxpZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0V4dGVuc2lvbnNHTC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvRXh0ZW5zaW9uc0dMLmgKaW5kZXggYmE4NjViMzMwOGU2Yzk0NTgyMjEyMjM3Nzk2ZDZmZDU3
NzQ4NDdmOC4uZDE3YmFkYjFlMzFkNmQ1NjQwYjg3Mjk2Y2U1OWQyODMzMjgzNWZiMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRXh0ZW5zaW9uc0dMLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRXh0ZW5zaW9uc0dMLmgKQEAgLTI5
OCw3ICsyOTgsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHBvcEdyb3VwTWFya2VyRVhU
KHZvaWQpID0gMDsKIAogICAgIC8vIEdMX0FSQl9kcmF3X2J1ZmZlcnMgLyBHTF9FWFRfZHJhd19i
dWZmZXJzCi0gICAgdmlydHVhbCB2b2lkIGRyYXdCdWZmZXJzRVhUKEdDR0xzaXplaSBuLCBjb25z
dCBHQ0dMZW51bSogYnVmcykgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkcmF3QnVmZmVyc0VYVChH
Q0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4gYnVmcykgPSAwOwogCiAgICAgLy8gR0xfQU5HTEVfaW5z
dGFuY2VkX2FycmF5cwogICAgIHZpcnR1YWwgdm9pZCBkcmF3QXJyYXlzSW5zdGFuY2VkKEdDR0xl
bnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xzaXplaSBjb3VudCwgR0NHTHNpemVpIHByaW1j
b3VudCkgPSAwOwpAQCAtMzA3LDE3ICszMDcsOSBAQCBwdWJsaWM6CiAKICAgICAvLyBHTF9BTkdM
RV9yb2J1c3RfY2xpZW50X21lbW9yeQogICAgIHZpcnR1YWwgdm9pZCByZWFkUGl4ZWxzUm9idXN0
QU5HTEUoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhl
aWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
R0NHTHNpemVpKiBsZW5ndGgsIEdDR0xzaXplaSogY29sdW1ucywgR0NHTHNpemVpKiByb3dzLCBH
Q0dMdm9pZCogcGl4ZWxzKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHRleEltYWdlMkRSb2J1c3RB
TkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgaW50ZXJuYWxmb3Jt
YXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdD
R0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdD
R0x2b2lkKiBwaXhlbHMpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdGV4UGFyYW1ldGVyZnZSb2J1
c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgY29uc3QgR0NHTGZsb2F0KiBwYXJhbXMpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdGV4UGFy
YW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGludCogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2
b2lkIHRleFN1YkltYWdlMkRSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2
ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdD
R0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIGNvbnN0IEdDR0x2b2lkKiBwaXhlbHMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQg
Y29tcHJlc3NlZFRleEltYWdlMkRSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQg
bGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXpl
aSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgY29uc3QgR0NHTHZvaWQqIGRhdGEpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgY29t
cHJlc3NlZFRleFN1YkltYWdlMkRSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQg
bGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgs
IEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTHNpemVpIGltYWdlU2l6ZSwg
R0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0x2b2lkKiBkYXRhKSA9IDA7Ci0gICAgdmlydHVh
bCB2b2lkIGNvbXByZXNzZWRUZXhJbWFnZTNEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBH
Q0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMc2l6
ZWkgaW1hZ2VTaXplLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTHZvaWQqIGRhdGEpID0g
MDsKLSAgICB2aXJ0dWFsIHZvaWQgY29tcHJlc3NlZFRleFN1YkltYWdlM0RSb2J1c3RBTkdMRShH
Q0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5
b2Zmc2V0LCBHQ0dMaW50IHpvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdo
dCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFnZVNpemUs
IEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMdm9pZCogZGF0YSkgPSAwOwotCi0gICAgdmly
dHVhbCB2b2lkIHRleEltYWdlM0RSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQg
bGV2ZWwsIEdDR0xpbnQgaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVp
IGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMaW50IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0
LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTHZvaWQqIHBpeGVs
cykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB0ZXhTdWJJbWFnZTNEUm9idXN0QU5HTEUoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNl
dCwgR0NHTGludCB6b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdD
R0xzaXplaSBkZXB0aCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgY29uc3QgR0NHTHZvaWQqIHBpeGVscykgPSAwOworCiAgICAgdmlydHVhbCB2b2lk
IGdldFF1ZXJ5aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBnZXRRdWVyeU9iamVjdHVpdlJvYnVzdEFOR0xFKEdDR0x1aW50
IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3Ro
LCBHQ0dMdWludCogcGFyYW1zKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGdldEJ1ZmZlclBvaW50
ZXJ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdm9pZCoqIHBhcmFtcykgPSAwOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0
R0wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdM
LmgKaW5kZXggMGE3MTU0MGNlODAyMGZkOWY1ODE2ODYwM2Y2NzY5Yjk0NDUyMjQxNS4uYzU4YmU4
YTk3ZDIzN2RhYjJjNjBkODZiMTkzODRhZTkyZmZiZWIzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5oCkBAIC0xMDYzLDQ5
ICsxMDYzLDU1IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgdGV4UGFyYW1ldGVyaShHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50IHBhcmFtKSA9IDA7CiAKICAgICB2
aXJ0dWFsIHZvaWQgdW5pZm9ybTFmKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xmbG9hdCB4KSA9IDA7
Ci0gICAgdmlydHVhbCB2b2lkIHVuaWZvcm0xZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVp
LCBjb25zdCBHQ0dMZmxvYXQqIHYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybTFmdihH
Q0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IHYpID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgdW5pZm9ybTFpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xpbnQgeCkgPSAwOwot
ICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtMWl2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSwg
Y29uc3QgR0NHTGludCogdikgPSAwOworICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtMWl2KEdDR0xp
bnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+IHYpID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgdW5pZm9ybTJmKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xmbG9hdCB4LCBHQ0dMZmxvYXQg
eSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtMmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdD
R0xzaXplaSwgY29uc3QgR0NHTGZsb2F0KiB2KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVuaWZv
cm0yZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiB2KSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIHVuaWZvcm0yaShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMaW50IHgs
IEdDR0xpbnQgeSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtMml2KEdDR0xpbnQgbG9j
YXRpb24sIEdDR0xzaXplaSwgY29uc3QgR0NHTGludCogdikgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCB1bmlmb3JtMml2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+IHYp
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybTNmKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xm
bG9hdCB4LCBHQ0dMZmxvYXQgeSwgR0NHTGZsb2F0IHopID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQg
dW5pZm9ybTNmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWksIGNvbnN0IEdDR0xmbG9hdCog
dikgPSAwOworICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtM2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdD
R0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gdikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB1bmlmb3Jt
M2koR0NHTGludCBsb2NhdGlvbiwgR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xpbnQgeikgPSAw
OwotICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtM2l2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXpl
aSwgY29uc3QgR0NHTGludCogdikgPSAwOworICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtM2l2KEdD
R0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+IHYpID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgdW5pZm9ybTRmKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xmbG9hdCB4LCBHQ0dMZmxv
YXQgeSwgR0NHTGZsb2F0IHosIEdDR0xmbG9hdCB3KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHVu
aWZvcm00ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpLCBjb25zdCBHQ0dMZmxvYXQqIHYp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybTRmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dM
U3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IHYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybTRp
KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMaW50IHosIEdDR0xp
bnQgdykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtNGl2KEdDR0xpbnQgbG9jYXRpb24s
IEdDR0xzaXplaSwgY29uc3QgR0NHTGludCogdikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB1bmlm
b3JtTWF0cml4MmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSwgR0NHTGJvb2xlYW4gdHJh
bnNwb3NlLCBjb25zdCBHQ0dMZmxvYXQqIHZhbHVlKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHVu
aWZvcm1NYXRyaXgzZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpLCBHQ0dMYm9vbGVhbiB0
cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogdmFsdWUpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQg
dW5pZm9ybU1hdHJpeDRmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWksIEdDR0xib29sZWFu
IHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiB2YWx1ZSkgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCB1bmlmb3JtNGl2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+IHYp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybU1hdHJpeDJmdihHQ0dMaW50IGxvY2F0aW9u
LCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gdmFsdWUp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybU1hdHJpeDNmdihHQ0dMaW50IGxvY2F0aW9u
LCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gdmFsdWUp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybU1hdHJpeDRmdihHQ0dMaW50IGxvY2F0aW9u
LCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gdmFsdWUp
ID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCB1c2VQcm9ncmFtKFBsYXRmb3JtR0xPYmplY3QpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgdmFsaWRhdGVQcm9ncmFtKFBsYXRmb3JtR0xPYmplY3QpID0g
MDsKIAogICAgIHZpcnR1YWwgdm9pZCB2ZXJ0ZXhBdHRyaWIxZihHQ0dMdWludCBpbmRleCwgR0NH
TGZsb2F0IHgpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdmVydGV4QXR0cmliMWZ2KEdDR0x1aW50
IGluZGV4LCBjb25zdCBHQ0dMZmxvYXQqIHZhbHVlcykgPSAwOworICAgIHZpcnR1YWwgdm9pZCB2
ZXJ0ZXhBdHRyaWIxZnYoR0NHTHVpbnQgaW5kZXgsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdCwg
MT4gdmFsdWVzKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHZlcnRleEF0dHJpYjJmKEdDR0x1aW50
IGluZGV4LCBHQ0dMZmxvYXQgeCwgR0NHTGZsb2F0IHkpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQg
dmVydGV4QXR0cmliMmZ2KEdDR0x1aW50IGluZGV4LCBjb25zdCBHQ0dMZmxvYXQqIHZhbHVlcykg
PSAwOworICAgIHZpcnR1YWwgdm9pZCB2ZXJ0ZXhBdHRyaWIyZnYoR0NHTHVpbnQgaW5kZXgsIEdD
R0xTcGFuPGNvbnN0IEdDR0xmbG9hdCwgMj4gdmFsdWVzKSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IHZlcnRleEF0dHJpYjNmKEdDR0x1aW50IGluZGV4LCBHQ0dMZmxvYXQgeCwgR0NHTGZsb2F0IHks
IEdDR0xmbG9hdCB6KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHZlcnRleEF0dHJpYjNmdihHQ0dM
dWludCBpbmRleCwgY29uc3QgR0NHTGZsb2F0KiB2YWx1ZXMpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgdmVydGV4QXR0cmliM2Z2KEdDR0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxv
YXQsIDM+IHZhbHVlcykgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB2ZXJ0ZXhBdHRyaWI0ZihHQ0dM
dWludCBpbmRleCwgR0NHTGZsb2F0IHgsIEdDR0xmbG9hdCB5LCBHQ0dMZmxvYXQgeiwgR0NHTGZs
b2F0IHcpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdmVydGV4QXR0cmliNGZ2KEdDR0x1aW50IGlu
ZGV4LCBjb25zdCBHQ0dMZmxvYXQqIHZhbHVlcykgPSAwOworICAgIHZpcnR1YWwgdm9pZCB2ZXJ0
ZXhBdHRyaWI0ZnYoR0NHTHVpbnQgaW5kZXgsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdCwgND4g
dmFsdWVzKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgdmVydGV4QXR0cmliUG9pbnRlcihHQ0dM
dWludCBpbmRleCwgR0NHTGludCBzaXplLCBHQ0dMZW51bSB0eXBlLCBHQ0dMYm9vbGVhbiBub3Jt
YWxpemVkLCBHQ0dMc2l6ZWkgc3RyaWRlLCBHQ0dMaW50cHRyIG9mZnNldCkgPSAwOwogCiAgICAg
dmlydHVhbCB2b2lkIHZpZXdwb3J0KEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lk
dGgsIEdDR0xzaXplaSBoZWlnaHQpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBidWZmZXJEYXRh
KEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpcHRyLCBHQ0dMZW51bSB1c2FnZSkgPSAwOwotICAg
IHZpcnR1YWwgdm9pZCBidWZmZXJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpcHRyLCBj
b25zdCBHQ0dMdm9pZCogZGF0YSwgR0NHTGVudW0gdXNhZ2UpID0gMDsKLSAgICB2aXJ0dWFsIHZv
aWQgYnVmZmVyU3ViRGF0YShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnRwdHIgb2Zmc2V0LCBHQ0dM
c2l6ZWlwdHIsIGNvbnN0IEdDR0x2b2lkKiBkYXRhKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGJ1
ZmZlckRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gZGF0YSwg
R0NHTGVudW0gdXNhZ2UpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgYnVmZmVyU3ViRGF0YShHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xpbnRwdHIgb2Zmc2V0LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4g
ZGF0YSkgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIHJlYWRQaXhlbHMoR0NHTGludCB4LCBHQ0dM
aW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0
LCBHQ0dMZW51bSB0eXBlLCBHQ0dMdm9pZCogZGF0YSkgPSAwOwogCi0gICAgdmlydHVhbCBib29s
IHRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRl
cm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJv
cmRlciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBjb25zdCBHQ0dMdm9pZCogcGl4
ZWxzKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTHNp
emVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5
cGUsIGNvbnN0IEdDR0x2b2lkKiBwaXhlbHMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdGV4SW1h
Z2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9y
bWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBH
Q0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsICBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4g
cGl4ZWxzKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRo
LCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dM
ZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCB0ZXhT
dWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0
LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NH
TGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gcGl4
ZWxzKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTHNp
emVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5
cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNvbXByZXNzZWRU
ZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJu
YWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3Jk
ZXIsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRhKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIGNvbXByZXNzZWRUZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0
aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xzaXplaSBpbWFnZVNpemUs
IEdDR0xpbnRwdHIgb2Zmc2V0KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNvbXByZXNzZWRUZXhT
dWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0
LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NH
TGVudW0gZm9ybWF0LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9p
ZD4gZGF0YSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChH
Q0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5
b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1h
dCwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTGludHB0ciBvZmZzZXQpID0gMDsKIAogICAgIHZp
cnR1YWwgdm9pZCBkcmF3QXJyYXlzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmly
c3QsIEdDR0xzaXplaSBjb3VudCwgR0NHTHNpemVpIHByaW1jb3VudCkgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBkcmF3RWxlbWVudHNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNv
dW50LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCwgR0NHTHNpemVpIHByaW1jb3Vu
dCkgPSAwOwpAQCAtMTEyNSw4ICsxMTMxLDggQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lk
IGJsaXRGcmFtZWJ1ZmZlcihHQ0dMaW50IHNyY1gwLCBHQ0dMaW50IHNyY1kwLCBHQ0dMaW50IHNy
Y1gxLCBHQ0dMaW50IHNyY1kxLCBHQ0dMaW50IGRzdFgwLCBHQ0dMaW50IGRzdFkwLCBHQ0dMaW50
IGRzdFgxLCBHQ0dMaW50IGRzdFkxLCBHQ0dMYml0ZmllbGQgbWFzaywgR0NHTGVudW0gZmlsdGVy
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGZyYW1lYnVmZmVyVGV4dHVyZUxheWVyKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGVudW0gYXR0YWNobWVudCwgUGxhdGZvcm1HTE9iamVjdCB0ZXh0dXJlLCBH
Q0dMaW50IGxldmVsLCBHQ0dMaW50IGxheWVyKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGludmFs
aWRhdGVGcmFtZWJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaSBudW1BdHRhY2htZW50
cywgY29uc3QgR0NHTGVudW0qIGF0dGFjaG1lbnRzKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGlu
dmFsaWRhdGVTdWJGcmFtZWJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaSBudW1BdHRh
Y2htZW50cywgY29uc3QgR0NHTGVudW0qIGF0dGFjaG1lbnRzLCBHQ0dMaW50IHgsIEdDR0xpbnQg
eSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIGludmFsaWRhdGVGcmFtZWJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQsIEdDR0xTcGFuPGNvbnN0
IEdDR0xlbnVtPiBhdHRhY2htZW50cykgPSAwOworICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRl
U3ViRnJhbWVidWZmZXIoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4g
YXR0YWNobWVudHMsIEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xz
aXplaSBoZWlnaHQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcmVhZEJ1ZmZlcihHQ0dMZW51bSBz
cmMpID0gMDsKIAogICAgIC8vIGdldEludGVybmFsRm9ybWF0UGFyYW1ldGVyCkBAIC0xMTM2LDEx
ICsxMTQyLDE1IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgdGV4U3RvcmFnZTJEKEdDR0xl
bnVtIHRhcmdldCwgR0NHTHNpemVpIGxldmVscywgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdD
R0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB0
ZXhTdG9yYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgbGV2ZWxzLCBHQ0dMZW51bSBp
bnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6
ZWkgZGVwdGgpID0gMDsKIAotICAgIC8vIHRleHtTdWJ9SW1hZ2UzRCBhcmUgc3VwcG9ydGVkIG9u
bHkgdmlhIEFOR0xFX3JvYnVzdF9jbGllbnRfbWVtb3J5LgotCisgICAgdmlydHVhbCB2b2lkIHRl
eEltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IGludGVybmFs
Zm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0
aCwgR0NHTGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTFNw
YW48Y29uc3QgR0NHTHZvaWQ+IHBpeGVscykgPSAwOworICAgIHZpcnR1YWwgdm9pZCB0ZXhJbWFn
ZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCBpbnRlcm5hbGZvcm1h
dCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdD
R0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIg
b2Zmc2V0KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHRleFN1YkltYWdlM0QoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NH
TGludCB6b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXpl
aSBkZXB0aCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bhbjxjb25zdCBH
Q0dMdm9pZD4gcGl4ZWxzKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHRleFN1YkltYWdlM0QoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9m
ZnNldCwgR0NHTGludCB6b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQs
IEdDR0xzaXplaSBkZXB0aCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50
cHRyIG9mZnNldCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjb3B5VGV4U3ViSW1hZ2UzRChHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zm
c2V0LCBHQ0dMaW50IHpvZmZzZXQsIEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lk
dGgsIEdDR0xzaXplaSBoZWlnaHQpID0gMDsKLQotICAgIC8vIGNvbXByZXNzZWRUZXh7U3VifUlt
YWdlM0QgYXJlIHN1cHBvcnRlZCBvbmx5IHZpYSBBTkdMRV9yb2J1c3RfY2xpZW50X21lbW9yeS4K
KyAgICB2aXJ0dWFsIHZvaWQgY29tcHJlc3NlZFRleEltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBH
Q0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMc2l6
ZWkgaW1hZ2VTaXplLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gZGF0YSkgPSAwOworICAgIHZp
cnR1YWwgdm9pZCBjb21wcmVzc2VkVGV4SW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQg
bGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXpl
aSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGludCBib3JkZXIsIEdDR0xzaXplaSBpbWFn
ZVNpemUsIEdDR0xpbnRwdHIgb2Zmc2V0KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNvbXByZXNz
ZWRUZXhTdWJJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4
b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xpbnQgem9mZnNldCwgR0NHTHNpemVpIHdpZHRo
LCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xlbnVtIGZvcm1hdCwgR0NH
THNpemVpIGltYWdlU2l6ZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEpID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgY29tcHJlc3NlZFRleFN1YkltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTGludCB6
b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0
aCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMaW50cHRyIG9mZnNl
dCkgPSAwOwogCiAgICAgdmlydHVhbCBHQ0dMaW50IGdldEZyYWdEYXRhTG9jYXRpb24oUGxhdGZv
cm1HTE9iamVjdCBwcm9ncmFtLCBjb25zdCBTdHJpbmcmIG5hbWUpID0gMDsKIApAQCAtMTE0OCwy
OCArMTE1OCwyOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHVuaWZvcm0ydWkoR0NHTGlu
dCBsb2NhdGlvbiwgR0NHTHVpbnQgdjAsIEdDR0x1aW50IHYxKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIHVuaWZvcm0zdWkoR0NHTGludCBsb2NhdGlvbiwgR0NHTHVpbnQgdjAsIEdDR0x1aW50IHYx
LCBHQ0dMdWludCB2MikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtNHVpKEdDR0xpbnQg
bG9jYXRpb24sIEdDR0x1aW50IHYwLCBHQ0dMdWludCB2MSwgR0NHTHVpbnQgdjIsIEdDR0x1aW50
IHYzKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHVuaWZvcm0xdWl2KEdDR0xpbnQgbG9jYXRpb24s
IGNvbnN0IEdDR0x1aW50KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xl
bmd0aCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtMnVpdihHQ0dMaW50IGxvY2F0aW9u
LCBjb25zdCBHQ0dMdWludCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNM
ZW5ndGgpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybTN1aXYoR0NHTGludCBsb2NhdGlv
biwgY29uc3QgR0NHTHVpbnQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3Jj
TGVuZ3RoKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHVuaWZvcm00dWl2KEdDR0xpbnQgbG9jYXRp
b24sIGNvbnN0IEdDR0x1aW50KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNy
Y0xlbmd0aCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtTWF0cml4MngzZnYoR0NHTGlu
dCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEs
IEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKSA9IDA7Ci0gICAgdmlydHVh
bCB2b2lkIHVuaWZvcm1NYXRyaXgzeDJmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0
cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dM
dWludCBzcmNMZW5ndGgpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybU1hdHJpeDJ4NGZ2
KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0
KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkgPSAwOwotICAg
IHZpcnR1YWwgdm9pZCB1bmlmb3JtTWF0cml4NHgyZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJv
b2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNl
dCwgR0NHTHVpbnQgc3JjTGVuZ3RoKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHVuaWZvcm1NYXRy
aXgzeDRmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdD
R0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpID0g
MDsKLSAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybU1hdHJpeDR4M2Z2KEdDR0xpbnQgbG9jYXRpb24s
IEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBz
cmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCB1bmlm
b3JtMXVpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdWludD4gZGF0YSkg
PSAwOworICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtMnVpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dM
U3Bhbjxjb25zdCBHQ0dMdWludD4gZGF0YSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCB1bmlmb3Jt
M3VpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdWludD4gZGF0YSkgPSAw
OworICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtNHVpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bh
bjxjb25zdCBHQ0dMdWludD4gZGF0YSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtTWF0
cml4MngzZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bh
bjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybU1h
dHJpeDN4MmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNw
YW48Y29uc3QgR0NHTGZsb2F0PiBkYXRhKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVuaWZvcm1N
YXRyaXgyeDRmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xT
cGFuPGNvbnN0IEdDR0xmbG9hdD4gZGF0YSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCB1bmlmb3Jt
TWF0cml4NHgyZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dM
U3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdW5pZm9y
bU1hdHJpeDN4NGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NH
TFNwYW48Y29uc3QgR0NHTGZsb2F0PiBkYXRhKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVuaWZv
cm1NYXRyaXg0eDNmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdD
R0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gZGF0YSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB2ZXJ0
ZXhBdHRyaWJJNGkoR0NHTHVpbnQgaW5kZXgsIEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMaW50
IHosIEdDR0xpbnQgdykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB2ZXJ0ZXhBdHRyaWJJNGl2KEdD
R0x1aW50IGluZGV4LCBjb25zdCBHQ0dMaW50KiB2YWx1ZXMpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgdmVydGV4QXR0cmliSTRpdihHQ0dMdWludCBpbmRleCwgR0NHTFNwYW48Y29uc3QgR0NHTGlu
dCwgND4gdmFsdWVzKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHZlcnRleEF0dHJpYkk0dWkoR0NH
THVpbnQgaW5kZXgsIEdDR0x1aW50IHgsIEdDR0x1aW50IHksIEdDR0x1aW50IHosIEdDR0x1aW50
IHcpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdmVydGV4QXR0cmliSTR1aXYoR0NHTHVpbnQgaW5k
ZXgsIGNvbnN0IEdDR0x1aW50KiB2YWx1ZXMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdmVydGV4
QXR0cmliSTR1aXYoR0NHTHVpbnQgaW5kZXgsIEdDR0xTcGFuPGNvbnN0IEdDR0x1aW50LCA0PiB2
YWx1ZXMpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdmVydGV4QXR0cmliSVBvaW50ZXIoR0NHTHVp
bnQgaW5kZXgsIEdDR0xpbnQgc2l6ZSwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIHN0cmlkZSwg
R0NHTGludHB0ciBvZmZzZXQpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBkcmF3UmFuZ2VFbGVt
ZW50cyhHQ0dMZW51bSBtb2RlLCBHQ0dMdWludCBzdGFydCwgR0NHTHVpbnQgZW5kLCBHQ0dMc2l6
ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KSA9IDA7CiAKLSAgICB2
aXJ0dWFsIHZvaWQgZHJhd0J1ZmZlcnMoR0NHTHNpemVpIG4sIGNvbnN0IEdDR0xlbnVtKiBidWZz
KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGNsZWFyQnVmZmVyaXYoR0NHTGVudW0gYnVmZmVyLCBH
Q0dMaW50IGRyYXdidWZmZXIsIGNvbnN0IEdDR0xpbnQqIHZhbHVlcywgR0NHTHVpbnQgc3JjT2Zm
c2V0KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGNsZWFyQnVmZmVydWl2KEdDR0xlbnVtIGJ1ZmZl
ciwgR0NHTGludCBkcmF3YnVmZmVyLCBjb25zdCBHQ0dMdWludCogdmFsdWVzLCBHQ0dMdWludCBz
cmNPZmZzZXQpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgY2xlYXJCdWZmZXJmdihHQ0dMZW51bSBi
dWZmZXIsIEdDR0xpbnQgZHJhd2J1ZmZlciwgY29uc3QgR0NHTGZsb2F0KiB2YWx1ZXMsIEdDR0x1
aW50IHNyY09mZnNldCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkcmF3QnVmZmVycyhHQ0dMU3Bh
bjxjb25zdCBHQ0dMZW51bT4gYnVmcykgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjbGVhckJ1ZmZl
cml2KEdDR0xlbnVtIGJ1ZmZlciwgR0NHTGludCBkcmF3YnVmZmVyLCBHQ0dMU3Bhbjxjb25zdCBH
Q0dMaW50PiB2YWx1ZXMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY2xlYXJCdWZmZXJ1aXYoR0NH
TGVudW0gYnVmZmVyLCBHQ0dMaW50IGRyYXdidWZmZXIsIEdDR0xTcGFuPGNvbnN0IEdDR0x1aW50
PiB2YWx1ZXMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY2xlYXJCdWZmZXJmdihHQ0dMZW51bSBi
dWZmZXIsIEdDR0xpbnQgZHJhd2J1ZmZlciwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiB2YWx1
ZXMpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY2xlYXJCdWZmZXJmaShHQ0dMZW51bSBidWZmZXIs
IEdDR0xpbnQgZHJhd2J1ZmZlciwgR0NHTGZsb2F0IGRlcHRoLCBHQ0dMaW50IHN0ZW5jaWwpID0g
MDsKIAogICAgIHZpcnR1YWwgUGxhdGZvcm1HTE9iamVjdCBjcmVhdGVRdWVyeSgpID0gMDsKQEAg
LTEyMjEsMjAgKzEyMzEsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBTdHJpbmcgZ2V0QWN0aXZl
VW5pZm9ybUJsb2NrTmFtZShQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1aW50IHVuaWZv
cm1CbG9ja0luZGV4KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHVuaWZvcm1CbG9ja0JpbmRpbmco
UGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMdWludCB1bmlmb3JtQmxvY2tJbmRleCwgR0NH
THVpbnQgdW5pZm9ybUJsb2NrQmluZGluZykgPSAwOwogCi0gICAgdmlydHVhbCB2b2lkIHVuaWZv
cm0xZnYoR0NHTGludCBsb2NhdGlvbiwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBz
cmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB1bmlm
b3JtMmZ2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQg
c3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdW5p
Zm9ybTNmdihHQ0dMaW50IGxvY2F0aW9uLCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50
IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHVu
aWZvcm00ZnYoR0NHTGludCBsb2NhdGlvbiwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWlu
dCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkgPSAwOwotCi0gICAgdmlydHVhbCB2b2lk
IHVuaWZvcm0xaXYoR0NHTGludCBsb2NhdGlvbiwgY29uc3QgR0NHTGludCogZGF0YSwgR0NHTHVp
bnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQg
dW5pZm9ybTJpdihHQ0dMaW50IGxvY2F0aW9uLCBjb25zdCBHQ0dMaW50KiBkYXRhLCBHQ0dMdWlu
dCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB1
bmlmb3JtM2l2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0xpbnQqIGRhdGEsIEdDR0x1aW50
IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHVu
aWZvcm00aXYoR0NHTGludCBsb2NhdGlvbiwgY29uc3QgR0NHTGludCogZGF0YSwgR0NHTHVpbnQg
c3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpID0gMDsKLQotICAgIHZpcnR1YWwgdm9pZCB1
bmlmb3JtTWF0cml4MmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwg
Y29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xl
bmd0aCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtTWF0cml4M2Z2KEdDR0xpbnQgbG9j
YXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dM
dWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkgPSAwOwotICAgIHZpcnR1YWwgdm9p
ZCB1bmlmb3JtTWF0cml4NGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9z
ZSwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNy
Y0xlbmd0aCkgPSAwOwotCiAgICAgdmlydHVhbCB2b2lkIGdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2
KEdDR0x1aW50IHByb2dyYW0sIEdDR0x1aW50IHVuaWZvcm1CbG9ja0luZGV4LCBHQ0dMZW51bSBw
bmFtZSwgR0NHTFNwYW48R0NHTGludD4gcGFyYW1zKSA9IDA7CiAKICAgICAvLyBPdGhlciBmdW5j
dGlvbnMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc1R5cGVzR0wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
VHlwZXNHTC5oCmluZGV4IGU3YzY5YjI4ZGNlNDY1ODI1NzU3NzMzMzI1YjhmNDRkZjI3MjA3Yjku
Ljk4NWZiNzk0NTEzNDUwODkzZDgyMGQ2ZTk1NTUzZDJhM2Y4OWQxNGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXNHTC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXNHTC5oCkBAIC02OCw2
ICs2OCwxMCBAQCBzdHJ1Y3QgR0NHTFNwYW4gewogICAgIEdDR0xTcGFuKFQgKCZhcnJheSlbRXh0
ZW50XSkKICAgICAgICAgOiBkYXRhKGFycmF5KQogICAgIHsgfQorICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFU+CisgICAgR0NHTFNwYW4oY29uc3QgR0NHTFNwYW48VSwgRXh0ZW50PiYgb3RoZXIsIHN0
ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19jb252ZXJ0aWJsZV92PFUoKilbXSwgVCgqKVtdPiwgbnVs
bHB0cl90PiA9IG51bGxwdHIpCisgICAgICAgIDogZGF0YShvdGhlci5kYXRhKQorICAgIHsgfQog
ICAgIFQmIG9wZXJhdG9yW10oc2l6ZV90IGkpIHsgUkVMRUFTRV9BU1NFUlQoZGF0YSAmJiBpIDwg
YnVmU2l6ZSk7IHJldHVybiBkYXRhW2ldOyB9CiAgICAgVCYgb3BlcmF0b3IqKCkgeyBSRUxFQVNF
X0FTU0VSVChkYXRhICYmIGJ1ZlNpemUpOyByZXR1cm4gKmRhdGE7IH0KICAgICBUKiBkYXRhOwpA
QCAtODAsMTEgKzg0LDE4IEBAIHN0cnVjdCBHQ0dMU3BhbjxULCBzdGQ6Om51bWVyaWNfbGltaXRz
PHNpemVfdD46Om1heCgpPiB7CiAgICAgICAgIDogZGF0YShhcnJheSkKICAgICAgICAgLCBidWZT
aXplKGJ1ZlNpemVfKQogICAgIHsgfQotICAgIHRlbXBsYXRlPHNpemVfdCBTej4gR0NHTFNwYW4o
VCAoJmFycmF5KVtTel0pCisgICAgdGVtcGxhdGU8c2l6ZV90IFN6PgorICAgIEdDR0xTcGFuKFQg
KCZhcnJheSlbU3pdKQogICAgICAgICA6IGRhdGEoYXJyYXkpCiAgICAgICAgICwgYnVmU2l6ZShT
eikKICAgICB7IH0KLSAgICBHQ0dMU3BhbihXVEY6OlZlY3RvcjxUPiYgYXJyYXkpCisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgVSwgc2l6ZV90IFVFeHRlbnQ+CisgICAgR0NHTFNwYW4oY29uc3QgR0NH
TFNwYW48VSwgVUV4dGVudD4mIG90aGVyLCBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfY29udmVy
dGlibGVfdjxVKCopW10sIFQoKilbXT4sIG51bGxwdHJfdD4gPSBudWxscHRyKQorICAgICAgICA6
IGRhdGEob3RoZXIuZGF0YSkKKyAgICAgICAgLCBidWZTaXplKG90aGVyLmJ1ZlNpemUpCisgICAg
eyB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVSwgc2l6ZV90IGlubGluZUNhcGFjaXR5PgorICAg
IEdDR0xTcGFuKFdURjo6VmVjdG9yPFUsIGlubGluZUNhcGFjaXR5PiYgYXJyYXksIHN0ZDo6ZW5h
YmxlX2lmX3Q8c3RkOjppc19jb252ZXJ0aWJsZV92PFUoKilbXSwgVCgqKVtdPiwgbnVsbHB0cl90
PiA9IG51bGxwdHIpCiAgICAgICAgIDogZGF0YShhcnJheS5kYXRhKCkpCiAgICAgICAgICwgYnVm
U2l6ZShhcnJheS5zaXplKCkpCiAgICAgeyB9CkBAIC05NCw2ICsxMDUsNTAgQEAgc3RydWN0IEdD
R0xTcGFuPFQsIHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCk+IHsKICAgICBjb25z
dCBzaXplX3QgYnVmU2l6ZTsKIH07CiAKK3RlbXBsYXRlPD4KK3N0cnVjdCBHQ0dMU3BhbjxHQ0dM
dm9pZD4geworICAgIEdDR0xTcGFuKEdDR0x2b2lkKiBhcnJheSwgc2l6ZV90IGJ1ZlNpemVfKQor
ICAgICAgICA6IGRhdGEoYXJyYXkpCisgICAgICAgICwgYnVmU2l6ZShidWZTaXplXykKKyAgICB7
IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVLCBzaXplX3QgU3o+CisgICAgR0NHTFNwYW4oVSAo
JmFycmF5KVtTel0pCisgICAgICAgIDogZGF0YShhcnJheSkKKyAgICAgICAgLCBidWZTaXplKFN6
ICogc2l6ZW9mKFUpKQorICAgIHsgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUsIHNpemVfdCBV
RXh0ZW50PgorICAgIEdDR0xTcGFuKGNvbnN0IEdDR0xTcGFuPFUsIFVFeHRlbnQ+JiBvdGhlcikK
KyAgICAgICAgOiBkYXRhKG90aGVyLmRhdGEpCisgICAgICAgICwgYnVmU2l6ZShvdGhlci5idWZT
aXplICogc2l6ZW9mKFUpKQorICAgIHsgfQorICAgIEdDR0x2b2lkKiBkYXRhOworICAgIGNvbnN0
IHNpemVfdCBidWZTaXplOworfTsKKwordGVtcGxhdGU8Pgorc3RydWN0IEdDR0xTcGFuPGNvbnN0
IEdDR0x2b2lkPiB7CisgICAgR0NHTFNwYW4oY29uc3QgR0NHTHZvaWQqIGFycmF5LCBzaXplX3Qg
YnVmU2l6ZV8pCisgICAgICAgIDogZGF0YShhcnJheSkKKyAgICAgICAgLCBidWZTaXplKGJ1ZlNp
emVfKQorICAgIHsgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUsIHNpemVfdCBTej4KKyAgICBH
Q0dMU3BhbihVICgmYXJyYXkpW1N6XSkKKyAgICAgICAgOiBkYXRhKGFycmF5KQorICAgICAgICAs
IGJ1ZlNpemUoU3ogKiBzaXplb2YoVSkpCisgICAgeyB9CisgICAgR0NHTFNwYW4oY29uc3QgR0NH
TFNwYW48R0NHTHZvaWQ+JiBvdGhlcikKKyAgICAgICAgOiBkYXRhKG90aGVyLmRhdGEpCisgICAg
ICAgICwgYnVmU2l6ZShvdGhlci5idWZTaXplKQorICAgIHsgfQorICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFUsIHNpemVfdCBVRXh0ZW50PgorICAgIEdDR0xTcGFuKGNvbnN0IEdDR0xTcGFuPFUsIFVF
eHRlbnQ+JiBvdGhlcikKKyAgICAgICAgOiBkYXRhKG90aGVyLmRhdGEpCisgICAgICAgICwgYnVm
U2l6ZShvdGhlci5idWZTaXplICogc2l6ZW9mKFUpKQorICAgIHsgfQorICAgIGNvbnN0IEdDR0x2
b2lkKiBkYXRhOworICAgIGNvbnN0IHNpemVfdCBidWZTaXplOworfTsKKwogdGVtcGxhdGU8dHlw
ZW5hbWUgVCwgc2l6ZV90IE4+CiBHQ0dMU3BhbihUICgmKVtOXSkgLT4gR0NHTFNwYW48VCwgTj47
CiAKQEAgLTEwNSwzICsxNjAsOSBAQCBHQ0dMU3BhbjxUPiBtYWtlR0NHTFNwYW4oVCogZGF0YSwg
c2l6ZV90IGNvdW50KQogewogICAgIHJldHVybiBHQ0dMU3BhbjxUPiB7IGRhdGEsIGNvdW50IH07
CiB9CisKK3RlbXBsYXRlPHNpemVfdCBFeHRlbnQsIHR5cGVuYW1lIFQ+CitHQ0dMU3BhbjxULCBF
eHRlbnQ+IG1ha2VHQ0dMU3BhbihUKiBkYXRhKQoreworICAgIHJldHVybiBHQ0dMU3BhbjxULCBF
eHRlbnQ+IHsgZGF0YSB9OworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuY3BwCmluZGV4IDRkMDI1Yjk5
MzQyMjc3NmI5YjVmNGFhYmMzOWEwYzc4OTE5NDBhOTkuLjI4M2RhODJjNmE2MDJlYTRiNTU3YzY4
NmNmZDgyM2QwODFjNTVlNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5jcHAKQEAgLTIyNywxMiAr
MjI3LDEyIEBAIGJvb2wgRXh0ZW5zaW9uc0dMQU5HTEU6OnN1cHBvcnRzRXh0ZW5zaW9uKGNvbnN0
IFN0cmluZyYgbmFtZSkKICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5z
KG5hbWUpIHx8IG1fcmVxdWVzdGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKG5hbWUpOwogfQogCi12
b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpkcmF3QnVmZmVyc0VYVChHQ0dMc2l6ZWkgbiwgY29uc3Qg
R0NHTGVudW0qIGJ1ZnMpCit2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpkcmF3QnVmZmVyc0VYVChH
Q0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4gYnVmcykKIHsKICAgICBpZiAoIW1fY29udGV4dC0+bWFr
ZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGdsOjpEcmF3QnVmZmVy
c0VYVChuLCBidWZzKTsKKyAgICBnbDo6RHJhd0J1ZmZlcnNFWFQoYnVmcy5idWZTaXplLCBidWZz
LmRhdGEpOwogfQogCiB2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpkcmF3QXJyYXlzSW5zdGFuY2Vk
KEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xzaXplaSBjb3VudCwgR0NHTHNpemVp
IHByaW1jb3VudCkKQEAgLTI4NiwxNiArMjg2LDYgQEAgdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6
cmVhZFBpeGVsc1JvYnVzdEFOR0xFKGludCB4LCBpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0cK
ICAgICBnbDo6UmVhZFBpeGVsc1JvYnVzdEFOR0xFKHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1h
dCwgdHlwZSwgYnVmU2l6ZSwgbGVuZ3RoLCBjb2x1bW5zLCByb3dzLCBwaXhlbHMpOwogfQogCi12
b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjp0ZXhJbWFnZTJEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFy
Z2V0LCBpbnQgbGV2ZWwsIGludCBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dM
c2l6ZWkgaGVpZ2h0LCBpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUs
IEdDR0xzaXplaSBidWZTaXplLCBjb25zdCB2b2lkICpwaXhlbHMpCi17Ci0gICAgaWYgKCFtX2Nv
bnRleHQtPm1faXNGb3JXZWJHTDIpCi0gICAgICAgIGludGVybmFsZm9ybWF0ID0gYWRqdXN0V2Vi
R0wxVGV4dHVyZUludGVybmFsRm9ybWF0KGludGVybmFsZm9ybWF0LCBmb3JtYXQsIHR5cGUpOwot
ICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgZ2w6OlRleEltYWdlMkRSb2J1c3RBTkdMRSh0YXJnZXQsIGxldmVsLCBpbnRlcm5h
bGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgYm9yZGVyLCBmb3JtYXQsIHR5cGUsIGJ1ZlNpemUsIHBp
eGVscyk7Ci19Ci0KIHZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OnRleFBhcmFtZXRlcmZ2Um9idXN0
QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUs
IGNvbnN0IEdDR0xmbG9hdCAqcGFyYW1zKQogewogICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29u
dGV4dEN1cnJlbnQoKSkKQEAgLTMxMiw2NiArMzAyLDYgQEAgdm9pZCBFeHRlbnNpb25zR0xBTkdM
RTo6dGV4UGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBu
YW0KICAgICBnbDo6VGV4UGFyYW1ldGVyaXZSb2J1c3RBTkdMRSh0YXJnZXQsIHBuYW1lLCBidWZT
aXplLCBwYXJhbXMpOwogfQogCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjp0ZXhTdWJJbWFnZTJE
Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWwsIGludCB4b2Zmc2V0LCBpbnQg
eW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3Jt
YXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCB2b2lkICpwaXhlbHMp
Ci17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBnbDo6VGV4U3ViSW1hZ2UyRFJvYnVzdEFOR0xFKHRhcmdldCwgbGV2ZWws
IHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgYnVmU2l6ZSwg
cGl4ZWxzKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Y29tcHJlc3NlZFRleEltYWdl
MkRSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJu
YWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgaW50IGJvcmRlciwg
R0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IHZvaWQqIGRhdGEp
Ci17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBnbDo6Q29tcHJlc3NlZFRleEltYWdlMkRSb2J1c3RBTkdMRSh0YXJnZXQs
IGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgYm9yZGVyLCBpbWFnZVNpemUs
IGJ1ZlNpemUsIGRhdGEpOwotICAgIG1fY29udGV4dC0+bV9zdGF0ZS50ZXh0dXJlU2VlZENvdW50
LmFkZChtX2NvbnRleHQtPm1fc3RhdGUuY3VycmVudEJvdW5kVGV4dHVyZSgpKTsKLQotfQotCi12
b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRFJvYnVzdEFOR0xF
KEdDR0xlbnVtIHRhcmdldCwgaW50IGxldmVsLCBpbnQgeG9mZnNldCwgaW50IHlvZmZzZXQsIEdD
R0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMc2l6
ZWkgaW1hZ2VTaXplLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3Qgdm9pZCogZGF0YSkKLXsKLSAg
ICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsK
LQotICAgIGdsOjpDb21wcmVzc2VkVGV4U3ViSW1hZ2UyRFJvYnVzdEFOR0xFKHRhcmdldCwgbGV2
ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgaW1hZ2VTaXplLCBi
dWZTaXplLCBkYXRhKTsKLSAgICBtX2NvbnRleHQtPm1fc3RhdGUudGV4dHVyZVNlZWRDb3VudC5h
ZGQobV9jb250ZXh0LT5tX3N0YXRlLmN1cnJlbnRCb3VuZFRleHR1cmUoKSk7Ci19Ci0KLXZvaWQg
RXh0ZW5zaW9uc0dMQU5HTEU6OmNvbXByZXNzZWRUZXhJbWFnZTNEUm9idXN0QU5HTEUoR0NHTGVu
dW0gdGFyZ2V0LCBpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkg
d2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgaW50IGJvcmRlciwgR0NH
THNpemVpIGltYWdlU2l6ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IHZvaWQqIGRhdGEpCi17
Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBnbDo6Q29tcHJlc3NlZFRleEltYWdlM0RSb2J1c3RBTkdMRSh0YXJnZXQsIGxl
dmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGJvcmRlciwgaW1hZ2VT
aXplLCBidWZTaXplLCBkYXRhKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Y29tcHJl
c3NlZFRleFN1YkltYWdlM0RSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIGludCBsZXZlbCwg
aW50IHhvZmZzZXQsIGludCB5b2Zmc2V0LCBpbnQgem9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBH
Q0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTHNp
emVpIGltYWdlU2l6ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IHZvaWQqIGRhdGEpCi17Ci0g
ICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47
Ci0KLSAgICBnbDo6Q29tcHJlc3NlZFRleFN1YkltYWdlM0RSb2J1c3RBTkdMRSh0YXJnZXQsIGxl
dmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB6b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgZm9y
bWF0LCBpbWFnZVNpemUsIGJ1ZlNpemUsIGRhdGEpOwotfQotCi0KLXZvaWQgRXh0ZW5zaW9uc0dM
QU5HTEU6OnRleEltYWdlM0RSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIGludCBsZXZlbCwg
aW50IGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdD
R0xzaXplaSBkZXB0aCwgaW50IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBl
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3Qgdm9pZCAqcGl4ZWxzKQotewotICAgIGlmICghbV9j
b250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6
OlRleEltYWdlM0RSb2J1c3RBTkdMRSh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lk
dGgsIGhlaWdodCwgZGVwdGgsIGJvcmRlciwgZm9ybWF0LCB0eXBlLCBidWZTaXplLCBwaXhlbHMp
OwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjp0ZXhTdWJJbWFnZTNEUm9idXN0QU5HTEUo
R0NHTGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWwsIGludCB4b2Zmc2V0LCBpbnQgeW9mZnNldCwgaW50
IHpvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRl
cHRoLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBj
b25zdCB2b2lkICpwaXhlbHMpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3Vy
cmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6VGV4U3ViSW1hZ2UzRFJvYnVzdEFO
R0xFKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHpvZmZzZXQsIHdpZHRoLCBoZWln
aHQsIGRlcHRoLCBmb3JtYXQsIHR5cGUsIGJ1ZlNpemUsIHBpeGVscyk7Ci19Ci0KIHZvaWQgRXh0
ZW5zaW9uc0dMQU5HTEU6OmdldFF1ZXJ5aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xp
bnQgKnBhcmFtcykKIHsKICAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRl
bnNpb25zR0xBTkdMRS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUv
RXh0ZW5zaW9uc0dMQU5HTEUuaAppbmRleCA1N2JiOTNiYzg0YzMzNTkwZmJjZjRiM2Y3YTFlYjVh
NTVjNTkyNTZjLi5hNzczMWRmZDIwYzVmMDNhMzM1OTAzZmFhNmUzOGZmNzJmNGIyMzIzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25z
R0xBTkdMRS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4
dGVuc2lvbnNHTEFOR0xFLmgKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgogICAgIHZvaWQgaW5z
ZXJ0RXZlbnRNYXJrZXJFWFQoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBwdXNo
R3JvdXBNYXJrZXJFWFQoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBwb3BHcm91
cE1hcmtlckVYVCh2b2lkKSBvdmVycmlkZTsKLSAgICB2b2lkIGRyYXdCdWZmZXJzRVhUKEdDR0xz
aXplaSwgY29uc3QgR0NHTGVudW0qKSBvdmVycmlkZTsKKyAgICB2b2lkIGRyYXdCdWZmZXJzRVhU
KEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVtPikgb3ZlcnJpZGU7CiAKICAgICBTdHJpbmcgZ2V0VHJh
bnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKFBsYXRmb3JtR0xPYmplY3QpIG92ZXJyaWRlOwogCkBA
IC03NCwxNyArNzQsOCBAQCBwdWJsaWM6CiAKICAgICAvLyBHTF9BTkdMRV9yb2J1c3RfY2xpZW50
X21lbW9yeQogICAgIHZvaWQgcmVhZFBpeGVsc1JvYnVzdEFOR0xFKEdDR0xpbnQgeCwgR0NHTGlu
dCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwg
R0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dM
c2l6ZWkgKmNvbHVtbnMsIEdDR0xzaXplaSAqcm93cywgdm9pZCAqcGl4ZWxzKSBvdmVycmlkZTsK
LSAgICB2b2lkIHRleEltYWdlMkRSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQg
bGV2ZWwsIEdDR0xpbnQgaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVp
IGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwg
R0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IHZvaWQgKnBpeGVscykgb3ZlcnJpZGU7CiAgICAgdm9p
ZCB0ZXhQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5h
bWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMZmxvYXQgKnBhcmFtcykgb3ZlcnJpZGU7
CiAgICAgdm9pZCB0ZXhQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NH
TGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50ICpwYXJhbXMpIG92
ZXJyaWRlOwotICAgIHZvaWQgdGV4U3ViSW1hZ2UyRFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xz
aXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0
eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3Qgdm9pZCAqcGl4ZWxzKSBvdmVycmlkZTsKLSAg
ICB2b2lkIGNvbXByZXNzZWRUZXhJbWFnZTJEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBH
Q0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NH
THNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0x2b2lkKiBkYXRhKSBvdmVycmlkZTsKLSAgICB2b2lk
IGNvbXByZXNzZWRUZXhTdWJJbWFnZTJEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
aW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdp
ZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFnZVNp
emUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMdm9pZCogZGF0YSkgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCBjb21wcmVzc2VkVGV4SW1hZ2UzRFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwg
R0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMaW50IGJvcmRlciwgR0NHTHNp
emVpIGltYWdlU2l6ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0x2b2lkKiBkYXRhKSBv
dmVycmlkZTsKLSAgICB2b2lkIGNvbXByZXNzZWRUZXhTdWJJbWFnZTNEUm9idXN0QU5HTEUoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9m
ZnNldCwgR0NHTGludCB6b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQs
IEdDR0xzaXplaSBkZXB0aCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTHZvaWQqIGRhdGEpIG92ZXJyaWRlOwotCi0gICAg
dm9pZCB0ZXhJbWFnZTNEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVs
LCBHQ0dMaW50IGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWln
aHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NH
TGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IHZvaWQgKnBpeGVscykgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCB0ZXhTdWJJbWFnZTNEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTGludCB6
b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0
aCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29u
c3Qgdm9pZCAqcGl4ZWxzKSBvdmVycmlkZTsKICAgICB2b2lkIGdldFF1ZXJ5aXZSb2J1c3RBTkdM
RShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NH
THNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRR
dWVyeU9iamVjdHVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NH
THNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWludCAqcGFyYW1zKSBvdmVy
cmlkZTsKICAgICB2b2lkIGdldEJ1ZmZlclBvaW50ZXJ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3Ro
LCB2b2lkICoqcGFyYW1zKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5j
cHAKaW5kZXggZmViMGJlYmVmMzE1ZjBlMTM4YmE5OWQ2MmViNmNmY2VkNTE5MzY3YS4uMTI3YTNi
OGRiYTNjM2Y0NGNkNzY1ZGQ4ZmM3MTFjZGQ4NzhkZTlhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250
ZXh0R0xBTkdMRS5jcHAKQEAgLTM2MiwxNSArMzYyLDYyIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmdldFNoYWRlclByZWNpc2lvbkZvcm1hdChHQ0dMZW51bSBzaGFkZXJUeXBlLCBH
Q0dMCiAgICAgZ2w6OkdldFNoYWRlclByZWNpc2lvbkZvcm1hdChzaGFkZXJUeXBlLCBwcmVjaXNp
b25UeXBlLCByYW5nZS5kYXRhLCBwcmVjaXNpb24pOwogfQogCi1ib29sIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjp0ZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NH
TGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwg
R0NHTGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgY29uc3Qgdm9p
ZCogcGl4ZWxzKQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dGV4SW1hZ2UyRChHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dM
c2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBm
b3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBwaXhlbHMpCiB7
Ci0gICAgaWYgKHdpZHRoICYmIGhlaWdodCAmJiAhcGl4ZWxzKSB7Ci0gICAgICAgIHN5bnRoZXNp
emVHTEVycm9yKElOVkFMSURfVkFMVUUpOwotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYg
KCFtX2lzRm9yV2ViR0wyKQorICAgICAgICBpbnRlcm5hbGZvcm1hdCA9IHN0YXRpY19jYXN0PEV4
dGVuc2lvbnNHTEFOR0xFJj4oZ2V0RXh0ZW5zaW9ucygpKS5hZGp1c3RXZWJHTDFUZXh0dXJlSW50
ZXJuYWxGb3JtYXQoaW50ZXJuYWxmb3JtYXQsIGZvcm1hdCwgdHlwZSk7CisgICAgaWYgKCFtYWtl
Q29udGV4dEN1cnJlbnQoKSkKKyAgICAgICAgcmV0dXJuOworICAgIGdsOjpUZXhJbWFnZTJEUm9i
dXN0QU5HTEUodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGJv
cmRlciwgZm9ybWF0LCB0eXBlLCBwaXhlbHMuYnVmU2l6ZSwgcGl4ZWxzLmRhdGEpOworICAgIG1f
c3RhdGUudGV4dHVyZVNlZWRDb3VudC5hZGQobV9zdGF0ZS5jdXJyZW50Qm91bmRUZXh0dXJlKCkp
OwogICAgIH0KIAotICAgIHRleEltYWdlMkREaXJlY3QodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxm
b3JtYXQsIHdpZHRoLCBoZWlnaHQsIGJvcmRlciwgZm9ybWF0LCB0eXBlLCBwaXhlbHMpOwotICAg
IHJldHVybiB0cnVlOwordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dGV4SW1hZ2UyRChH
Q0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBH
Q0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51
bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KQoreworICAgIHRleElt
YWdlMkQodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGJvcmRl
ciwgZm9ybWF0LCB0eXBlLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dM
dm9pZCo+KG9mZnNldCksIDApKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
dGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9m
ZiwgR0NHTGludCB5b2ZmLCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xl
bnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IHBpeGVs
cykKK3sKKyAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQorICAgICAgICByZXR1cm47CisK
KyAgICAvLyBGSVhNRTogd2Ugd2lsbCBuZWVkIHRvIGRlYWwgd2l0aCBQaXhlbFN0b3JlIHBhcmFt
cyB3aGVuIGRlYWxpbmcgd2l0aCBpbWFnZSBidWZmZXJzIHRoYXQgZGlmZmVyIGZyb20gdGhlIHN1
YmltYWdlIHNpemUuCisgICAgZ2w6OlRleFN1YkltYWdlMkRSb2J1c3RBTkdMRSh0YXJnZXQsIGxl
dmVsLCB4b2ZmLCB5b2ZmLCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIHBpeGVscy5idWZT
aXplLCBwaXhlbHMuZGF0YSk7CisgICAgbV9zdGF0ZS50ZXh0dXJlU2VlZENvdW50LmFkZChtX3N0
YXRlLmN1cnJlbnRCb3VuZFRleHR1cmUoKSk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OnRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dM
aW50IHhvZmYsIEdDR0xpbnQgeW9mZiwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0
LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KQorewor
ICAgIHRleFN1YkltYWdlMkQodGFyZ2V0LCBsZXZlbCwgeG9mZiwgeW9mZiwgd2lkdGgsIGhlaWdo
dCwgZm9ybWF0LCB0eXBlLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dM
dm9pZCo+KG9mZnNldCksIDApKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
Y29tcHJlc3NlZFRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWwsIEdDR0xlbnVt
IGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIGludCBi
b3JkZXIsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRh
KQoreworICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCisgICAgICAgIHJldHVybjsKKwor
ICAgIGdsOjpDb21wcmVzc2VkVGV4SW1hZ2UyRFJvYnVzdEFOR0xFKHRhcmdldCwgbGV2ZWwsIGlu
dGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIsIGltYWdlU2l6ZSwgZGF0YS5idWZT
aXplLCBkYXRhLmRhdGEpOworICAgIG1fc3RhdGUudGV4dHVyZVNlZWRDb3VudC5hZGQobV9zdGF0
ZS5jdXJyZW50Qm91bmRUZXh0dXJlKCkpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpjb21wcmVzc2VkVGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIGludCBsZXZlbCwgR0NH
TGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwg
aW50IGJvcmRlciwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTGludHB0ciBvZmZzZXQpCit7Cisg
ICAgY29tcHJlc3NlZFRleEltYWdlMkQodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdp
ZHRoLCBoZWlnaHQsIGJvcmRlciwgaW1hZ2VTaXplLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBHQ0dMdm9pZCo+KG9mZnNldCksIDApKTsKK30KKwordm9pZCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6Y29tcHJlc3NlZFRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBp
bnQgbGV2ZWwsIGludCB4b2Zmc2V0LCBpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dM
c2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xT
cGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRhKQoreworICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50
KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGdsOjpDb21wcmVzc2VkVGV4U3ViSW1hZ2UyRFJv
YnVzdEFOR0xFKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQs
IGZvcm1hdCwgaW1hZ2VTaXplLCBkYXRhLmJ1ZlNpemUsIGRhdGEuZGF0YSk7CisgICAgbV9zdGF0
ZS50ZXh0dXJlU2VlZENvdW50LmFkZChtX3N0YXRlLmN1cnJlbnRCb3VuZFRleHR1cmUoKSk7Cit9
CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNvbXByZXNzZWRUZXhTdWJJbWFnZTJE
KEdDR0xlbnVtIHRhcmdldCwgaW50IGxldmVsLCBpbnQgeG9mZnNldCwgaW50IHlvZmZzZXQsIEdD
R0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMc2l6
ZWkgaW1hZ2VTaXplLCBHQ0dMaW50cHRyIG9mZnNldCkKK3sKKyAgICBjb21wcmVzc2VkVGV4U3Vi
SW1hZ2UyRCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBm
b3JtYXQsIGltYWdlU2l6ZSwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NH
THZvaWQqPihvZmZzZXQpLCAwKSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OmRlcHRoUmFuZ2UoR0NHTGNsYW1wZiB6TmVhciwgR0NHTGNsYW1wZiB6RmFyKQpAQCAtODM1LDIw
ICs4ODIsMjAgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6YnVmZmVyRGF0YShHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xzaXplaXB0ciBzaXplLCBHQ0cKICAgICBnbDo6QnVmZmVyRGF0YSh0
YXJnZXQsIHNpemUsIDAsIHVzYWdlKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6YnVmZmVyRGF0YShHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaXB0ciBzaXplLCBjb25zdCB2
b2lkKiBkYXRhLCBHQ0dMZW51bSB1c2FnZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OmJ1ZmZlckRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gZGF0
YSwgR0NHTGVudW0gdXNhZ2UpCiB7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgZ2w6OkJ1ZmZlckRhdGEodGFyZ2V0LCBzaXplLCBkYXRhLCB1
c2FnZSk7CisgICAgZ2w6OkJ1ZmZlckRhdGEodGFyZ2V0LCBkYXRhLmJ1ZlNpemUsIGRhdGEuZGF0
YSwgdXNhZ2UpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpidWZmZXJTdWJE
YXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludHB0ciBvZmZzZXQsIEdDR0xzaXplaXB0ciBzaXpl
LCBjb25zdCB2b2lkKiBkYXRhKQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6YnVmZmVy
U3ViRGF0YShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnRwdHIgb2Zmc2V0LCBHQ0dMU3Bhbjxjb25z
dCBHQ0dMdm9pZD4gZGF0YSkKIHsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBnbDo6QnVmZmVyU3ViRGF0YSh0YXJnZXQsIG9mZnNldCwgc2l6
ZSwgZGF0YSk7CisgICAgZ2w6OkJ1ZmZlclN1YkRhdGEodGFyZ2V0LCBvZmZzZXQsIGRhdGEuYnVm
U2l6ZSwgZGF0YS5kYXRhKTsKIH0KIAogdm9pZCogR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Om1h
cEJ1ZmZlclJhbmdlKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludHB0ciBvZmZzZXQsIEdDR0xzaXpl
aXB0ciBsZW5ndGgsIEdDR0xiaXRmaWVsZCBhY2Nlc3MpCkBAIC05MDksNiArOTU2LDU4IEBAIHZv
aWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnRleFN0b3JhZ2UzRChHQ0dMZW51bSB0YXJnZXQs
IEdDR0xzaXplaSBsZXZlbHMsIEdDCiAgICAgbV9zdGF0ZS50ZXh0dXJlU2VlZENvdW50LmFkZCht
X3N0YXRlLmN1cnJlbnRCb3VuZFRleHR1cmUoKSk7CiB9CiAKK3ZvaWQgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OnRleEltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWwsIGludCBpbnRl
cm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkg
ZGVwdGgsIGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTFNw
YW48Y29uc3QgR0NHTHZvaWQ+IHBpeGVscykKK3sKKyAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVu
dCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBnbDo6VGV4SW1hZ2UzRFJvYnVzdEFOR0xFKHRh
cmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgYm9yZGVy
LCBmb3JtYXQsIHR5cGUsIHBpeGVscy5idWZTaXplLCBwaXhlbHMuZGF0YSk7Cit9CisKK3ZvaWQg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnRleEltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBpbnQg
bGV2ZWwsIGludCBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVp
Z2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVu
dW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpCit7CisgICAgdGV4SW1hZ2UzRCh0YXJnZXQsIGxl
dmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGJvcmRlciwgZm9ybWF0
LCB0eXBlLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMdm9pZCo+KG9m
ZnNldCksIDApKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dGV4U3ViSW1h
Z2UzRChHQ0dMZW51bSB0YXJnZXQsIGludCBsZXZlbCwgaW50IHhvZmZzZXQsIGludCB5b2Zmc2V0
LCBpbnQgem9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6
ZWkgZGVwdGgsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48Y29uc3Qg
R0NHTHZvaWQ+IHBpeGVscykKK3sKKyAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQorICAg
ICAgICByZXR1cm47CisKKyAgICBnbDo6VGV4U3ViSW1hZ2UzRFJvYnVzdEFOR0xFKHRhcmdldCwg
bGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHpvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBm
b3JtYXQsIHR5cGUsIHBpeGVscy5idWZTaXplLCBwaXhlbHMuZGF0YSk7Cit9CisKK3ZvaWQgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OnRleFN1YkltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBpbnQg
bGV2ZWwsIGludCB4b2Zmc2V0LCBpbnQgeW9mZnNldCwgaW50IHpvZmZzZXQsIEdDR0xzaXplaSB3
aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMZW51bSBmb3JtYXQs
IEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KQoreworICAgIHRleFN1YkltYWdlM0Qo
dGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgem9mZnNldCwgd2lkdGgsIGhlaWdodCwg
ZGVwdGgsIGZvcm1hdCwgdHlwZSwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
R0NHTHZvaWQqPihvZmZzZXQpLCAwKSk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OmNvbXByZXNzZWRUZXhJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgaW50IGxldmVsLCBHQ0dM
ZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBH
Q0dMc2l6ZWkgZGVwdGgsIGludCBib3JkZXIsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xTcGFu
PGNvbnN0IEdDR0x2b2lkPiBkYXRhKQoreworICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkp
CisgICAgICAgIHJldHVybjsKKworICAgIGdsOjpDb21wcmVzc2VkVGV4SW1hZ2UzRFJvYnVzdEFO
R0xFKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwg
Ym9yZGVyLCBpbWFnZVNpemUsIGRhdGEuYnVmU2l6ZSwgZGF0YS5kYXRhKTsKK30KKwordm9pZCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y29tcHJlc3NlZFRleEltYWdlM0QoR0NHTGVudW0gdGFy
Z2V0LCBpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgs
IEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgaW50IGJvcmRlciwgR0NHTHNpemVp
IGltYWdlU2l6ZSwgR0NHTGludHB0ciBvZmZzZXQpCit7CisgICAgY29tcHJlc3NlZFRleEltYWdl
M0QodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBi
b3JkZXIsIGltYWdlU2l6ZSwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NH
THZvaWQqPihvZmZzZXQpLCAwKSk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OmNvbXByZXNzZWRUZXhTdWJJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgaW50IGxldmVsLCBpbnQg
eG9mZnNldCwgaW50IHlvZmZzZXQsIGludCB6b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xz
aXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMc2l6ZWkg
aW1hZ2VTaXplLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gZGF0YSkKK3sKKyAgICBpZiAoIW1h
a2VDb250ZXh0Q3VycmVudCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBnbDo6Q29tcHJlc3Nl
ZFRleFN1YkltYWdlM0RSb2J1c3RBTkdMRSh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0
LCB6b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgZm9ybWF0LCBpbWFnZVNpemUsIGRhdGEu
YnVmU2l6ZSwgZGF0YS5kYXRhKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
Y29tcHJlc3NlZFRleFN1YkltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWwsIGludCB4
b2Zmc2V0LCBpbnQgeW9mZnNldCwgaW50IHpvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNp
emVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBp
bWFnZVNpemUsIEdDR0xpbnRwdHIgb2Zmc2V0KQoreworICAgIGNvbXByZXNzZWRUZXhTdWJJbWFn
ZTNEKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHpvZmZzZXQsIHdpZHRoLCBoZWln
aHQsIGRlcHRoLCBmb3JtYXQsIGltYWdlU2l6ZSwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgR0NHTHZvaWQqPihvZmZzZXQpLCAwKSk7Cit9CisKIHZvaWQgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OmdldEFjdGl2ZVVuaWZvcm1zKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwg
Y29uc3QgVmVjdG9yPEdDR0x1aW50PiYgdW5pZm9ybUluZGljZXMsIEdDR0xlbnVtIHBuYW1lLCBW
ZWN0b3I8R0NHTGludD4mIHBhcmFtcykKIHsKICAgICBBU1NFUlQocHJvZ3JhbSk7CkBAIC0xNTAx
LDEyICsxNjAwLDEyIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0xZihH
Q0dMaW50IGxvY2F0aW9uLCBHQ0dMZmxvYXQgdjApCiAgICAgZ2w6OlVuaWZvcm0xZihsb2NhdGlv
biwgdjApOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMWZ2KEdD
R0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBzaXplLCBjb25zdCBHQ0dMZmxvYXQqIGFycmF5KQor
dm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTFmdihHQ0dMaW50IGxvY2F0aW9u
LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGFycmF5KQogewogICAgIGlmICghbWFrZUNvbnRl
eHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGdsOjpVbmlmb3JtMWZ2KGxvY2F0
aW9uLCBzaXplLCBhcnJheSk7CisgICAgZ2w6OlVuaWZvcm0xZnYobG9jYXRpb24sIGFycmF5LmJ1
ZlNpemUsIGFycmF5LmRhdGEpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1
bmlmb3JtMmYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGZsb2F0IHYwLCBHQ0dMZmxvYXQgdjEpCkBA
IC0xNTE3LDEzICsxNjE2LDEzIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZv
cm0yZihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMZmxvYXQgdjAsIEdDR0xmbG9hCiAgICAgZ2w6OlVu
aWZvcm0yZihsb2NhdGlvbiwgdjAsIHYxKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6dW5pZm9ybTJmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgc2l6ZSwgY29uc3Qg
R0NHTGZsb2F0KiBhcnJheSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0y
ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiBhcnJheSkKIHsK
LSAgICAvLyBGSVhNRTogbGVuZ3RoIG5lZWRzIHRvIGJlIGEgbXVsdGlwbGUgb2YgMi4KKyAgICBB
U1NFUlQoIShhcnJheS5idWZTaXplICUgMikpOwogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50
KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGdsOjpVbmlmb3JtMmZ2KGxvY2F0aW9uLCBzaXpl
LCBhcnJheSk7CisgICAgZ2w6OlVuaWZvcm0yZnYobG9jYXRpb24sIGFycmF5LmJ1ZlNpemUgLyAy
LCBhcnJheS5kYXRhKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9y
bTNmKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xmbG9hdCB2MCwgR0NHTGZsb2F0IHYxLCBHQ0dMZmxv
YXQgdjIpCkBAIC0xNTM0LDEzICsxNjMzLDEzIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OnVuaWZvcm0zZihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMZmxvYXQgdjAsIEdDR0xmbG9hCiAg
ICAgZ2w6OlVuaWZvcm0zZihsb2NhdGlvbiwgdjAsIHYxLCB2Mik7CiB9CiAKLXZvaWQgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0zZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVp
IHNpemUsIGNvbnN0IEdDR0xmbG9hdCogYXJyYXkpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjp1bmlmb3JtM2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9h
dD4gYXJyYXkpCiB7Ci0gICAgLy8gRklYTUU6IGxlbmd0aCBuZWVkcyB0byBiZSBhIG11bHRpcGxl
IG9mIDMuCisgICAgQVNTRVJUKCEoYXJyYXkuYnVmU2l6ZSAlIDMpKTsKICAgICBpZiAoIW1ha2VD
b250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBnbDo6VW5pZm9ybTNmdihs
b2NhdGlvbiwgc2l6ZSwgYXJyYXkpOworICAgIGdsOjpVbmlmb3JtM2Z2KGxvY2F0aW9uLCBhcnJh
eS5idWZTaXplIC8gMywgYXJyYXkuZGF0YSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OnVuaWZvcm00ZihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMZmxvYXQgdjAsIEdDR0xmbG9h
dCB2MSwgR0NHTGZsb2F0IHYyLCBHQ0dMZmxvYXQgdjMpCkBAIC0xNTUxLDEzICsxNjUwLDEzIEBA
IHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm00ZihHQ0dMaW50IGxvY2F0aW9u
LCBHQ0dMZmxvYXQgdjAsIEdDR0xmbG9hCiAgICAgZ2w6OlVuaWZvcm00Zihsb2NhdGlvbiwgdjAs
IHYxLCB2MiwgdjMpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3Jt
NGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBzaXplLCBjb25zdCBHQ0dMZmxvYXQqIGFy
cmF5KQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTRmdihHQ0dMaW50IGxv
Y2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGFycmF5KQogewotICAgIC8vIEZJWE1F
OiBsZW5ndGggbmVlZHMgdG8gYmUgYSBtdWx0aXBsZSBvZiA0LgorICAgIEFTU0VSVCghKGFycmF5
LmJ1ZlNpemUgJSA0KSk7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgZ2w6OlVuaWZvcm00ZnYobG9jYXRpb24sIHNpemUsIGFycmF5KTsKKyAg
ICBnbDo6VW5pZm9ybTRmdihsb2NhdGlvbiwgYXJyYXkuYnVmU2l6ZSAvIDQsIGFycmF5LmRhdGEp
OwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMWkoR0NHTGludCBs
b2NhdGlvbiwgR0NHTGludCB2MCkKQEAgLTE1NjgsMTIgKzE2NjcsMTIgQEAgdm9pZCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTFpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xpbnQgdjAp
CiAgICAgZ2w6OlVuaWZvcm0xaShsb2NhdGlvbiwgdjApOwogfQogCi12b2lkIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjp1bmlmb3JtMWl2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBzaXpl
LCBjb25zdCBHQ0dMaW50KiBhcnJheSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVu
aWZvcm0xaXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gYXJyYXkp
CiB7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgZ2w6OlVuaWZvcm0xaXYobG9jYXRpb24sIHNpemUsIGFycmF5KTsKKyAgICBnbDo6VW5pZm9y
bTFpdihsb2NhdGlvbiwgYXJyYXkuYnVmU2l6ZSwgYXJyYXkuZGF0YSk7CiB9CiAKIHZvaWQgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0yaShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMaW50
IHYwLCBHQ0dMaW50IHYxKQpAQCAtMTU4NCwxMyArMTY4MywxMyBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjp1bmlmb3JtMmkoR0NHTGludCBsb2NhdGlvbiwgR0NHTGludCB2MCwgR0NH
TGludCB2MQogICAgIGdsOjpVbmlmb3JtMmkobG9jYXRpb24sIHYwLCB2MSk7CiB9CiAKLXZvaWQg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0yaXYoR0NHTGludCBsb2NhdGlvbiwgR0NH
THNpemVpIHNpemUsIGNvbnN0IEdDR0xpbnQqIGFycmF5KQordm9pZCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6dW5pZm9ybTJpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dM
aW50PiBhcnJheSkKIHsKLSAgICAvLyBGSVhNRTogbGVuZ3RoIG5lZWRzIHRvIGJlIGEgbXVsdGlw
bGUgb2YgMi4KKyAgICBBU1NFUlQoIShhcnJheS5idWZTaXplICUgMikpOwogICAgIGlmICghbWFr
ZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGdsOjpVbmlmb3JtMml2
KGxvY2F0aW9uLCBzaXplLCBhcnJheSk7CisgICAgZ2w6OlVuaWZvcm0yaXYobG9jYXRpb24sIGFy
cmF5LmJ1ZlNpemUgLyAyLCBhcnJheS5kYXRhKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6dW5pZm9ybTNpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xpbnQgdjAsIEdDR0xpbnQg
djEsIEdDR0xpbnQgdjIpCkBAIC0xNjAxLDEzICsxNzAwLDEzIEBAIHZvaWQgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OnVuaWZvcm0zaShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMaW50IHYwLCBHQ0dM
aW50IHYxCiAgICAgZ2w6OlVuaWZvcm0zaShsb2NhdGlvbiwgdjAsIHYxLCB2Mik7CiB9CiAKLXZv
aWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0zaXYoR0NHTGludCBsb2NhdGlvbiwg
R0NHTHNpemVpIHNpemUsIGNvbnN0IEdDR0xpbnQqIGFycmF5KQordm9pZCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6dW5pZm9ybTNpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBH
Q0dMaW50PiBhcnJheSkKIHsKLSAgICAvLyBGSVhNRTogbGVuZ3RoIG5lZWRzIHRvIGJlIGEgbXVs
dGlwbGUgb2YgMy4KKyAgICBBU1NFUlQoIShhcnJheS5idWZTaXplICUgMykpOwogICAgIGlmICgh
bWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGdsOjpVbmlmb3Jt
M2l2KGxvY2F0aW9uLCBzaXplLCBhcnJheSk7CisgICAgZ2w6OlVuaWZvcm0zaXYobG9jYXRpb24s
IGFycmF5LmJ1ZlNpemUgLyAzLCBhcnJheS5kYXRhKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6dW5pZm9ybTRpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xpbnQgdjAsIEdDR0xp
bnQgdjEsIEdDR0xpbnQgdjIsIEdDR0xpbnQgdjMpCkBAIC0xNjE4LDQwICsxNzE3LDM5IEBAIHZv
aWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm00aShHQ0dMaW50IGxvY2F0aW9uLCBH
Q0dMaW50IHYwLCBHQ0dMaW50IHYxCiAgICAgZ2w6OlVuaWZvcm00aShsb2NhdGlvbiwgdjAsIHYx
LCB2MiwgdjMpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtNGl2
KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBzaXplLCBjb25zdCBHQ0dMaW50KiBhcnJheSkK
K3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm00aXYoR0NHTGludCBsb2NhdGlv
biwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gYXJyYXkpCiB7Ci0gICAgLy8gRklYTUU6IGxlbmd0
aCBuZWVkcyB0byBiZSBhIG11bHRpcGxlIG9mIDQuCisgICAgQVNTRVJUKCEoYXJyYXkuYnVmU2l6
ZSAlIDQpKTsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47
CiAKLSAgICBnbDo6VW5pZm9ybTRpdihsb2NhdGlvbiwgc2l6ZSwgYXJyYXkpOworICAgIGdsOjpV
bmlmb3JtNGl2KGxvY2F0aW9uLCBhcnJheS5idWZTaXplIC8gNCwgYXJyYXkuZGF0YSk7CiB9CiAK
LXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXgyZnYoR0NHTGludCBs
b2NhdGlvbiwgR0NHTHNpemVpIHNpemUsIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NH
TGZsb2F0KiBhcnJheSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRy
aXgyZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxj
b25zdCBHQ0dMZmxvYXQ+IGFycmF5KQogewotICAgIC8vIEZJWE1FOiBsZW5ndGggbmVlZHMgdG8g
YmUgYSBtdWx0aXBsZSBvZiA0LgogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIGdsOjpVbmlmb3JtTWF0cml4MmZ2KGxvY2F0aW9uLCBzaXplLCB0
cmFuc3Bvc2UsIGFycmF5KTsKKyAgICBnbDo6VW5pZm9ybU1hdHJpeDJmdihsb2NhdGlvbiwgYXJy
YXkuYnVmU2l6ZSAvIDQsIHRyYW5zcG9zZSwgYXJyYXkuZGF0YSk7CiB9CiAKLXZvaWQgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXgzZnYoR0NHTGludCBsb2NhdGlvbiwgR0NH
THNpemVpIHNpemUsIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiBhcnJh
eSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXgzZnYoR0NHTGlu
dCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxv
YXQ+IGFycmF5KQogewotICAgIC8vIEZJWE1FOiBsZW5ndGggbmVlZHMgdG8gYmUgYSBtdWx0aXBs
ZSBvZiA5LgorICAgIEFTU0VSVCghKGFycmF5LmJ1ZlNpemUgJSA5KSk7CiAgICAgaWYgKCFtYWtl
Q29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZ2w6OlVuaWZvcm1NYXRy
aXgzZnYobG9jYXRpb24sIHNpemUsIHRyYW5zcG9zZSwgYXJyYXkpOworICAgIGdsOjpVbmlmb3Jt
TWF0cml4M2Z2KGxvY2F0aW9uLCBhcnJheS5idWZTaXplIC8gOSwgdHJhbnNwb3NlLCBhcnJheS5k
YXRhKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybU1hdHJpeDRm
dihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgc2l6ZSwgR0NHTGJvb2xlYW4gdHJhbnNwb3Nl
LCBjb25zdCBHQ0dMZmxvYXQqIGFycmF5KQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
dW5pZm9ybU1hdHJpeDRmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2Us
IEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gYXJyYXkpCiB7Ci0gICAgLy8gRklYTUU6IGxlbmd0
aCBuZWVkcyB0byBiZSBhIG11bHRpcGxlIG9mIDE2LgorICAgIEFTU0VSVCghKGFycmF5LmJ1ZlNp
emUgJSAxNikpOwogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIGdsOjpVbmlmb3JtTWF0cml4NGZ2KGxvY2F0aW9uLCBzaXplLCB0cmFuc3Bvc2Us
IGFycmF5KTsKKyAgICBnbDo6VW5pZm9ybU1hdHJpeDRmdihsb2NhdGlvbiwgYXJyYXkuYnVmU2l6
ZSAvIDE2LCB0cmFuc3Bvc2UsIGFycmF5LmRhdGEpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjp1c2VQcm9ncmFtKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSkKQEAgLTE2ODAs
MTIgKzE3NzgsMTIgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmli
MWYoR0NHTHVpbnQgaW5kZXgsIEdDR0xmbG9hdCB2MCkKICAgICBnbDo6VmVydGV4QXR0cmliMWYo
aW5kZXgsIHYwKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0
cmliMWZ2KEdDR0x1aW50IGluZGV4LCBjb25zdCBHQ0dMZmxvYXQqIGFycmF5KQordm9pZCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliMWZ2KEdDR0x1aW50IGluZGV4LCBHQ0dM
U3Bhbjxjb25zdCBHQ0dMZmxvYXQsIDE+IGFycmF5KQogewogICAgIGlmICghbWFrZUNvbnRleHRD
dXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGdsOjpWZXJ0ZXhBdHRyaWIxZnYoaW5k
ZXgsIGFycmF5KTsKKyAgICBnbDo6VmVydGV4QXR0cmliMWZ2KGluZGV4LCBhcnJheS5kYXRhKTsK
IH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliMmYoR0NHTHVp
bnQgaW5kZXgsIEdDR0xmbG9hdCB2MCwgR0NHTGZsb2F0IHYxKQpAQCAtMTY5NiwxMiArMTc5NCwx
MiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2ZXJ0ZXhBdHRyaWIyZihHQ0dMdWlu
dCBpbmRleCwgR0NHTGZsb2F0IHYwLCBHQ0dMZgogICAgIGdsOjpWZXJ0ZXhBdHRyaWIyZihpbmRl
eCwgdjAsIHYxKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0
cmliMmZ2KEdDR0x1aW50IGluZGV4LCBjb25zdCBHQ0dMZmxvYXQqIGFycmF5KQordm9pZCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliMmZ2KEdDR0x1aW50IGluZGV4LCBHQ0dM
U3Bhbjxjb25zdCBHQ0dMZmxvYXQsIDI+IGFycmF5KQogewogICAgIGlmICghbWFrZUNvbnRleHRD
dXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGdsOjpWZXJ0ZXhBdHRyaWIyZnYoaW5k
ZXgsIGFycmF5KTsKKyAgICBnbDo6VmVydGV4QXR0cmliMmZ2KGluZGV4LCBhcnJheS5kYXRhKTsK
IH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliM2YoR0NHTHVp
bnQgaW5kZXgsIEdDR0xmbG9hdCB2MCwgR0NHTGZsb2F0IHYxLCBHQ0dMZmxvYXQgdjIpCkBAIC0x
NzEyLDEyICsxODEwLDEyIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZlcnRleEF0
dHJpYjNmKEdDR0x1aW50IGluZGV4LCBHQ0dMZmxvYXQgdjAsIEdDR0xmCiAgICAgZ2w6OlZlcnRl
eEF0dHJpYjNmKGluZGV4LCB2MCwgdjEsIHYyKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6dmVydGV4QXR0cmliM2Z2KEdDR0x1aW50IGluZGV4LCBjb25zdCBHQ0dMZmxvYXQq
IGFycmF5KQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliM2Z2KEdD
R0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQsIDM+IGFycmF5KQogewogICAg
IGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGdsOjpW
ZXJ0ZXhBdHRyaWIzZnYoaW5kZXgsIGFycmF5KTsKKyAgICBnbDo6VmVydGV4QXR0cmliM2Z2KGlu
ZGV4LCBhcnJheS5kYXRhKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVy
dGV4QXR0cmliNGYoR0NHTHVpbnQgaW5kZXgsIEdDR0xmbG9hdCB2MCwgR0NHTGZsb2F0IHYxLCBH
Q0dMZmxvYXQgdjIsIEdDR0xmbG9hdCB2MykKQEAgLTE3MjgsMTIgKzE4MjYsMTIgQEAgdm9pZCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliNGYoR0NHTHVpbnQgaW5kZXgsIEdD
R0xmbG9hdCB2MCwgR0NHTGYKICAgICBnbDo6VmVydGV4QXR0cmliNGYoaW5kZXgsIHYwLCB2MSwg
djIsIHYzKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmli
NGZ2KEdDR0x1aW50IGluZGV4LCBjb25zdCBHQ0dMZmxvYXQqIGFycmF5KQordm9pZCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliNGZ2KEdDR0x1aW50IGluZGV4LCBHQ0dMU3Bh
bjxjb25zdCBHQ0dMZmxvYXQsIDQ+IGFycmF5KQogewogICAgIGlmICghbWFrZUNvbnRleHRDdXJy
ZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGdsOjpWZXJ0ZXhBdHRyaWI0ZnYoaW5kZXgs
IGFycmF5KTsKKyAgICBnbDo6VmVydGV4QXR0cmliNGZ2KGluZGV4LCBhcnJheS5kYXRhKTsKIH0K
IAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliUG9pbnRlcihHQ0dM
dWludCBpbmRleCwgR0NHTGludCBzaXplLCBHQ0dMZW51bSB0eXBlLCBHQ0dMYm9vbGVhbiBub3Jt
YWxpemVkLCBHQ0dMc2l6ZWkgc3RyaWRlLCBHQ0dMaW50cHRyIG9mZnNldCkKQEAgLTIwMjksMTYg
KzIxMjcsNiBAQCBHQ0dMc2l6ZWlwdHIgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFZlcnRl
eEF0dHJpYk9mZnNldChHQ0dMdWludCBpbmRleCwgR0NHTAogICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxHQ0dMc2l6ZWlwdHI+KHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KHBvaW50ZXIpKTsKIH0K
IAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0
YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZiwgR0NHTGludCB5b2ZmLCBHQ0dMc2l6
ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlw
ZSwgY29uc3Qgdm9pZCogcGl4ZWxzKQotewotICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIC8vIEZJWE1FOiB3ZSB3aWxsIG5lZWQgdG8gZGVhbCB3
aXRoIFBpeGVsU3RvcmUgcGFyYW1zIHdoZW4gZGVhbGluZyB3aXRoIGltYWdlIGJ1ZmZlcnMgdGhh
dCBkaWZmZXIgZnJvbSB0aGUgc3ViaW1hZ2Ugc2l6ZS4KLSAgICBnbDo6VGV4U3ViSW1hZ2UyRCh0
YXJnZXQsIGxldmVsLCB4b2ZmLCB5b2ZmLCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIHBp
eGVscyk7Ci0gICAgbV9zdGF0ZS50ZXh0dXJlU2VlZENvdW50LmFkZChtX3N0YXRlLmN1cnJlbnRC
b3VuZFRleHR1cmUoKSk7Ci19Ci0KIFBsYXRmb3JtR0xPYmplY3QgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OmNyZWF0ZUJ1ZmZlcigpCiB7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkK
QEAgLTIyMDMsMTcgKzIyOTEsNiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpkaXNw
YXRjaENvbnRleHRDaGFuZ2VkTm90aWZpY2F0aW9uKCkKICAgICAgICAgY2xpZW50LT5kaXNwYXRj
aENvbnRleHRDaGFuZ2VkTm90aWZpY2F0aW9uKCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OnRleEltYWdlMkREaXJlY3QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVs
LCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVp
Z2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBjb25z
dCB2b2lkKiBwaXhlbHMpCi17Ci0gICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgaWYgKCFtX2lzRm9yV2ViR0wyICYmIG1fZXh0ZW5zaW9ucykKLSAg
ICAgICAgaW50ZXJuYWxmb3JtYXQgPSBtX2V4dGVuc2lvbnMtPmFkanVzdFdlYkdMMVRleHR1cmVJ
bnRlcm5hbEZvcm1hdChpbnRlcm5hbGZvcm1hdCwgZm9ybWF0LCB0eXBlKTsKLSAgICBnbDo6VGV4
SW1hZ2UyRCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgYm9y
ZGVyLCBmb3JtYXQsIHR5cGUsIHBpeGVscyk7Ci0gICAgbV9zdGF0ZS50ZXh0dXJlU2VlZENvdW50
LmFkZChtX3N0YXRlLmN1cnJlbnRCb3VuZFRleHR1cmUoKSk7Ci19Ci0KIHZvaWQgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OmRyYXdBcnJheXNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTGlu
dCBmaXJzdCwgR0NHTHNpemVpIGNvdW50LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KQogewogICAgIGlm
ICghbWFrZUNvbnRleHRDdXJyZW50KCkpCkBAIC0yNDM2LDIwICsyNTEzLDIwIEBAIHZvaWQgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OmZyYW1lYnVmZmVyVGV4dHVyZUxheWVyKEdDR0xlbnVtIHRh
cmdldCwgR0NHTGVudW0KICAgICBnbDo6RnJhbWVidWZmZXJUZXh0dXJlTGF5ZXIodGFyZ2V0LCBh
dHRhY2htZW50LCB0ZXh0dXJlLCBsZXZlbCwgbGF5ZXIpOwogfQogCi12b2lkIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjppbnZhbGlkYXRlRnJhbWVidWZmZXIoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
c2l6ZWkgbnVtQXR0YWNobWVudHMsIGNvbnN0IEdDR0xlbnVtKiBhdHRhY2htZW50cykKK3ZvaWQg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmludmFsaWRhdGVGcmFtZWJ1ZmZlcihHQ0dMZW51bSB0
YXJnZXQsIEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVtPiBhdHRhY2htZW50cykKIHsKICAgICBpZiAo
IW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBnbDo6SW52YWxp
ZGF0ZUZyYW1lYnVmZmVyKHRhcmdldCwgbnVtQXR0YWNobWVudHMsIGF0dGFjaG1lbnRzKTsKKyAg
ICBnbDo6SW52YWxpZGF0ZUZyYW1lYnVmZmVyKHRhcmdldCwgYXR0YWNobWVudHMuYnVmU2l6ZSwg
YXR0YWNobWVudHMuZGF0YSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Omlu
dmFsaWRhdGVTdWJGcmFtZWJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaSBudW1BdHRh
Y2htZW50cywgY29uc3QgR0NHTGVudW0qIGF0dGFjaG1lbnRzLCBHQ0dMaW50IHgsIEdDR0xpbnQg
eSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KQordm9pZCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6aW52YWxpZGF0ZVN1YkZyYW1lYnVmZmVyKEdDR0xlbnVtIHRhcmdldCwgR0NH
TFNwYW48Y29uc3QgR0NHTGVudW0+IGF0dGFjaG1lbnRzLCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwg
R0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KQogewogICAgIGlmICghbWFrZUNvbnRl
eHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGdsOjpJbnZhbGlkYXRlU3ViRnJh
bWVidWZmZXIodGFyZ2V0LCBudW1BdHRhY2htZW50cywgYXR0YWNobWVudHMsIHgsIHksIHdpZHRo
LCBoZWlnaHQpOworICAgIGdsOjpJbnZhbGlkYXRlU3ViRnJhbWVidWZmZXIodGFyZ2V0LCBhdHRh
Y2htZW50cy5idWZTaXplLCBhdHRhY2htZW50cy5kYXRhLCB4LCB5LCB3aWR0aCwgaGVpZ2h0KTsK
IH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZEJ1ZmZlcihHQ0dMZW51bSBz
cmMpCkBAIC0yNTE3LDg0ICsyNTk0LDkzIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OnVuaWZvcm00dWkoR0NHTGludCBsb2NhdGlvbiwgR0NHTHVpbnQgdjAsIEdDR0x1aW50CiAgICAg
Z2w6OlVuaWZvcm00dWkobG9jYXRpb24sIHYwLCB2MSwgdjIsIHYzKTsKIH0KIAotdm9pZCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTF1aXYoR0NHTGludCBsb2NhdGlvbiwgY29uc3Qg
R0NHTHVpbnQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQor
dm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTF1aXYoR0NHTGludCBsb2NhdGlv
biwgR0NHTFNwYW48Y29uc3QgR0NHTHVpbnQ+IGRhdGEpCiB7CiAgICAgaWYgKCFtYWtlQ29udGV4
dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZ2w6OlVuaWZvcm0xdWl2KGxvY2F0
aW9uLCBzcmNMZW5ndGgsIGRhdGEgKyBzcmNPZmZzZXQpOworICAgIGdsOjpVbmlmb3JtMXVpdihs
b2NhdGlvbiwgZGF0YS5idWZTaXplLCBkYXRhLmRhdGEpOwogfQogCi12b2lkIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjp1bmlmb3JtMnVpdihHQ0dMaW50IGxvY2F0aW9uLCBjb25zdCBHQ0dMdWlu
dCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCit2b2lkIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMnVpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dM
U3Bhbjxjb25zdCBHQ0dMdWludD4gZGF0YSkKIHsKKyAgICBBU1NFUlQoIShkYXRhLmJ1ZlNpemUg
JSAyKSk7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgZ2w6OlVuaWZvcm0ydWl2KGxvY2F0aW9uLCBzcmNMZW5ndGgsIGRhdGEgKyBzcmNPZmZz
ZXQpOworICAgIGdsOjpVbmlmb3JtMnVpdihsb2NhdGlvbiwgZGF0YS5idWZTaXplIC8gMiwgZGF0
YS5kYXRhKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTN1aXYo
R0NHTGludCBsb2NhdGlvbiwgY29uc3QgR0NHTHVpbnQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNl
dCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5p
Zm9ybTN1aXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTHVpbnQ+IGRhdGEp
CiB7CisgICAgQVNTRVJUKCEoZGF0YS5idWZTaXplICUgMykpOwogICAgIGlmICghbWFrZUNvbnRl
eHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGdsOjpVbmlmb3JtM3Vpdihsb2Nh
dGlvbiwgc3JjTGVuZ3RoLCBkYXRhICsgc3JjT2Zmc2V0KTsKKyAgICBnbDo6VW5pZm9ybTN1aXYo
bG9jYXRpb24sIGRhdGEuYnVmU2l6ZSAvIDMsIGRhdGEuZGF0YSk7CiB9CiAKLXZvaWQgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm00dWl2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdD
R0x1aW50KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKK3Zv
aWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm00dWl2KEdDR0xpbnQgbG9jYXRpb24s
IEdDR0xTcGFuPGNvbnN0IEdDR0x1aW50PiBkYXRhKQogeworICAgIEFTU0VSVCghKGRhdGEuYnVm
U2l6ZSAlIDQpKTsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1
cm47CiAKLSAgICBnbDo6VW5pZm9ybTR1aXYobG9jYXRpb24sIHNyY0xlbmd0aCwgZGF0YSArIHNy
Y09mZnNldCk7CisgICAgZ2w6OlVuaWZvcm00dWl2KGxvY2F0aW9uLCBkYXRhLmJ1ZlNpemUgLyA0
LCBkYXRhLmRhdGEpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3Jt
TWF0cml4MngzZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25z
dCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3Ro
KQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybU1hdHJpeDJ4M2Z2KEdDR0xp
bnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZs
b2F0PiBkYXRhKQogeworICAgIEFTU0VSVCghKGRhdGEuYnVmU2l6ZSAlIDYpKTsKICAgICBpZiAo
IW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBnbDo6VW5pZm9y
bU1hdHJpeDJ4M2Z2KGxvY2F0aW9uLCBzcmNMZW5ndGgsIHRyYW5zcG9zZSwgZGF0YSArIHNyY09m
ZnNldCk7CisgICAgZ2w6OlVuaWZvcm1NYXRyaXgyeDNmdihsb2NhdGlvbiwgZGF0YS5idWZTaXpl
IC8gNiwgdHJhbnNwb3NlLCBkYXRhLmRhdGEpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjp1bmlmb3JtTWF0cml4M3gyZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4g
dHJhbnNwb3NlLCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NH
THVpbnQgc3JjTGVuZ3RoKQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybU1h
dHJpeDN4MmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNw
YW48Y29uc3QgR0NHTGZsb2F0PiBkYXRhKQogeworICAgIEFTU0VSVCghKGRhdGEuYnVmU2l6ZSAl
IDYpKTsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBnbDo6VW5pZm9ybU1hdHJpeDN4MmZ2KGxvY2F0aW9uLCBzcmNMZW5ndGgsIHRyYW5zcG9z
ZSwgZGF0YSArIHNyY09mZnNldCk7CisgICAgZ2w6OlVuaWZvcm1NYXRyaXgzeDJmdihsb2NhdGlv
biwgZGF0YS5idWZTaXplIC8gNiwgdHJhbnNwb3NlLCBkYXRhLmRhdGEpOwogfQogCi12b2lkIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4Mng0ZnYoR0NHTGludCBsb2NhdGlv
biwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50
IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6dW5pZm9ybU1hdHJpeDJ4NGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRy
YW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiBkYXRhKQogeworICAgIEFTU0VSVCgh
KGRhdGEuYnVmU2l6ZSAlIDgpKTsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBnbDo6VW5pZm9ybU1hdHJpeDJ4NGZ2KGxvY2F0aW9uLCBzcmNM
ZW5ndGgsIHRyYW5zcG9zZSwgZGF0YSArIHNyY09mZnNldCk7CisgICAgZ2w6OlVuaWZvcm1NYXRy
aXgyeDRmdihsb2NhdGlvbiwgZGF0YS5idWZTaXplIC8gOCwgdHJhbnNwb3NlLCBkYXRhLmRhdGEp
OwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4NHgyZnYo
R0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHQ0dMZmxvYXQq
IGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQordm9pZCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybU1hdHJpeDR4MmZ2KEdDR0xpbnQgbG9jYXRpb24s
IEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiBkYXRhKQog
eworICAgIEFTU0VSVCghKGRhdGEuYnVmU2l6ZSAlIDgpKTsKICAgICBpZiAoIW1ha2VDb250ZXh0
Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBnbDo6VW5pZm9ybU1hdHJpeDR4MmZ2
KGxvY2F0aW9uLCBzcmNMZW5ndGgsIHRyYW5zcG9zZSwgZGF0YSArIHNyY09mZnNldCk7CisgICAg
Z2w6OlVuaWZvcm1NYXRyaXg0eDJmdihsb2NhdGlvbiwgZGF0YS5idWZTaXplIC8gOCwgdHJhbnNw
b3NlLCBkYXRhLmRhdGEpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlm
b3JtTWF0cml4M3g0ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBj
b25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVu
Z3RoKQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybU1hdHJpeDN4NGZ2KEdD
R0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NH
TGZsb2F0PiBkYXRhKQogeworICAgIEFTU0VSVCghKGRhdGEuYnVmU2l6ZSAlIDEyKSk7CiAgICAg
aWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZ2w6OlVu
aWZvcm1NYXRyaXgzeDRmdihsb2NhdGlvbiwgc3JjTGVuZ3RoLCB0cmFuc3Bvc2UsIGRhdGEgKyBz
cmNPZmZzZXQpOworICAgIGdsOjpVbmlmb3JtTWF0cml4M3g0ZnYobG9jYXRpb24sIGRhdGEuYnVm
U2l6ZSAvIDEyLCB0cmFuc3Bvc2UsIGRhdGEuZGF0YSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXg0eDNmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9v
bGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0
LCBHQ0dMdWludCBzcmNMZW5ndGgpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlm
b3JtTWF0cml4NHgzZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBH
Q0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEpCiB7CisgICAgQVNTRVJUKCEoZGF0YS5idWZT
aXplICUgMTIpKTsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1
cm47CiAKLSAgICBnbDo6VW5pZm9ybU1hdHJpeDR4M2Z2KGxvY2F0aW9uLCBzcmNMZW5ndGgsIHRy
YW5zcG9zZSwgZGF0YSArIHNyY09mZnNldCk7CisgICAgZ2w6OlVuaWZvcm1NYXRyaXg0eDNmdihs
b2NhdGlvbiwgZGF0YS5idWZTaXplIC8gMTIsIHRyYW5zcG9zZSwgZGF0YS5kYXRhKTsKIH0KIAog
dm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliSTRpKEdDR0x1aW50IGlu
ZGV4LCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTGludCB6LCBHQ0dMaW50IHcpCkBAIC0yNjA1
LDEyICsyNjkxLDEyIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJp
Ykk0aShHQ0dMdWludCBpbmRleCwgR0NHTGludCB4LCBHQ0dMaW50CiAgICAgZ2w6OlZlcnRleEF0
dHJpYkk0aShpbmRleCwgeCwgeSwgeiwgdyk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OnZlcnRleEF0dHJpYkk0aXYoR0NHTHVpbnQgaW5kZXgsIGNvbnN0IEdDR0xpbnQqIHZh
bHVlcykKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYkk0aXYoR0NH
THVpbnQgaW5kZXgsIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQsIDQ+IHZhbHVlcykKIHsKICAgICBp
ZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBnbDo6VmVy
dGV4QXR0cmliSTRpdihpbmRleCwgdmFsdWVzKTsKKyAgICBnbDo6VmVydGV4QXR0cmliSTRpdihp
bmRleCwgdmFsdWVzLmRhdGEpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2
ZXJ0ZXhBdHRyaWJJNHVpKEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCB4LCBHQ0dMdWludCB5LCBH
Q0dMdWludCB6LCBHQ0dMdWludCB3KQpAQCAtMjYyMSwxMiArMjcwNywxMiBAQCB2b2lkIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjp2ZXJ0ZXhBdHRyaWJJNHVpKEdDR0x1aW50IGluZGV4LCBHQ0dM
dWludCB4LCBHQ0dMdQogICAgIGdsOjpWZXJ0ZXhBdHRyaWJJNHVpKGluZGV4LCB4LCB5LCB6LCB3
KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliSTR1aXYo
R0NHTHVpbnQgaW5kZXgsIGNvbnN0IEdDR0x1aW50KiB2YWx1ZXMpCit2b2lkIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjp2ZXJ0ZXhBdHRyaWJJNHVpdihHQ0dMdWludCBpbmRleCwgR0NHTFNwYW48
Y29uc3QgR0NHTHVpbnQsIDQ+IHZhbHVlcykKIHsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVu
dCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBnbDo6VmVydGV4QXR0cmliSTR1aXYoaW5kZXgs
IHZhbHVlcyk7CisgICAgZ2w6OlZlcnRleEF0dHJpYkk0dWl2KGluZGV4LCB2YWx1ZXMuZGF0YSk7
CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmRyYXdSYW5nZUVsZW1lbnRzKEdD
R0xlbnVtIG1vZGUsIEdDR0x1aW50IHN0YXJ0LCBHQ0dMdWludCBlbmQsIEdDR0xzaXplaSBjb3Vu
dCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpCkBAIC0yNjM3LDM2ICsyNzIzLDM2
IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmRyYXdSYW5nZUVsZW1lbnRzKEdDR0xl
bnVtIG1vZGUsIEdDR0x1aW50IHN0YXJ0LCBHCiAgICAgZ2w6OkRyYXdSYW5nZUVsZW1lbnRzKG1v
ZGUsIHN0YXJ0LCBlbmQsIGNvdW50LCB0eXBlLCByZWludGVycHJldF9jYXN0PHZvaWQqPihvZmZz
ZXQpKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6ZHJhd0J1ZmZlcnMoR0NH
THNpemVpIG4sIGNvbnN0IEdDR0xlbnVtKiBidWZzKQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6ZHJhd0J1ZmZlcnMoR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+IGJ1ZnMpCiB7CiAgICAg
aWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZ2w6OkRy
YXdCdWZmZXJzKG4sIGJ1ZnMpOworICAgIGdsOjpEcmF3QnVmZmVycyhidWZzLmJ1ZlNpemUsIGJ1
ZnMuZGF0YSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNsZWFyQnVmZmVy
aXYoR0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50IGRyYXdidWZmZXIsIGNvbnN0IEdDR0xpbnQqIHZh
bHVlcywgR0NHTHVpbnQgc3JjT2Zmc2V0KQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
Y2xlYXJCdWZmZXJpdihHQ0dMZW51bSBidWZmZXIsIEdDR0xpbnQgZHJhd2J1ZmZlciwgR0NHTFNw
YW48Y29uc3QgR0NHTGludD4gdmFsdWVzKQogewogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50
KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGdsOjpDbGVhckJ1ZmZlcml2KGJ1ZmZlciwgZHJh
d2J1ZmZlciwgdmFsdWVzICsgc3JjT2Zmc2V0KTsKKyAgICBnbDo6Q2xlYXJCdWZmZXJpdihidWZm
ZXIsIGRyYXdidWZmZXIsIHZhbHVlcy5kYXRhKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6Y2xlYXJCdWZmZXJ1aXYoR0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50IGRyYXdidWZm
ZXIsIGNvbnN0IEdDR0x1aW50KiB2YWx1ZXMsIEdDR0x1aW50IHNyY09mZnNldCkKK3ZvaWQgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OmNsZWFyQnVmZmVydWl2KEdDR0xlbnVtIGJ1ZmZlciwgR0NH
TGludCBkcmF3YnVmZmVyLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdWludD4gdmFsdWVzKQogewogICAg
IGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGdsOjpD
bGVhckJ1ZmZlcnVpdihidWZmZXIsIGRyYXdidWZmZXIsIHZhbHVlcyArIHNyY09mZnNldCk7Cisg
ICAgZ2w6OkNsZWFyQnVmZmVydWl2KGJ1ZmZlciwgZHJhd2J1ZmZlciwgdmFsdWVzLmRhdGEpOwog
fQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjbGVhckJ1ZmZlcmZ2KEdDR0xlbnVt
IGJ1ZmZlciwgR0NHTGludCBkcmF3YnVmZmVyLCBjb25zdCBHQ0dMZmxvYXQqIHZhbHVlcywgR0NH
THVpbnQgc3JjT2Zmc2V0KQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y2xlYXJCdWZm
ZXJmdihHQ0dMZW51bSBidWZmZXIsIEdDR0xpbnQgZHJhd2J1ZmZlciwgR0NHTFNwYW48Y29uc3Qg
R0NHTGZsb2F0PiB2YWx1ZXMpCiB7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgZ2w6OkNsZWFyQnVmZmVyZnYoYnVmZmVyLCBkcmF3YnVmZmVy
LCB2YWx1ZXMgKyBzcmNPZmZzZXQpOworICAgIGdsOjpDbGVhckJ1ZmZlcmZ2KGJ1ZmZlciwgZHJh
d2J1ZmZlciwgdmFsdWVzLmRhdGEpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpjbGVhckJ1ZmZlcmZpKEdDR0xlbnVtIGJ1ZmZlciwgR0NHTGludCBkcmF3YnVmZmVyLCBHQ0dM
ZmxvYXQgZGVwdGgsIEdDR0xpbnQgc3RlbmNpbCkKQEAgLTI4NTQsOTQgKzI5NDAsNiBAQCBWZWN0
b3I8R0NHTHVpbnQ+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRVbmlmb3JtSW5kaWNlcyhQ
bGF0Zm9ybUdMT2JqZWN0IHBybwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXZvaWQgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0xZnYoR0NHTGludCBsb2NhdGlvbiwgY29uc3QgR0NH
TGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKLXsK
LSAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBn
bDo6VW5pZm9ybTFmdihsb2NhdGlvbiwgc3JjTGVuZ3RoLCBkYXRhICsgc3JjT2Zmc2V0KTsKLX0K
LQotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTJmdihHQ0dMaW50IGxvY2F0
aW9uLCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQg
c3JjTGVuZ3RoKQotewotICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIGdsOjpVbmlmb3JtMmZ2KGxvY2F0aW9uLCBzcmNMZW5ndGgsIGRhdGEgKyBz
cmNPZmZzZXQpOwotfQotCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtM2Z2
KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zm
c2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCi17Ci0gICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQo
KSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OlVuaWZvcm0zZnYobG9jYXRpb24sIHNyY0xl
bmd0aCwgZGF0YSArIHNyY09mZnNldCk7Ci19Ci0KLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OnVuaWZvcm00ZnYoR0NHTGludCBsb2NhdGlvbiwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBH
Q0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKLXsKLSAgICBpZiAoIW1ha2VD
b250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6VW5pZm9ybTRmdihs
b2NhdGlvbiwgc3JjTGVuZ3RoLCBkYXRhICsgc3JjT2Zmc2V0KTsKLX0KLQotdm9pZCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTFpdihHQ0dMaW50IGxvY2F0aW9uLCBjb25zdCBHQ0dM
aW50KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKLXsKLSAg
ICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6
VW5pZm9ybTFpdihsb2NhdGlvbiwgc3JjTGVuZ3RoLCBkYXRhICsgc3JjT2Zmc2V0KTsKLX0KLQot
dm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTJpdihHQ0dMaW50IGxvY2F0aW9u
LCBjb25zdCBHQ0dMaW50KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xl
bmd0aCkKLXsKLSAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47
Ci0KLSAgICBnbDo6VW5pZm9ybTJpdihsb2NhdGlvbiwgc3JjTGVuZ3RoLCBkYXRhICsgc3JjT2Zm
c2V0KTsKLX0KLQotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTNpdihHQ0dM
aW50IGxvY2F0aW9uLCBjb25zdCBHQ0dMaW50KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdD
R0x1aW50IHNyY0xlbmd0aCkKLXsKLSAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQotICAg
ICAgICByZXR1cm47Ci0KLSAgICBnbDo6VW5pZm9ybTNpdihsb2NhdGlvbiwgc3JjTGVuZ3RoLCBk
YXRhICsgc3JjT2Zmc2V0KTsKLX0KLQotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5p
Zm9ybTRpdihHQ0dMaW50IGxvY2F0aW9uLCBjb25zdCBHQ0dMaW50KiBkYXRhLCBHQ0dMdWludCBz
cmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKLXsKLSAgICBpZiAoIW1ha2VDb250ZXh0Q3Vy
cmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6VW5pZm9ybTRpdihsb2NhdGlvbiwg
c3JjTGVuZ3RoLCBkYXRhICsgc3JjT2Zmc2V0KTsKLX0KLQotdm9pZCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6dW5pZm9ybU1hdHJpeDJmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0
cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dM
dWludCBzcmNMZW5ndGgpCi17Ci0gICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgZ2w6OlVuaWZvcm1NYXRyaXgyZnYobG9jYXRpb24sIHNyY0xlbmd0
aCwgdHJhbnNwb3NlLCBkYXRhICsgc3JjT2Zmc2V0KTsKLX0KLQotdm9pZCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6dW5pZm9ybU1hdHJpeDNmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVh
biB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBH
Q0dMdWludCBzcmNMZW5ndGgpCi17Ci0gICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OlVuaWZvcm1NYXRyaXgzZnYobG9jYXRpb24sIHNyY0xl
bmd0aCwgdHJhbnNwb3NlLCBkYXRhICsgc3JjT2Zmc2V0KTsKLX0KLQotdm9pZCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6dW5pZm9ybU1hdHJpeDRmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9v
bGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0
LCBHQ0dMdWludCBzcmNMZW5ndGgpCi17Ci0gICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OlVuaWZvcm1NYXRyaXg0ZnYobG9jYXRpb24sIHNy
Y0xlbmd0aCwgdHJhbnNwb3NlLCBkYXRhICsgc3JjT2Zmc2V0KTsKLX0KLQogdm9pZCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6Z2V0QWN0aXZlVW5pZm9ybUJsb2NraXYoR0NHTHVpbnQgcHJvZ3Jh
bSwgR0NHTHVpbnQgdW5pZm9ybUJsb2NrSW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxH
Q0dMaW50PiBwYXJhbXMpCiB7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0dyYXBoaWNzQ29udGV4
dEdMQ1ZBTkdMRS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9HcmFw
aGljc0NvbnRleHRHTENWQU5HTEUuY3BwCmluZGV4IGY5YmZjYTNjNDhjZTI4ZWFiMTk0NGE0ZjVl
ODUzMGE0MjVmODYyZmUuLjAzNDgwNmE4YmNkYTIyOWJjNmE4MDg3OTM0YTEwMzAzMjQ2MWYxMDQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0dyYXBoaWNz
Q29udGV4dEdMQ1ZBTkdMRS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY3YvR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFLmNwcApAQCAtMjM1LDE4ICsyMzUsMTMgQEAg
c3RydWN0IEdMZmxvYXRDb2xvcnMgewogfTsKIAogc3RydWN0IFlDYkNyTWF0cml4IHsKLSAgICB1
bmlvbiB7CiAgICAgICAgIEdMZmxvYXQgcm93c1s0XVs0XTsKLSAgICAgICAgR0xmbG9hdCBkYXRh
WzE2XTsKLSAgICB9OwogCiAgICAgY29uc3RleHByIFlDYkNyTWF0cml4KFBpeGVsUmFuZ2UsIEdM
ZmxvYXQgY2JDb2VmZmljaWVudCwgR0xmbG9hdCBjckNvZWZmaWNpZW50KTsKIAotICAgIG9wZXJh
dG9yIFZlY3RvcjxHTGZsb2F0PigpIGNvbnN0CisgICAgb3BlcmF0b3IgR0NHTFNwYW48Y29uc3Qg
R0xmbG9hdCwgMTY+KCkgY29uc3QKICAgICB7Ci0gICAgICAgIFZlY3RvcjxHTGZsb2F0PiB2ZWN0
b3I7Ci0gICAgICAgIHZlY3Rvci5hcHBlbmQoZGF0YSwgMTYpOwotICAgICAgICByZXR1cm4gdmVj
dG9yOworICAgICAgICByZXR1cm4gbWFrZUdDR0xTcGFuPDE2Pigmcm93c1swXVswXSk7CiAgICAg
fQogCiAgICAgY29uc3RleHByIEdMZmxvYXRDb2xvciBvcGVyYXRvciooY29uc3QgR0xmbG9hdENv
bG9yJikgY29uc3Q7CkBAIC0zMTgsMTAgKzMxMywxMCBAQCBjb25zdGV4cHIgR0xmbG9hdENvbG9y
IFlDYkNyTWF0cml4OjpvcGVyYXRvciooY29uc3QgR0xmbG9hdENvbG9yJiBjb2xvcikgY29uc3QK
ICAgICApOwogfQogCi1zdGF0aWMgY29uc3QgVmVjdG9yPEdMZmxvYXQ+IFlDYkNyVG9SR0JNYXRy
aXhGb3JSYW5nZUFuZFRyYW5zZmVyRnVuY3Rpb24oUGl4ZWxSYW5nZSByYW5nZSwgVHJhbnNmZXJG
dW5jdGlvbkNWIHRyYW5zZmVyRnVuY3Rpb24pCitzdGF0aWMgR0NHTFNwYW48Y29uc3QgR0xmbG9h
dCwgMTY+IFlDYkNyVG9SR0JNYXRyaXhGb3JSYW5nZUFuZFRyYW5zZmVyRnVuY3Rpb24oUGl4ZWxS
YW5nZSByYW5nZSwgVHJhbnNmZXJGdW5jdGlvbkNWIHRyYW5zZmVyRnVuY3Rpb24pCiB7CiAgICAg
dXNpbmcgTWFwS2V5ID0gc3RkOjpwYWlyPFBpeGVsUmFuZ2UsIFRyYW5zZmVyRnVuY3Rpb25DVj47
Ci0gICAgdXNpbmcgTWF0cml4TWFwID0gU3RkTWFwPE1hcEtleSwgVmVjdG9yPEdMZmxvYXQ+PjsK
KyAgICB1c2luZyBNYXRyaXhNYXAgPSBTdGRNYXA8TWFwS2V5LCBjb25zdCBZQ2JDck1hdHJpeCY+
OwogCiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPE1hdHJpeE1hcD4gbWF0cmljZXM7CiAgICAg
c3RhdGljIGRpc3BhdGNoX29uY2VfdCBvbmNlVG9rZW47CkBAIC01MjYsNyArNTIxLDcgQEAgYm9v
bCBHcmFwaGljc0NvbnRleHRHTENWQU5HTEU6OmluaXRpYWxpemVVVkNvbnRleHRPYmplY3RzKCkK
ICAgICBmbG9hdCB2ZXJ0aWNlc1sxMl0gPSB7IC0xLCAtMSwgMSwgLTEsIDEsIDEsIDEsIDEsIC0x
LCAxLCAtMSwgLTEgfTsKIAogICAgIG1fY29udGV4dC0+YmluZEJ1ZmZlcihHcmFwaGljc0NvbnRl
eHRHTDo6QVJSQVlfQlVGRkVSLCBtX3l1dlZlcnRleEJ1ZmZlcik7Ci0gICAgbV9jb250ZXh0LT5i
dWZmZXJEYXRhKEdyYXBoaWNzQ29udGV4dEdMOjpBUlJBWV9CVUZGRVIsIHNpemVvZih2ZXJ0aWNl
cyksIHZlcnRpY2VzLCBHcmFwaGljc0NvbnRleHRHTDo6U1RBVElDX0RSQVcpOworICAgIG1fY29u
dGV4dC0+YnVmZmVyRGF0YShHcmFwaGljc0NvbnRleHRHTDo6QVJSQVlfQlVGRkVSLCBHQ0dMU3Bh
bjxjb25zdCBHQ0dMdm9pZD4odmVydGljZXMsIHNpemVvZih2ZXJ0aWNlcykpLCBHcmFwaGljc0Nv
bnRleHRHTDo6U1RBVElDX0RSQVcpOwogICAgIG1fY29udGV4dC0+ZW5hYmxlVmVydGV4QXR0cmli
QXJyYXkobV95dXZQb3NpdGlvbkF0dHJpYnV0ZUxvY2F0aW9uKTsKICAgICBtX2NvbnRleHQtPnZl
cnRleEF0dHJpYlBvaW50ZXIobV95dXZQb3NpdGlvbkF0dHJpYnV0ZUxvY2F0aW9uLCAyLCBHcmFw
aGljc0NvbnRleHRHTDo6RkxPQVQsIGZhbHNlLCAwLCAwKTsKIApAQCAtNjI1LDcgKzYyMCw3IEBA
IGJvb2wgR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFOjpjb3B5UGl4ZWxCdWZmZXJUb1RleHR1cmUo
Q1ZQaXhlbEJ1ZmZlclJlZiBpbWFnZSwKICAgICBtX2NvbnRleHQtPnRleFBhcmFtZXRlcmkoR3Jh
cGhpY3NDb250ZXh0R0w6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4dEdMOjpURVhUVVJFX01J
Tl9GSUxURVIsIEdyYXBoaWNzQ29udGV4dEdMOjpMSU5FQVIpOwogICAgIG1fY29udGV4dC0+dGV4
UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0
R0w6OlRFWFRVUkVfV1JBUF9TLCBHcmFwaGljc0NvbnRleHRHTDo6Q0xBTVBfVE9fRURHRSk7CiAg
ICAgbV9jb250ZXh0LT50ZXhQYXJhbWV0ZXJpKEdyYXBoaWNzQ29udGV4dEdMOjpURVhUVVJFXzJE
LCBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV9XUkFQX1QsIEdyYXBoaWNzQ29udGV4dEdMOjpD
TEFNUF9UT19FREdFKTsKLSAgICBtX2NvbnRleHQtPnRleEltYWdlMkREaXJlY3QoR3JhcGhpY3ND
b250ZXh0R0w6OlRFWFRVUkVfMkQsIGxldmVsLCBpbnRlcm5hbEZvcm1hdCwgd2lkdGgsIGhlaWdo
dCwgMCwgZm9ybWF0LCB0eXBlLCBudWxscHRyKTsKKyAgICBnbDo6VGV4SW1hZ2UyRChHTF9URVhU
VVJFXzJELCBsZXZlbCwgaW50ZXJuYWxGb3JtYXQsIHdpZHRoLCBoZWlnaHQsIDAsIGZvcm1hdCwg
dHlwZSwgbnVsbHB0cik7CiAKICAgICBtX2NvbnRleHQtPmZyYW1lYnVmZmVyVGV4dHVyZTJEKEdy
YXBoaWNzQ29udGV4dEdMOjpGUkFNRUJVRkZFUiwgR3JhcGhpY3NDb250ZXh0R0w6OkNPTE9SX0FU
VEFDSE1FTlQwLCBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV8yRCwgb3V0cHV0VGV4dHVyZSwg
bGV2ZWwpOwogICAgIEdDR0xlbnVtIHN0YXR1cyA9IG1fY29udGV4dC0+Y2hlY2tGcmFtZWJ1ZmZl
clN0YXR1cyhHcmFwaGljc0NvbnRleHRHTDo6RlJBTUVCVUZGRVIpOwpAQCAtNjgyLDggKzY3Nyw4
IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFOjpjb3B5UGl4ZWxCdWZmZXJUb1RleHR1
cmUoQ1ZQaXhlbEJ1ZmZlclJlZiBpbWFnZSwKIAogICAgIGF1dG8gcmFuZ2UgPSBwaXhlbFJhbmdl
RnJvbVBpeGVsRm9ybWF0KHBpeGVsRm9ybWF0KTsKICAgICBhdXRvIHRyYW5zZmVyRnVuY3Rpb24g
PSB0cmFuc2ZlckZ1bmN0aW9uRnJvbVN0cmluZygoQ0ZTdHJpbmdSZWYpQ1ZCdWZmZXJHZXRBdHRh
Y2htZW50KGltYWdlLCBrQ1ZJbWFnZUJ1ZmZlcllDYkNyTWF0cml4S2V5LCBuaWwpKTsKLSAgICBh
dXRvJiBjb2xvck1hdHJpeCA9IFlDYkNyVG9SR0JNYXRyaXhGb3JSYW5nZUFuZFRyYW5zZmVyRnVu
Y3Rpb24ocmFuZ2UsIHRyYW5zZmVyRnVuY3Rpb24pOwotICAgIG1fY29udGV4dC0+dW5pZm9ybU1h
dHJpeDRmdihtX2NvbG9yTWF0cml4VW5pZm9ybUxvY2F0aW9uLCAxLCBHTF9GQUxTRSwgY29sb3JN
YXRyaXguZGF0YSgpKTsKKyAgICBhdXRvIGNvbG9yTWF0cml4ID0gWUNiQ3JUb1JHQk1hdHJpeEZv
clJhbmdlQW5kVHJhbnNmZXJGdW5jdGlvbihyYW5nZSwgdHJhbnNmZXJGdW5jdGlvbik7CisgICAg
bV9jb250ZXh0LT51bmlmb3JtTWF0cml4NGZ2KG1fY29sb3JNYXRyaXhVbmlmb3JtTG9jYXRpb24s
IEdMX0ZBTFNFLCBjb2xvck1hdHJpeCk7CiAKICAgICAvLyBEbyB0aGUgYWN0dWFsIGRyYXdpbmcu
CiAgICAgbV9jb250ZXh0LT5kcmF3QXJyYXlzKEdyYXBoaWNzQ29udGV4dEdMOjpUUklBTkdMRVMs
IDAsIDYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmNwcAppbmRleCAxNzc4NmE2NGJhNGUxZGEw
MDk2NGVhZTk5N2QyOTI3NjRkYWQxODk2Li43ZWM4MWNmNGFlNTc3MmNhZTk3Mjg4YmM4MGUzNjU2
NDZkNjI3YzdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmNwcApAQCAtMjA4LDE0ICsyMDgs
MTQgQEAgYm9vbCBFeHRlbnNpb25zR0xPcGVuR0w6OnN1cHBvcnRzRXh0ZW5zaW9uKGNvbnN0IFN0
cmluZyYgbmFtZSkKICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKG5h
bWUpOwogfQogCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTDo6ZHJhd0J1ZmZlcnNFWFQoR0NHTHNp
emVpIG4sIGNvbnN0IEdDR0xlbnVtKiBidWZzKQordm9pZCBFeHRlbnNpb25zR0xPcGVuR0w6OmRy
YXdCdWZmZXJzRVhUKEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVtPiBidWZzKQogewogICAgIGlmICgh
bV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAg
Ly8gIEZJWE1FOiBpbXBsZW1lbnQgc3VwcG9ydCBmb3Igb3RoZXIgcGxhdGZvcm1zLgogI2lmIFBM
QVRGT1JNKEdUSykKLSAgICA6OmdsRHJhd0J1ZmZlcnMobiwgYnVmcyk7CisgICAgOjpnbERyYXdC
dWZmZXJzKGJ1ZnMuYnVmU2l6ZSwgYnVmcy5kYXRhKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFN
KG4pOwogICAgIFVOVVNFRF9QQVJBTShidWZzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuaAppbmRl
eCBkM2JlOGNjMjhjMTdjMmRmNWQzYjQ4NjZiYjNjNWY5NDRjNDU1ZjIxLi40OTYyODljZWEwZTZh
MDlkNmRiNzMxZjg2OGI1NDk5M2E0NDQ0OWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5oCkBA
IC01MCw3ICs1MCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGluc2VydEV2ZW50TWFya2VyRVhUKGNv
bnN0IFN0cmluZyYpIG92ZXJyaWRlOwogICAgIHZvaWQgcHVzaEdyb3VwTWFya2VyRVhUKGNvbnN0
IFN0cmluZyYpIG92ZXJyaWRlOwogICAgIHZvaWQgcG9wR3JvdXBNYXJrZXJFWFQodm9pZCkgb3Zl
cnJpZGU7Ci0gICAgdm9pZCBkcmF3QnVmZmVyc0VYVChHQ0dMc2l6ZWksIGNvbnN0IEdDR0xlbnVt
Kikgb3ZlcnJpZGU7CisgICAgdm9pZCBkcmF3QnVmZmVyc0VYVChHQ0dMU3Bhbjxjb25zdCBHQ0dM
ZW51bT4pIG92ZXJyaWRlOwogCiAgICAgdm9pZCBkcmF3QXJyYXlzSW5zdGFuY2VkKEdDR0xlbnVt
IG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xzaXplaSBjb3VudCwgR0NHTHNpemVpIHByaW1jb3Vu
dCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkcmF3RWxlbWVudHNJbnN0YW5jZWQoR0NHTGVudW0gbW9k
ZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBsb25nIGxvbmcgb2Zmc2V0LCBHQ0dM
c2l6ZWkgcHJpbWNvdW50KSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENv
bW1vbi5jcHAKaW5kZXggNjg2ZjJkNTExNDhlZjliMTJmZWYxMGIzYzJhYzcwYjJhMzVkMjE1Ny4u
NDNiNTE2MWZiYTc3OGY4ZmI0Mzg0YjFiYzJkYjM4ZWNmNmM0ODNlYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENv
bW1vbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4
dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5jcHAKQEAgLTI1OSwxMSArMjU5LDYgQEAgdm9pZCBFeHRl
bnNpb25zR0xPcGVuR0xDb21tb246OnJlYWRQaXhlbHNSb2J1c3RBTkdMRShpbnQsIGludCwgR0NH
THNpemVpLCBHQ0dMc2kKICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFM
SURfT1BFUkFUSU9OKTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OnRleElt
YWdlMkRSb2J1c3RBTkdMRShHQ0dMZW51bSwgaW50LCBpbnQsIEdDR0xzaXplaSwgR0NHTHNpemVp
LCBpbnQsIEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTHNpemVpLCBjb25zdCB2b2lkICopCi17Ci0g
ICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19
Ci0KIHZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjp0ZXhQYXJhbWV0ZXJmdlJvYnVzdEFO
R0xFKEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTHNpemVpLCBjb25zdCBHQ0dMZmxvYXQgKikKIHsK
ICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsK
QEAgLTI3NCw0MiArMjY5LDYgQEAgdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OnRleFBh
cmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0cKICAgICBtX2NvbnRl
eHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKIH0KIAotdm9pZCBF
eHRlbnNpb25zR0xPcGVuR0xDb21tb246OnRleFN1YkltYWdlMkRSb2J1c3RBTkdMRShHQ0dMZW51
bSwgaW50LCBpbnQsIGludCwgR0NHTHNpemVpLCBHQ0dMc2l6ZWksIEdDR0xlbnVtLCBHQ0dMZW51
bSwgR0NHTHNpemVpLCBjb25zdCB2b2lkICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXpl
R0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3Bl
bkdMQ29tbW9uOjpjb21wcmVzc2VkVGV4SW1hZ2UyRFJvYnVzdEFOR0xFKEdDR0xlbnVtLCBpbnQs
IEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSwgaW50LCBHQ0dMc2l6ZWksIEdDR0xzaXpl
aSwgY29uc3Qgdm9pZCopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9J
TlZBTElEX09QRVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpj
b21wcmVzc2VkVGV4U3ViSW1hZ2UyRFJvYnVzdEFOR0xFKEdDR0xlbnVtLCBpbnQsIGludCwgaW50
LCBHQ0dMc2l6ZWksIEdDR0xzaXplaSwgR0NHTGVudW0sIEdDR0xzaXplaSwgR0NHTHNpemVpLCBj
b25zdCB2b2lkKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFM
SURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmNvbXBy
ZXNzZWRUZXhJbWFnZTNEUm9idXN0QU5HTEUoR0NHTGVudW0sIGludCwgR0NHTGVudW0sIEdDR0xz
aXplaSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWksIGludCwgR0NHTHNpemVpLCBHQ0dMc2l6ZWksIGNv
bnN0IHZvaWQqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJ
RF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Y29tcHJl
c3NlZFRleFN1YkltYWdlM0RSb2J1c3RBTkdMRShHQ0dMZW51bSwgaW50LCBpbnQsIGludCwgaW50
LCBHQ0dMc2l6ZWksIEdDR0xzaXplaSwgR0NHTHNpemVpLCBHQ0dMZW51bSwgR0NHTHNpemVpLCBH
Q0dMc2l6ZWksIGNvbnN0IHZvaWQqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJy
b3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdM
Q29tbW9uOjp0ZXhJbWFnZTNEUm9idXN0QU5HTEUoR0NHTGVudW0sIGludCwgaW50LCBHQ0dMc2l6
ZWksIEdDR0xzaXplaSwgR0NHTHNpemVpLCBpbnQsIEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTHNp
emVpLCBjb25zdCB2b2lkICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihH
TF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9u
Ojp0ZXhTdWJJbWFnZTNEUm9idXN0QU5HTEUoR0NHTGVudW0sIGludCwgaW50LCBpbnQsIGludCwg
R0NHTHNpemVpLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSwgR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dM
c2l6ZWksIGNvbnN0IHZvaWQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9y
KEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQogdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21t
b246OmdldFF1ZXJ5aXZSb2J1c3RBTkdMRShHQ0dMZW51bSwgR0NHTGVudW0sIEdDR0xzaXplaSwg
R0NHTHNpemVpICosIEdDR0xpbnQgKikKIHsKICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVy
cm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21t
b24uaAppbmRleCA5N2VlZGZiNzQ4NWM4MzJmNzkzYzhjZmYwZmExN2ZiZmZiZTY1ODhkLi5iZmU0
NTIxNTQzZmY0YjI3MjEzN2YzNDRjZWU0YTIyZDhmYjI4YzY0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9u
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lv
bnNHTE9wZW5HTENvbW1vbi5oCkBAIC01MCw3ICs1MCw3IEBAIHB1YmxpYzoKICAgICBHQ0dMYm9v
bGVhbiBpc1ZlcnRleEFycmF5T0VTKFBsYXRmb3JtR0xPYmplY3QpIG92ZXJyaWRlID0gMDsKICAg
ICB2b2lkIGJpbmRWZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybUdMT2JqZWN0KSBvdmVycmlkZSA9IDA7
CiAKLSAgICB2b2lkIGRyYXdCdWZmZXJzRVhUKEdDR0xzaXplaSwgY29uc3QgR0NHTGVudW0qKSBv
dmVycmlkZSA9IDA7CisgICAgdm9pZCBkcmF3QnVmZmVyc0VYVChHQ0dMU3Bhbjxjb25zdCBHQ0dM
ZW51bT4pIG92ZXJyaWRlID0gMDsKIAogICAgIFN0cmluZyBnZXRUcmFuc2xhdGVkU2hhZGVyU291
cmNlQU5HTEUoUGxhdGZvcm1HTE9iamVjdCkgb3ZlcnJpZGU7CiAKQEAgLTcwLDE3ICs3MCw4IEBA
IHB1YmxpYzoKIAogICAgIC8vIEdMX0FOR0xFX3JvYnVzdF9jbGllbnRfbWVtb3J5CiAgICAgdm9p
ZCByZWFkUGl4ZWxzUm9idXN0QU5HTEUoaW50IHgsIGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdD
R0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMc2l6ZWkgKmNvbHVtbnMsIEdDR0xzaXpl
aSAqcm93cywgdm9pZCAqcGl4ZWxzKSBvdmVycmlkZTsKLSAgICB2b2lkIHRleEltYWdlMkRSb2J1
c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIGludCBsZXZlbCwgaW50IGludGVybmFsZm9ybWF0LCBH
Q0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIGludCBib3JkZXIsIEdDR0xlbnVtIGZv
cm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IHZvaWQgKnBpeGVs
cykgb3ZlcnJpZGU7CiAgICAgdm9pZCB0ZXhQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMZmxv
YXQgKnBhcmFtcykgb3ZlcnJpZGU7CiAgICAgdm9pZCB0ZXhQYXJhbWV0ZXJpdlJvYnVzdEFOR0xF
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25z
dCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgdGV4U3ViSW1hZ2UyRFJvYnVz
dEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgaW50IGxldmVsLCBpbnQgeG9mZnNldCwgaW50IHlvZmZz
ZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBH
Q0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3Qgdm9pZCAqcGl4ZWxzKSBvdmVy
cmlkZTsKLSAgICB2b2lkIGNvbXByZXNzZWRUZXhJbWFnZTJEUm9idXN0QU5HTEUoR0NHTGVudW0g
dGFyZ2V0LCBpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lk
dGgsIEdDR0xzaXplaSBoZWlnaHQsIGludCBib3JkZXIsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdD
R0xzaXplaSBidWZTaXplLCBjb25zdCB2b2lkKiBkYXRhKSBvdmVycmlkZTsKLSAgICB2b2lkIGNv
bXByZXNzZWRUZXhTdWJJbWFnZTJEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBpbnQgbGV2
ZWwsIGludCB4b2Zmc2V0LCBpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkg
aGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xzaXplaSBi
dWZTaXplLCBjb25zdCB2b2lkKiBkYXRhKSBvdmVycmlkZTsKLSAgICB2b2lkIGNvbXByZXNzZWRU
ZXhJbWFnZTNEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWwsIEdDR0xlbnVt
IGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xz
aXplaSBkZXB0aCwgaW50IGJvcmRlciwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIGNvbnN0IHZvaWQqIGRhdGEpIG92ZXJyaWRlOwotICAgIHZvaWQgY29tcHJlc3NlZFRl
eFN1YkltYWdlM0RSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIGludCBsZXZlbCwgaW50IHhv
ZmZzZXQsIGludCB5b2Zmc2V0LCBpbnQgem9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6
ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTHNpemVpIGlt
YWdlU2l6ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IHZvaWQqIGRhdGEpIG92ZXJyaWRlOwot
Ci0gICAgdm9pZCB0ZXhJbWFnZTNEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBpbnQgbGV2
ZWwsIGludCBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0
LCBHQ0dMc2l6ZWkgZGVwdGgsIGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0g
dHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IHZvaWQgKnBpeGVscykgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCB0ZXhTdWJJbWFnZTNEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBpbnQgbGV2
ZWwsIGludCB4b2Zmc2V0LCBpbnQgeW9mZnNldCwgaW50IHpvZmZzZXQsIEdDR0xzaXplaSB3aWR0
aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMZW51bSBmb3JtYXQsIEdD
R0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCB2b2lkICpwaXhlbHMpIG92ZXJy
aWRlOwogICAgIHZvaWQgZ2V0UXVlcnlpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NH
TGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGlu
dCAqcGFyYW1zKSBvdmVycmlkZTsKICAgICB2b2lkIGdldFF1ZXJ5T2JqZWN0dWl2Um9idXN0QU5H
TEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNp
emVpICpsZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMpIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0QnVm
ZmVyUG9pbnRlcnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIHZvaWQgKipwYXJhbXMpIG92ZXJy
aWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Blbmds
L0V4dGVuc2lvbnNHTE9wZW5HTEVTLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5jcHAKaW5kZXggZDI4ZjRhMDMxZWJkYzQ4
Mzg3NWQzOTg0ODdkNTc4NzQ4ZmRlNDdlNy4uMzZjM2VmMzhmOThiOTlhZjAxMTUwNjk5MTQyN2Jh
Y2VmY2JiOGFjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuY3BwCkBAIC0xODAsNyAr
MTgwLDcgQEAgdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xFUzo6YmluZFZlcnRleEFycmF5T0VTKFBs
YXRmb3JtR0xPYmplY3QgYXJyYXkpCiAgICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJy
b3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwogfQogCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTEVT
OjpkcmF3QnVmZmVyc0VYVChHQ0dMc2l6ZWkgLyogbiAqLywgY29uc3QgR0NHTGVudW0qIC8qIGJ1
ZnMgKi8pCit2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTEVTOjpkcmF3QnVmZmVyc0VYVChHQ0dMU3Bh
bjxjb25zdCBHQ0dMZW51bT4gLyogYnVmcyAqLykKIHsKICAgICAvLyBGSVhNRTogaW1wbGVtZW50
IHRoZSBzdXBwb3J0LgogICAgIG5vdEltcGxlbWVudGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVu
R0xFUy5oCmluZGV4IGM3NDgyNWM4MWVhZDBhNzQ2MGFlYTFkYWYxYzlhZTE4MzcwMjkzOTYuLjAx
N2E0NWI3Mzk4ZDA5OTJlZDE0NzY3ZjA3NjdlMDRiNDY0MTYyODMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25z
R0xPcGVuR0xFUy5oCkBAIC04NSw3ICs4NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRlbGV0ZVZl
cnRleEFycmF5T0VTKFBsYXRmb3JtR0xPYmplY3QpIG92ZXJyaWRlOwogICAgIEdDR0xib29sZWFu
IGlzVmVydGV4QXJyYXlPRVMoUGxhdGZvcm1HTE9iamVjdCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBi
aW5kVmVydGV4QXJyYXlPRVMoUGxhdGZvcm1HTE9iamVjdCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBk
cmF3QnVmZmVyc0VYVChHQ0dMc2l6ZWksIGNvbnN0IEdDR0xlbnVtKikgb3ZlcnJpZGU7CisgICAg
dm9pZCBkcmF3QnVmZmVyc0VYVChHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4pIG92ZXJyaWRlOwog
CiAgICAgdm9pZCBkcmF3QXJyYXlzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmly
c3QsIEdDR0xzaXplaSBjb3VudCwgR0NHTHNpemVpIHByaW1jb3VudCkgb3ZlcnJpZGU7CiAgICAg
dm9pZCBkcmF3RWxlbWVudHNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50
LCBHQ0dMZW51bSB0eXBlLCBsb25nIGxvbmcgb2Zmc2V0LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSBv
dmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuY3BwCmluZGV4IGYxNWI3
ZjI5NWE5NTFiMmQ4OTRlYzBmYTkxOTU0ZTk2ZjQ3YTRjMTMuLjg0MmI2YWJmN2I2NmE1MTg5OWZl
ZjI5MjgzZDhiOWRkOTg3MDRkZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdM
LmNwcApAQCAtNzYsOCArNzYsOCBAQCBib29sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp0ZXhJ
bWFnZTJEUmVzb3VyY2VTYWZlKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZQogewogICAgIEFT
U0VSVCh1bnBhY2tBbGlnbm1lbnQgPT0gMSB8fCB1bnBhY2tBbGlnbm1lbnQgPT0gMiB8fCB1bnBh
Y2tBbGlnbm1lbnQgPT0gNCB8fCB1bnBhY2tBbGlnbm1lbnQgPT0gOCk7CiAgICAgVW5pcXVlQXJy
YXk8dW5zaWduZWQgY2hhcj4gemVybzsKKyAgICB1bnNpZ25lZCBzaXplID0gMDsKICAgICBpZiAo
d2lkdGggPiAwICYmIGhlaWdodCA+IDApIHsKLSAgICAgICAgdW5zaWduZWQgc2l6ZTsKICAgICAg
ICAgUGl4ZWxTdG9yZVBhcmFtcyBwYXJhbXM7CiAgICAgICAgIHBhcmFtcy5hbGlnbm1lbnQgPSB1
bnBhY2tBbGlnbm1lbnQ7CiAgICAgICAgIEdDR0xlbnVtIGVycm9yID0gY29tcHV0ZUltYWdlU2l6
ZUluQnl0ZXMoZm9ybWF0LCB0eXBlLCB3aWR0aCwgaGVpZ2h0LCAxLCBwYXJhbXMsICZzaXplLCBu
dWxscHRyLCBudWxscHRyKTsKQEAgLTkyLDcgKzkyLDcgQEAgYm9vbCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6dGV4SW1hZ2UyRFJlc291cmNlU2FmZShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQg
bGUKICAgICAgICAgfQogICAgICAgICBtZW1zZXQoemVyby5nZXQoKSwgMCwgc2l6ZSk7CiAgICAg
fQotICAgIHJldHVybiB0ZXhJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3
aWR0aCwgaGVpZ2h0LCBib3JkZXIsIGZvcm1hdCwgdHlwZSwgemVyby5nZXQoKSk7CisgICAgcmV0
dXJuIHRleEltYWdlMkQodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWln
aHQsIGJvcmRlciwgZm9ybWF0LCB0eXBlLCBtYWtlR0NHTFNwYW4oemVyby5nZXQoKSwgc2l6ZSkp
OwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKaW5kZXggMDk5
MjY3OGI4ZGMxZTE4M2Q5ODI1OWI3NzMxNWMzNjEyMTcwMTMwZi4uYzI1NWIwYzEyZjRmY2JmYTQ2
ZGIwMmQ1NWM4MGI0Y2I3N2QxN2I3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdM
LmgKQEAgLTExOSw5ICsxMTksNiBAQCBwdWJsaWM6CiAgICAgLy8gV2l0aCBtdWx0aXNhbXBsaW5n
IG9uLCBibGl0IGZyb20gbXVsdGlzYW1wbGVGQk8gdG8gcmVndWxhciBGQk8uCiAgICAgdm9pZCBw
cmVwYXJlVGV4dHVyZSgpOwogCi0gICAgLy8gRXF1aXZhbGVudCB0byA6OmdsVGV4SW1hZ2UyRCgp
LiBBbGxvd3MgcGl4ZWxzPT0wIHdpdGggbm8gYWxsb2NhdGlvbi4KLSAgICB2b2lkIHRleEltYWdl
MkREaXJlY3QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5h
bGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRl
ciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBjb25zdCB2b2lkKiBwaXhlbHMpOwot
CiAgICAgLy8gR2V0IGFuIGF0dHJpYnV0ZSBsb2NhdGlvbiB3aXRob3V0IGNoZWNraW5nIHRoZSBu
YW1lIC0+IG1hbmdsZWRuYW1lIG1hcHBpbmcuCiAgICAgaW50IGdldEF0dHJpYkxvY2F0aW9uRGly
ZWN0KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgY29uc3QgU3RyaW5nJiBuYW1lKTsKIApAQCAt
MTI5LDYgKzEyNiw5IEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbXBpbGVTaGFkZXJEaXJlY3QoUGxh
dGZvcm1HTE9iamVjdCk7CiAKICNpZiAhVVNFKEFOR0xFKQorICAgIC8vIEVxdWl2YWxlbnQgdG8g
OjpnbFRleEltYWdlMkQoKS4gQWxsb3dzIHBpeGVscz09MCB3aXRoIG5vIGFsbG9jYXRpb24uCisg
ICAgdm9pZCB0ZXhJbWFnZTJERGlyZWN0KEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwg
R0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdo
dCwgR0NHTGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgY29uc3Qg
dm9pZCogcGl4ZWxzKTsKKwogICAgIC8vIEhlbHBlciB0byB0ZXhJbWFnZTJEIHdpdGggcGl4ZWw9
PTAgY2FzZTogcGl4ZWxzIGFyZSBpbml0aWFsaXplZCB0byAwLgogICAgIC8vIFJldHVybiB0cnVl
IGlmIG5vIEdMIGVycm9yIGlzIHN5bnRoZXNpemVkLgogICAgIC8vIEJ5IGRlZmF1bHQsIGFsaWdu
bWVudCBpcyA0LCB0aGUgT3BlbkdMIGRlZmF1bHQgc2V0dGluZy4KQEAgLTE1NSw4ICsxNTUsOCBA
QCBwdWJsaWM6CiAgICAgdm9pZCBibGVuZEZ1bmNTZXBhcmF0ZShHQ0dMZW51bSBzcmNSR0IsIEdD
R0xlbnVtIGRzdFJHQiwgR0NHTGVudW0gc3JjQWxwaGEsIEdDR0xlbnVtIGRzdEFscGhhKSBmaW5h
bDsKIAogICAgIHZvaWQgYnVmZmVyRGF0YShHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaXB0ciBz
aXplLCBHQ0dMZW51bSB1c2FnZSkgZmluYWw7Ci0gICAgdm9pZCBidWZmZXJEYXRhKEdDR0xlbnVt
IHRhcmdldCwgR0NHTHNpemVpcHRyIHNpemUsIGNvbnN0IHZvaWQqIGRhdGEsIEdDR0xlbnVtIHVz
YWdlKSBmaW5hbDsKLSAgICB2b2lkIGJ1ZmZlclN1YkRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
aW50cHRyIG9mZnNldCwgR0NHTHNpemVpcHRyIHNpemUsIGNvbnN0IHZvaWQqIGRhdGEpIGZpbmFs
OworICAgIHZvaWQgYnVmZmVyRGF0YShHQ0dMZW51bSB0YXJnZXQsIEdDR0xTcGFuPGNvbnN0IEdD
R0x2b2lkPiBkYXRhLCBHQ0dMZW51bSB1c2FnZSkgZmluYWw7CisgICAgdm9pZCBidWZmZXJTdWJE
YXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludHB0ciBvZmZzZXQsIEdDR0xTcGFuPGNvbnN0IEdD
R0x2b2lkPiBkYXRhKSBmaW5hbDsKIAogICAgIEdDR0xlbnVtIGNoZWNrRnJhbWVidWZmZXJTdGF0
dXMoR0NHTGVudW0gdGFyZ2V0KSBmaW5hbDsKICAgICB2b2lkIGNsZWFyKEdDR0xiaXRmaWVsZCBt
YXNrKSBmaW5hbDsKQEAgLTE2NiwxMCArMTY2LDYgQEAgcHVibGljOgogICAgIHZvaWQgY29sb3JN
YXNrKEdDR0xib29sZWFuIHJlZCwgR0NHTGJvb2xlYW4gZ3JlZW4sIEdDR0xib29sZWFuIGJsdWUs
IEdDR0xib29sZWFuIGFscGhhKSBmaW5hbDsKICAgICB2b2lkIGNvbXBpbGVTaGFkZXIoUGxhdGZv
cm1HTE9iamVjdCkgZmluYWw7CiAKLSNpZiAhVVNFKEFOR0xFKQotICAgIHZvaWQgY29tcHJlc3Nl
ZFRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRl
cm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJv
cmRlciwgR0NHTHNpemVpIGltYWdlU2l6ZSwgY29uc3Qgdm9pZCogZGF0YSk7Ci0gICAgdm9pZCBj
b21wcmVzc2VkVGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdD
R0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXpl
aSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTHNpemVpIGltYWdlU2l6ZSwgY29uc3Qgdm9p
ZCogZGF0YSk7Ci0jZW5kaWYKICAgICB2b2lkIGNvcHlUZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xpbnQgeCwgR0NH
TGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVy
KSBmaW5hbDsKICAgICB2b2lkIGNvcHlUZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NH
TGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xpbnQgeCwg
R0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpIGZpbmFsOwogICAg
IHZvaWQgY3VsbEZhY2UoR0NHTGVudW0gbW9kZSkgZmluYWw7CkBAIC0yNTMsMzAgKzI0OSwzNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCBzdGVuY2lsT3AoR0NHTGVudW0gZmFpbCwgR0NHTGVudW0gemZh
aWwsIEdDR0xlbnVtIHpwYXNzKSBmaW5hbDsKICAgICB2b2lkIHN0ZW5jaWxPcFNlcGFyYXRlKEdD
R0xlbnVtIGZhY2UsIEdDR0xlbnVtIGZhaWwsIEdDR0xlbnVtIHpmYWlsLCBHQ0dMZW51bSB6cGFz
cykgZmluYWw7CiAKLSAgICBib29sIHRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50
IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6
ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBl
LCBjb25zdCB2b2lkKiBwaXhlbHMpIGZpbmFsOworICAgIHZvaWQgdGV4SW1hZ2UyRChHQ0dMZW51
bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6
ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3Jt
YXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBwaXhlbHMpIGZpbmFs
OworICAgIHZvaWQgdGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdD
R0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQs
IEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRw
dHIgb2Zmc2V0KSBmaW5hbDsKKyAgICB2b2lkIHRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTHNp
emVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5
cGUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBwaXhlbHMpIGZpbmFsOworICAgIHZvaWQgdGV4
U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNl
dCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdD
R0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpIGZpbmFsOwor
ICAgIHZvaWQgY29tcHJlc3NlZFRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxl
dmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkg
aGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTFNwYW48Y29u
c3QgR0NHTHZvaWQ+IGRhdGEpIGZpbmFsOworICAgIHZvaWQgY29tcHJlc3NlZFRleEltYWdlMkQo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwg
R0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTHNp
emVpIGltYWdlU2l6ZSwgR0NHTGludHB0ciBvZmZzZXQpIGZpbmFsOyAKKyAgICB2b2lkIGNvbXBy
ZXNzZWRUZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGlu
dCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhl
aWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMU3Bhbjxjb25z
dCBHQ0dMdm9pZD4gZGF0YSkgZmluYWw7CisgICAgdm9pZCBjb21wcmVzc2VkVGV4U3ViSW1hZ2Uy
RChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGlu
dCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZv
cm1hdCwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTGludHB0ciBvZmZzZXQpIGZpbmFsOworCiAg
ICAgdm9pZCB0ZXhQYXJhbWV0ZXJmKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdD
R0xmbG9hdCBwYXJhbSkgZmluYWw7CiAgICAgdm9pZCB0ZXhQYXJhbWV0ZXJpKEdDR0xlbnVtIHRh
cmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQgcGFyYW0pIGZpbmFsOwotICAgIHZvaWQgdGV4
U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNl
dCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdD
R0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgY29uc3Qgdm9pZCogcGl4ZWxzKSBmaW5hbDsK
IAogICAgIHZvaWQgdW5pZm9ybTFmKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xmbG9hdCB4KSBmaW5h
bDsKLSAgICB2b2lkIHVuaWZvcm0xZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpLCBjb25z
dCBHQ0dMZmxvYXQqIHYpIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybTFmdihHQ0dMaW50IGxvY2F0
aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IHYpIGZpbmFsOwogICAgIHZvaWQgdW5pZm9y
bTFpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xpbnQgeCkgZmluYWw7Ci0gICAgdm9pZCB1bmlmb3Jt
MWl2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSwgY29uc3QgR0NHTGludCogdikgZmluYWw7
CisgICAgdm9pZCB1bmlmb3JtMWl2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdD
R0xpbnQ+IHYpIGZpbmFsOwogICAgIHZvaWQgdW5pZm9ybTJmKEdDR0xpbnQgbG9jYXRpb24sIEdD
R0xmbG9hdCB4LCBHQ0dMZmxvYXQgeSkgZmluYWw7Ci0gICAgdm9pZCB1bmlmb3JtMmZ2KEdDR0xp
bnQgbG9jYXRpb24sIEdDR0xzaXplaSwgY29uc3QgR0NHTGZsb2F0KiB2KSBmaW5hbDsKKyAgICB2
b2lkIHVuaWZvcm0yZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0
PiB2KSBmaW5hbDsKICAgICB2b2lkIHVuaWZvcm0yaShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMaW50
IHgsIEdDR0xpbnQgeSkgZmluYWw7Ci0gICAgdm9pZCB1bmlmb3JtMml2KEdDR0xpbnQgbG9jYXRp
b24sIEdDR0xzaXplaSwgY29uc3QgR0NHTGludCogdikgZmluYWw7CisgICAgdm9pZCB1bmlmb3Jt
Mml2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+IHYpIGZpbmFsOwog
ICAgIHZvaWQgdW5pZm9ybTNmKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xmbG9hdCB4LCBHQ0dMZmxv
YXQgeSwgR0NHTGZsb2F0IHopIGZpbmFsOwotICAgIHZvaWQgdW5pZm9ybTNmdihHQ0dMaW50IGxv
Y2F0aW9uLCBHQ0dMc2l6ZWksIGNvbnN0IEdDR0xmbG9hdCogdikgZmluYWw7CisgICAgdm9pZCB1
bmlmb3JtM2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gdikg
ZmluYWw7CiAgICAgdm9pZCB1bmlmb3JtM2koR0NHTGludCBsb2NhdGlvbiwgR0NHTGludCB4LCBH
Q0dMaW50IHksIEdDR0xpbnQgeikgZmluYWw7Ci0gICAgdm9pZCB1bmlmb3JtM2l2KEdDR0xpbnQg
bG9jYXRpb24sIEdDR0xzaXplaSwgY29uc3QgR0NHTGludCogdikgZmluYWw7CisgICAgdm9pZCB1
bmlmb3JtM2l2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+IHYpIGZp
bmFsOwogICAgIHZvaWQgdW5pZm9ybTRmKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xmbG9hdCB4LCBH
Q0dMZmxvYXQgeSwgR0NHTGZsb2F0IHosIEdDR0xmbG9hdCB3KSBmaW5hbDsKLSAgICB2b2lkIHVu
aWZvcm00ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpLCBjb25zdCBHQ0dMZmxvYXQqIHYp
IGZpbmFsOworICAgIHZvaWQgdW5pZm9ybTRmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxj
b25zdCBHQ0dMZmxvYXQ+IHYpIGZpbmFsOwogICAgIHZvaWQgdW5pZm9ybTRpKEdDR0xpbnQgbG9j
YXRpb24sIEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMaW50IHosIEdDR0xpbnQgdykgZmluYWw7
Ci0gICAgdm9pZCB1bmlmb3JtNGl2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSwgY29uc3Qg
R0NHTGludCogdikgZmluYWw7Ci0gICAgdm9pZCB1bmlmb3JtTWF0cml4MmZ2KEdDR0xpbnQgbG9j
YXRpb24sIEdDR0xzaXplaSwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHQ0dMZmxvYXQq
IHZhbHVlKSBmaW5hbDsKLSAgICB2b2lkIHVuaWZvcm1NYXRyaXgzZnYoR0NHTGludCBsb2NhdGlv
biwgR0NHTHNpemVpLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogdmFs
dWUpIGZpbmFsOwotICAgIHZvaWQgdW5pZm9ybU1hdHJpeDRmdihHQ0dMaW50IGxvY2F0aW9uLCBH
Q0dMc2l6ZWksIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiB2YWx1ZSkg
ZmluYWw7CisgICAgdm9pZCB1bmlmb3JtNGl2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNv
bnN0IEdDR0xpbnQ+IHYpIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybU1hdHJpeDJmdihHQ0dMaW50
IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9h
dD4gdmFsdWUpIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybU1hdHJpeDNmdihHQ0dMaW50IGxvY2F0
aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gdmFs
dWUpIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybU1hdHJpeDRmdihHQ0dMaW50IGxvY2F0aW9uLCBH
Q0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gdmFsdWUpIGZp
bmFsOwogCiAgICAgdm9pZCB1c2VQcm9ncmFtKFBsYXRmb3JtR0xPYmplY3QpIGZpbmFsOwogICAg
IHZvaWQgdmFsaWRhdGVQcm9ncmFtKFBsYXRmb3JtR0xPYmplY3QpIGZpbmFsOwpAQCAtMjg2LDEz
ICsyODksMTMgQEAgcHVibGljOgogI2VuZGlmCiAKICAgICB2b2lkIHZlcnRleEF0dHJpYjFmKEdD
R0x1aW50IGluZGV4LCBHQ0dMZmxvYXQgeCkgZmluYWw7Ci0gICAgdm9pZCB2ZXJ0ZXhBdHRyaWIx
ZnYoR0NHTHVpbnQgaW5kZXgsIGNvbnN0IEdDR0xmbG9hdCogdmFsdWVzKSBmaW5hbDsKKyAgICB2
b2lkIHZlcnRleEF0dHJpYjFmdihHQ0dMdWludCBpbmRleCwgR0NHTFNwYW48Y29uc3QgR0NHTGZs
b2F0LCAxPiB2YWx1ZXMpIGZpbmFsOwogICAgIHZvaWQgdmVydGV4QXR0cmliMmYoR0NHTHVpbnQg
aW5kZXgsIEdDR0xmbG9hdCB4LCBHQ0dMZmxvYXQgeSkgZmluYWw7Ci0gICAgdm9pZCB2ZXJ0ZXhB
dHRyaWIyZnYoR0NHTHVpbnQgaW5kZXgsIGNvbnN0IEdDR0xmbG9hdCogdmFsdWVzKSBmaW5hbDsK
KyAgICB2b2lkIHZlcnRleEF0dHJpYjJmdihHQ0dMdWludCBpbmRleCwgR0NHTFNwYW48Y29uc3Qg
R0NHTGZsb2F0LCAyPiB2YWx1ZXMpIGZpbmFsOwogICAgIHZvaWQgdmVydGV4QXR0cmliM2YoR0NH
THVpbnQgaW5kZXgsIEdDR0xmbG9hdCB4LCBHQ0dMZmxvYXQgeSwgR0NHTGZsb2F0IHopIGZpbmFs
OwotICAgIHZvaWQgdmVydGV4QXR0cmliM2Z2KEdDR0x1aW50IGluZGV4LCBjb25zdCBHQ0dMZmxv
YXQqIHZhbHVlcykgZmluYWw7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWIzZnYoR0NHTHVpbnQgaW5k
ZXgsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdCwgMz4gdmFsdWVzKSBmaW5hbDsKICAgICB2b2lk
IHZlcnRleEF0dHJpYjRmKEdDR0x1aW50IGluZGV4LCBHQ0dMZmxvYXQgeCwgR0NHTGZsb2F0IHks
IEdDR0xmbG9hdCB6LCBHQ0dMZmxvYXQgdykgZmluYWw7Ci0gICAgdm9pZCB2ZXJ0ZXhBdHRyaWI0
ZnYoR0NHTHVpbnQgaW5kZXgsIGNvbnN0IEdDR0xmbG9hdCogdmFsdWVzKSBmaW5hbDsKKyAgICB2
b2lkIHZlcnRleEF0dHJpYjRmdihHQ0dMdWludCBpbmRleCwgR0NHTFNwYW48Y29uc3QgR0NHTGZs
b2F0LCA0PiB2YWx1ZXMpIGZpbmFsOwogICAgIHZvaWQgdmVydGV4QXR0cmliUG9pbnRlcihHQ0dM
dWludCBpbmRleCwgR0NHTGludCBzaXplLCBHQ0dMZW51bSB0eXBlLCBHQ0dMYm9vbGVhbiBub3Jt
YWxpemVkLCBHQ0dMc2l6ZWkgc3RyaWRlLCBHQ0dMaW50cHRyIG9mZnNldCkgZmluYWw7CiAKICAg
ICB2b2lkIHZpZXdwb3J0KEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdD
R0xzaXplaSBoZWlnaHQpIGZpbmFsOwpAQCAtMzIzLDggKzMyNiw4IEBAIHB1YmxpYzoKIAogICAg
IHZvaWQgYmxpdEZyYW1lYnVmZmVyKEdDR0xpbnQgc3JjWDAsIEdDR0xpbnQgc3JjWTAsIEdDR0xp
bnQgc3JjWDEsIEdDR0xpbnQgc3JjWTEsIEdDR0xpbnQgZHN0WDAsIEdDR0xpbnQgZHN0WTAsIEdD
R0xpbnQgZHN0WDEsIEdDR0xpbnQgZHN0WTEsIEdDR0xiaXRmaWVsZCBtYXNrLCBHQ0dMZW51bSBm
aWx0ZXIpIGZpbmFsOwogICAgIHZvaWQgZnJhbWVidWZmZXJUZXh0dXJlTGF5ZXIoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50LCBQbGF0Zm9ybUdMT2JqZWN0IHRleHR1cmUsIEdD
R0xpbnQgbGV2ZWwsIEdDR0xpbnQgbGF5ZXIpIGZpbmFsOwotICAgIHZvaWQgaW52YWxpZGF0ZUZy
YW1lYnVmZmVyKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpIG51bUF0dGFjaG1lbnRzLCBjb25z
dCBHQ0dMZW51bSogYXR0YWNobWVudHMpIGZpbmFsOwotICAgIHZvaWQgaW52YWxpZGF0ZVN1YkZy
YW1lYnVmZmVyKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpIG51bUF0dGFjaG1lbnRzLCBjb25z
dCBHQ0dMZW51bSogYXR0YWNobWVudHMsIEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkg
d2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpIGZpbmFsOworICAgIHZvaWQgaW52YWxpZGF0ZUZyYW1l
YnVmZmVyKEdDR0xlbnVtIHRhcmdldCwgR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+IGF0dGFjaG1l
bnRzKSBmaW5hbDsKKyAgICB2b2lkIGludmFsaWRhdGVTdWJGcmFtZWJ1ZmZlcihHQ0dMZW51bSB0
YXJnZXQsIEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVtPiBhdHRhY2htZW50cywgR0NHTGludCB4LCBH
Q0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkgZmluYWw7CiAgICAg
dm9pZCByZWFkQnVmZmVyKEdDR0xlbnVtIHNyYykgZmluYWw7CiAKICAgICAvLyBnZXRJbnRlcm5h
bEZvcm1hdFBhcmFtZXRlcgpAQCAtMzM0LDcgKzMzNywxNSBAQCBwdWJsaWM6CiAgICAgdm9pZCB0
ZXhTdG9yYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgbGV2ZWxzLCBHQ0dMZW51bSBp
bnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KSBmaW5hbDsK
ICAgICB2b2lkIHRleFN0b3JhZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaSBsZXZlbHMs
IEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWln
aHQsIEdDR0xzaXplaSBkZXB0aCkgZmluYWw7CiAKKyAgICB2b2lkIHRleEltYWdlM0QoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IGludGVybmFsZm9ybWF0LCBHQ0dMc2l6
ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGludCBib3Jk
ZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZv
aWQ+IHBpeGVscykgZmluYWw7CisgICAgdm9pZCB0ZXhJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGludCBsZXZlbCwgR0NHTGludCBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBH
Q0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51
bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KSBmaW5hbDsKKyAgICB2
b2lkIHRleFN1YkltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50
IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTGludCB6b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lk
dGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGVudW0gZm9ybWF0LCBH
Q0dMZW51bSB0eXBlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gcGl4ZWxzKSBmaW5hbDsKKyAg
ICB2b2lkIHRleFN1YkltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dM
aW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTGludCB6b2Zmc2V0LCBHQ0dMc2l6ZWkg
d2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGVudW0gZm9ybWF0
LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCkgZmluYWw7CiAgICAgdm9pZCBjb3B5
VGV4U3ViSW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9m
ZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMaW50IHpvZmZzZXQsIEdDR0xpbnQgeCwgR0NHTGlu
dCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpIGZpbmFsOworICAgIHZvaWQg
Y29tcHJlc3NlZFRleEltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dM
ZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBH
Q0dMc2l6ZWkgZGVwdGgsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dM
U3Bhbjxjb25zdCBHQ0dMdm9pZD4gZGF0YSkgZmluYWw7CisgICAgdm9pZCBjb21wcmVzc2VkVGV4
SW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFs
Zm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0
aCwgR0NHTGludCBib3JkZXIsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xpbnRwdHIgb2Zmc2V0
KSBmaW5hbDsKKyAgICB2b2lkIGNvbXByZXNzZWRUZXhTdWJJbWFnZTNEKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xp
bnQgem9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkg
ZGVwdGgsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTFNwYW48Y29u
c3QgR0NHTHZvaWQ+IGRhdGEpIGZpbmFsOworICAgIHZvaWQgY29tcHJlc3NlZFRleFN1YkltYWdl
M0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xp
bnQgeW9mZnNldCwgR0NHTGludCB6b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBo
ZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMc2l6ZWkgaW1hZ2VT
aXplLCBHQ0dMaW50cHRyIG9mZnNldCkgZmluYWw7CiAKICAgICBHQ0dMaW50IGdldEZyYWdEYXRh
TG9jYXRpb24oUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBjb25zdCBTdHJpbmcmIG5hbWUpIGZp
bmFsOwogCkBAIC0zNDIsMjggKzM1MywyOCBAQCBwdWJsaWM6CiAgICAgdm9pZCB1bmlmb3JtMnVp
KEdDR0xpbnQgbG9jYXRpb24sIEdDR0x1aW50IHYwLCBHQ0dMdWludCB2MSkgZmluYWw7CiAgICAg
dm9pZCB1bmlmb3JtM3VpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0x1aW50IHYwLCBHQ0dMdWludCB2
MSwgR0NHTHVpbnQgdjIpIGZpbmFsOwogICAgIHZvaWQgdW5pZm9ybTR1aShHQ0dMaW50IGxvY2F0
aW9uLCBHQ0dMdWludCB2MCwgR0NHTHVpbnQgdjEsIEdDR0x1aW50IHYyLCBHQ0dMdWludCB2Mykg
ZmluYWw7Ci0gICAgdm9pZCB1bmlmb3JtMXVpdihHQ0dMaW50IGxvY2F0aW9uLCBjb25zdCBHQ0dM
dWludCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpIGZpbmFs
OwotICAgIHZvaWQgdW5pZm9ybTJ1aXYoR0NHTGludCBsb2NhdGlvbiwgY29uc3QgR0NHTHVpbnQq
IGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKSBmaW5hbDsKLSAg
ICB2b2lkIHVuaWZvcm0zdWl2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0x1aW50KiBkYXRh
LCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkgZmluYWw7Ci0gICAgdm9p
ZCB1bmlmb3JtNHVpdihHQ0dMaW50IGxvY2F0aW9uLCBjb25zdCBHQ0dMdWludCogZGF0YSwgR0NH
THVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpIGZpbmFsOwotICAgIHZvaWQgdW5p
Zm9ybU1hdHJpeDJ4M2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwg
Y29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xl
bmd0aCkgZmluYWw7Ci0gICAgdm9pZCB1bmlmb3JtTWF0cml4M3gyZnYoR0NHTGludCBsb2NhdGlv
biwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50
IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKSBmaW5hbDsKLSAgICB2b2lkIHVuaWZvcm1N
YXRyaXgyeDRmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0
IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgp
IGZpbmFsOwotICAgIHZvaWQgdW5pZm9ybU1hdHJpeDR4MmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdD
R0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNP
ZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkgZmluYWw7Ci0gICAgdm9pZCB1bmlmb3JtTWF0cml4
M3g0ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHQ0dM
ZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKSBmaW5h
bDsKLSAgICB2b2lkIHVuaWZvcm1NYXRyaXg0eDNmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9v
bGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0
LCBHQ0dMdWludCBzcmNMZW5ndGgpIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybTF1aXYoR0NHTGlu
dCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTHVpbnQ+KSBmaW5hbDsKKyAgICB2b2lkIHVu
aWZvcm0ydWl2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0x1aW50PikgZmlu
YWw7CisgICAgdm9pZCB1bmlmb3JtM3VpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25z
dCBHQ0dMdWludD4pIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybTR1aXYoR0NHTGludCBsb2NhdGlv
biwgR0NHTFNwYW48Y29uc3QgR0NHTHVpbnQ+KSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm1NYXRy
aXgyeDNmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFu
PGNvbnN0IEdDR0xmbG9hdD4gZGF0YSkgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtTWF0cml4M3gy
ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25z
dCBHQ0dMZmxvYXQ+IGRhdGEpIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybU1hdHJpeDJ4NGZ2KEdD
R0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NH
TGZsb2F0PiBkYXRhKSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm1NYXRyaXg0eDJmdihHQ0dMaW50
IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9h
dD4gZGF0YSkgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtTWF0cml4M3g0ZnYoR0NHTGludCBsb2Nh
dGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRh
dGEpIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybU1hdHJpeDR4M2Z2KEdDR0xpbnQgbG9jYXRpb24s
IEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiBkYXRhKSBm
aW5hbDsKICAgICB2b2lkIHZlcnRleEF0dHJpYkk0aShHQ0dMdWludCBpbmRleCwgR0NHTGludCB4
LCBHQ0dMaW50IHksIEdDR0xpbnQgeiwgR0NHTGludCB3KSBmaW5hbDsKLSAgICB2b2lkIHZlcnRl
eEF0dHJpYkk0aXYoR0NHTHVpbnQgaW5kZXgsIGNvbnN0IEdDR0xpbnQqIHZhbHVlcykgZmluYWw7
CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJJNGl2KEdDR0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxjb25z
dCBHQ0dMaW50LCA0PiB2YWx1ZXMpIGZpbmFsOwogICAgIHZvaWQgdmVydGV4QXR0cmliSTR1aShH
Q0dMdWludCBpbmRleCwgR0NHTHVpbnQgeCwgR0NHTHVpbnQgeSwgR0NHTHVpbnQgeiwgR0NHTHVp
bnQgdykgZmluYWw7Ci0gICAgdm9pZCB2ZXJ0ZXhBdHRyaWJJNHVpdihHQ0dMdWludCBpbmRleCwg
Y29uc3QgR0NHTHVpbnQqIHZhbHVlcykgZmluYWw7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJJNHVp
dihHQ0dMdWludCBpbmRleCwgR0NHTFNwYW48Y29uc3QgR0NHTHVpbnQsIDQ+IHZhbHVlcykgZmlu
YWw7CiAgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJJUG9pbnRlcihHQ0dMdWludCBpbmRleCwgR0NHTGlu
dCBzaXplLCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgc3RyaWRlLCBHQ0dMaW50cHRyIG9mZnNl
dCkgZmluYWw7CiAKICAgICB2b2lkIGRyYXdSYW5nZUVsZW1lbnRzKEdDR0xlbnVtIG1vZGUsIEdD
R0x1aW50IHN0YXJ0LCBHQ0dMdWludCBlbmQsIEdDR0xzaXplaSBjb3VudCwgR0NHTGVudW0gdHlw
ZSwgR0NHTGludHB0ciBvZmZzZXQpIGZpbmFsOwogCi0gICAgdm9pZCBkcmF3QnVmZmVycyhHQ0dM
c2l6ZWkgbiwgY29uc3QgR0NHTGVudW0qIGJ1ZnMpIGZpbmFsOwotICAgIHZvaWQgY2xlYXJCdWZm
ZXJpdihHQ0dMZW51bSBidWZmZXIsIEdDR0xpbnQgZHJhd2J1ZmZlciwgY29uc3QgR0NHTGludCog
dmFsdWVzLCBHQ0dMdWludCBzcmNPZmZzZXQpIGZpbmFsOwotICAgIHZvaWQgY2xlYXJCdWZmZXJ1
aXYoR0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50IGRyYXdidWZmZXIsIGNvbnN0IEdDR0x1aW50KiB2
YWx1ZXMsIEdDR0x1aW50IHNyY09mZnNldCkgZmluYWw7Ci0gICAgdm9pZCBjbGVhckJ1ZmZlcmZ2
KEdDR0xlbnVtIGJ1ZmZlciwgR0NHTGludCBkcmF3YnVmZmVyLCBjb25zdCBHQ0dMZmxvYXQqIHZh
bHVlcywgR0NHTHVpbnQgc3JjT2Zmc2V0KSBmaW5hbDsKKyAgICB2b2lkIGRyYXdCdWZmZXJzKEdD
R0xTcGFuPGNvbnN0IEdDR0xlbnVtPiBidWZzKSBmaW5hbDsKKyAgICB2b2lkIGNsZWFyQnVmZmVy
aXYoR0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50IGRyYXdidWZmZXIsIEdDR0xTcGFuPGNvbnN0IEdD
R0xpbnQ+IHZhbHVlcykgZmluYWw7CisgICAgdm9pZCBjbGVhckJ1ZmZlcnVpdihHQ0dMZW51bSBi
dWZmZXIsIEdDR0xpbnQgZHJhd2J1ZmZlciwgR0NHTFNwYW48Y29uc3QgR0NHTHVpbnQ+IHZhbHVl
cykgZmluYWw7CisgICAgdm9pZCBjbGVhckJ1ZmZlcmZ2KEdDR0xlbnVtIGJ1ZmZlciwgR0NHTGlu
dCBkcmF3YnVmZmVyLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IHZhbHVlcykgZmluYWw7CiAg
ICAgdm9pZCBjbGVhckJ1ZmZlcmZpKEdDR0xlbnVtIGJ1ZmZlciwgR0NHTGludCBkcmF3YnVmZmVy
LCBHQ0dMZmxvYXQgZGVwdGgsIEdDR0xpbnQgc3RlbmNpbCkgZmluYWw7CiAKICAgICBQbGF0Zm9y
bUdMT2JqZWN0IGNyZWF0ZVF1ZXJ5KCkgZmluYWw7CkBAIC00MTYsMjcgKzQyNyw2IEBAIHB1Ymxp
YzoKICAgICBTdHJpbmcgZ2V0QWN0aXZlVW5pZm9ybUJsb2NrTmFtZShQbGF0Zm9ybUdMT2JqZWN0
IHByb2dyYW0sIEdDR0x1aW50IHVuaWZvcm1CbG9ja0luZGV4KSBmaW5hbDsKICAgICB2b2lkIHVu
aWZvcm1CbG9ja0JpbmRpbmcoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMdWludCB1bmlm
b3JtQmxvY2tJbmRleCwgR0NHTHVpbnQgdW5pZm9ybUJsb2NrQmluZGluZykgZmluYWw7CiAKLSNp
ZiAhVVNFKEFOR0xFKQotICAgIHZvaWQgY29tcHJlc3NlZFRleEltYWdlMkQoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdp
ZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTHNpemVpIGltYWdlU2l6
ZSwgR0NHTGludHB0ciBvZmZzZXQpOwotICAgIHZvaWQgY29tcHJlc3NlZFRleEltYWdlMkQoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NH
THNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgY29uc3Qgdm9p
ZCogc3JjRGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGhPdmVycmlk
ZSk7Ci0KLSAgICB2b2lkIGNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xzaXpl
aSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMc2l6ZWkgaW1h
Z2VTaXplLCBHQ0dMaW50cHRyIG9mZnNldCk7Ci0gICAgdm9pZCBjb21wcmVzc2VkVGV4U3ViSW1h
Z2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NH
TGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVt
IGZvcm1hdCwgY29uc3Qgdm9pZCogc3JjRGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWlu
dCBzcmNMZW5ndGhPdmVycmlkZSk7Ci0jZW5kaWYKLQotICAgIHZvaWQgdW5pZm9ybTFmdihHQ0dM
aW50IGxvY2F0aW9uLCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwg
R0NHTHVpbnQgc3JjTGVuZ3RoKSBmaW5hbDsKLSAgICB2b2lkIHVuaWZvcm0yZnYoR0NHTGludCBs
b2NhdGlvbiwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1
aW50IHNyY0xlbmd0aCkgZmluYWw7Ci0gICAgdm9pZCB1bmlmb3JtM2Z2KEdDR0xpbnQgbG9jYXRp
b24sIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBz
cmNMZW5ndGgpIGZpbmFsOwotICAgIHZvaWQgdW5pZm9ybTRmdihHQ0dMaW50IGxvY2F0aW9uLCBj
b25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVu
Z3RoKSBmaW5hbDsKLQotICAgIHZvaWQgdW5pZm9ybTFpdihHQ0dMaW50IGxvY2F0aW9uLCBjb25z
dCBHQ0dMaW50KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkg
ZmluYWw7Ci0gICAgdm9pZCB1bmlmb3JtMml2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0xp
bnQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKSBmaW5hbDsK
LSAgICB2b2lkIHVuaWZvcm0zaXYoR0NHTGludCBsb2NhdGlvbiwgY29uc3QgR0NHTGludCogZGF0
YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpIGZpbmFsOwotICAgIHZv
aWQgdW5pZm9ybTRpdihHQ0dMaW50IGxvY2F0aW9uLCBjb25zdCBHQ0dMaW50KiBkYXRhLCBHQ0dM
dWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkgZmluYWw7Ci0KLSAgICB2b2lkIHVu
aWZvcm1NYXRyaXgyZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBj
b25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVu
Z3RoKSBmaW5hbDsKLSAgICB2b2lkIHVuaWZvcm1NYXRyaXgzZnYoR0NHTGludCBsb2NhdGlvbiwg
R0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNy
Y09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKSBmaW5hbDsKLSAgICB2b2lkIHVuaWZvcm1NYXRy
aXg0ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHQ0dM
ZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKSBmaW5h
bDsKICAgICB2b2lkIGdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2KEdDR0x1aW50IHByb2dyYW0sIEdD
R0x1aW50IHVuaWZvcm1CbG9ja0luZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGlu
dD4gcGFyYW1zKSBmaW5hbDsKIAogI2lmICFVU0UoQU5HTEUpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xC
YXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGlj
c0NvbnRleHRHTE9wZW5HTEJhc2UuY3BwCmluZGV4IDlkN2NjOTIxNmU3YTQyY2YwZDk3MTY0NTcy
MDg1MWYxNDU1MTcwZDUuLjYzNTZmODFmNDgyMWI2YTFlYTZjMzU1N2VkZjFmNGU2ODgxM2Y2Yjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFw
aGljc0NvbnRleHRHTE9wZW5HTEJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEJhc2UuY3BwCkBAIC0zNDEs
MTEgKzM0MSwxMSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTaGFkZXJQcmVj
aXNpb25Gb3JtYXQoR0NHTGVudW0gc2hhZGVyVHlwZSwgR0NHTAogICAgIH0KIH0KIAotYm9vbCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xp
bnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xz
aXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5
cGUsIGNvbnN0IHZvaWQqIHBpeGVscykKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnRl
eEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5h
bGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRl
ciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9p
ZD4gcGl4ZWxzKQogewotICAgIGlmICh3aWR0aCAmJiBoZWlnaHQgJiYgIXBpeGVscykgeworICAg
IGlmICh3aWR0aCAmJiBoZWlnaHQgJiYgIXBpeGVscy5kYXRhKSB7CiAgICAgICAgIHN5bnRoZXNp
emVHTEVycm9yKElOVkFMSURfVkFMVUUpOwotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
IHJldHVybjsKICAgICB9CiAKICAgICBHQ0dMZW51bSBvcGVuR0xGb3JtYXQgPSBmb3JtYXQ7CkBA
IC00MDMsOCArNDAzLDcgQEAgYm9vbCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dGV4SW1hZ2Uy
RChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnUKICAgICAgICAgfQogICAg
IH0KIAotICAgIHRleEltYWdlMkREaXJlY3QodGFyZ2V0LCBsZXZlbCwgb3BlbkdMSW50ZXJuYWxG
b3JtYXQsIHdpZHRoLCBoZWlnaHQsIGJvcmRlciwgb3BlbkdMRm9ybWF0LCB0eXBlLCBwaXhlbHMp
OwotICAgIHJldHVybiB0cnVlOworICAgIHRleEltYWdlMkREaXJlY3QodGFyZ2V0LCBsZXZlbCwg
b3BlbkdMSW50ZXJuYWxGb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGJvcmRlciwgb3BlbkdMRm9ybWF0
LCB0eXBlLCBwaXhlbHMuZGF0YSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OmRlcHRoUmFuZ2UoR0NHTGNsYW1wZiB6TmVhciwgR0NHTGNsYW1wZiB6RmFyKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4
dEdMT3BlbkdMQ29tbW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvbW1vbi5jcHAKaW5kZXggYWJiN2UyNWEwNmYw
ODVjY2VhY2ZmNWFiNmU4MjA0NTdjZTlhMmQ5My4uMDhhMzQ2YWQ3Mzk5NGE4MDM5YmRlYmUxNTBl
YWY5YTMxYzNhNTg4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29tbW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xD
b21tb24uY3BwCkBAIC01NTIsMjAgKzU1MiwyMCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpidWZmZXJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpcHRyIHNpemUsIEdDRwog
ICAgIDo6Z2xCdWZmZXJEYXRhKHRhcmdldCwgc2l6ZSwgMCwgdXNhZ2UpOwogfQogCi12b2lkIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpidWZmZXJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNp
emVpcHRyIHNpemUsIGNvbnN0IHZvaWQqIGRhdGEsIEdDR0xlbnVtIHVzYWdlKQordm9pZCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6YnVmZmVyRGF0YShHQ0dMZW51bSB0YXJnZXQsIEdDR0xTcGFu
PGNvbnN0IHZvaWQ+IGRhdGEsIEdDR0xlbnVtIHVzYWdlKQogewogICAgIGlmICghbWFrZUNvbnRl
eHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIDo6Z2xCdWZmZXJEYXRhKHRhcmdl
dCwgc2l6ZSwgZGF0YSwgdXNhZ2UpOworICAgIDo6Z2xCdWZmZXJEYXRhKHRhcmdldCwgZGF0YS5i
dWZTaXplLCBkYXRhLmRhdGEsIHVzYWdlKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6YnVmZmVyU3ViRGF0YShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnRwdHIgb2Zmc2V0LCBH
Q0dMc2l6ZWlwdHIgc2l6ZSwgY29uc3Qgdm9pZCogZGF0YSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmJ1ZmZlclN1YkRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50cHRyIG9mZnNl
dCwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEpCiB7CiAgICAgaWYgKCFtYWtlQ29udGV4
dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgOjpnbEJ1ZmZlclN1YkRhdGEodGFy
Z2V0LCBvZmZzZXQsIHNpemUsIGRhdGEpOworICAgIDo6Z2xCdWZmZXJTdWJEYXRhKHRhcmdldCwg
b2Zmc2V0LCBkYXRhLmJ1ZlNpemUsIGRhdGEuZGF0YSk7CiB9CiAKIEdDR0xlbnVtIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpjaGVja0ZyYW1lYnVmZmVyU3RhdHVzKEdDR0xlbnVtIHRhcmdldCkK
QEAgLTE0MTUsMTIgKzE0MTUsMTIgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5p
Zm9ybTFmKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xmbG9hdCB2MCkKICAgICA6OmdsVW5pZm9ybTFm
KGxvY2F0aW9uLCB2MCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZv
cm0xZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIHNpemUsIGNvbnN0IEdDR0xmbG9hdCog
YXJyYXkpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMWZ2KEdDR0xpbnQg
bG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gYXJyYXkpCiB7CiAgICAgaWYgKCFt
YWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgOjpnbFVuaWZvcm0x
ZnYobG9jYXRpb24sIHNpemUsIGFycmF5KTsKKyAgICA6OmdsVW5pZm9ybTFmdihsb2NhdGlvbiwg
YXJyYXkuYnVmU2l6ZSwgYXJyYXkuZGF0YSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OnVuaWZvcm0yZihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMZmxvYXQgdjAsIEdDR0xmbG9h
dCB2MSkKQEAgLTE0MzEsMTMgKzE0MzEsMTMgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6dW5pZm9ybTJmKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xmbG9hdCB2MCwgR0NHTGZsb2EKICAg
ICA6OmdsVW5pZm9ybTJmKGxvY2F0aW9uLCB2MCwgdjEpOwogfQogCi12b2lkIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjp1bmlmb3JtMmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBzaXpl
LCBjb25zdCBHQ0dMZmxvYXQqIGFycmF5KQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
dW5pZm9ybTJmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGFy
cmF5KQogewotICAgIC8vIEZJWE1FOiBsZW5ndGggbmVlZHMgdG8gYmUgYSBtdWx0aXBsZSBvZiAy
LgorICAgIEFTU0VSVCghKGFycmF5LmJ1ZlNpemUgJSAyKSk7CiAgICAgaWYgKCFtYWtlQ29udGV4
dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgOjpnbFVuaWZvcm0yZnYobG9jYXRp
b24sIHNpemUsIGFycmF5KTsKKyAgICA6OmdsVW5pZm9ybTJmdihsb2NhdGlvbiwgYXJyYXkuYnVm
U2l6ZSAvIDIsIGFycmF5LmRhdGEpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
Ojp1bmlmb3JtM2YoR0NHTGludCBsb2NhdGlvbiwgR0NHTGZsb2F0IHYwLCBHQ0dMZmxvYXQgdjEs
IEdDR0xmbG9hdCB2MikKQEAgLTE0NDgsMTMgKzE0NDgsMTMgQEAgdm9pZCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6dW5pZm9ybTNmKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xmbG9hdCB2MCwgR0NH
TGZsb2EKICAgICA6OmdsVW5pZm9ybTNmKGxvY2F0aW9uLCB2MCwgdjEsIHYyKTsKIH0KIAotdm9p
ZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTNmdihHQ0dMaW50IGxvY2F0aW9uLCBH
Q0dMc2l6ZWkgc2l6ZSwgY29uc3QgR0NHTGZsb2F0KiBhcnJheSkKK3ZvaWQgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OnVuaWZvcm0zZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3Qg
R0NHTGZsb2F0PiBhcnJheSkKIHsKLSAgICAvLyBGSVhNRTogbGVuZ3RoIG5lZWRzIHRvIGJlIGEg
bXVsdGlwbGUgb2YgMy4KKyAgICBBU1NFUlQoIShhcnJheS5idWZTaXplICUgMykpOwogICAgIGlm
ICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIDo6Z2xVbmlm
b3JtM2Z2KGxvY2F0aW9uLCBzaXplLCBhcnJheSk7CisgICAgOjpnbFVuaWZvcm0zZnYobG9jYXRp
b24sIGFycmF5LmJ1ZlNpemUgLyAzLCBhcnJheS5kYXRhKTsKIH0KIAogdm9pZCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6dW5pZm9ybTRmKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xmbG9hdCB2MCwg
R0NHTGZsb2F0IHYxLCBHQ0dMZmxvYXQgdjIsIEdDR0xmbG9hdCB2MykKQEAgLTE0NjUsMTMgKzE0
NjUsMTMgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTRmKEdDR0xpbnQg
bG9jYXRpb24sIEdDR0xmbG9hdCB2MCwgR0NHTGZsb2EKICAgICA6OmdsVW5pZm9ybTRmKGxvY2F0
aW9uLCB2MCwgdjEsIHYyLCB2Myk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OnVuaWZvcm00ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIHNpemUsIGNvbnN0IEdDR0xm
bG9hdCogYXJyYXkpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtNGZ2KEdD
R0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gYXJyYXkpCiB7Ci0gICAg
Ly8gRklYTUU6IGxlbmd0aCBuZWVkcyB0byBiZSBhIG11bHRpcGxlIG9mIDQuCisgICAgQVNTRVJU
KCEoYXJyYXkuYnVmU2l6ZSAlIDQpKTsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQog
ICAgICAgICByZXR1cm47CiAKLSAgICA6OmdsVW5pZm9ybTRmdihsb2NhdGlvbiwgc2l6ZSwgYXJy
YXkpOworICAgIDo6Z2xVbmlmb3JtNGZ2KGxvY2F0aW9uLCBhcnJheS5idWZTaXplIC8gNCwgYXJy
YXkuZGF0YSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0xaShH
Q0dMaW50IGxvY2F0aW9uLCBHQ0dMaW50IHYwKQpAQCAtMTQ4MiwxMiArMTQ4MiwxMiBAQCB2b2lk
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMWkoR0NHTGludCBsb2NhdGlvbiwgR0NH
TGludCB2MCkKICAgICA6OmdsVW5pZm9ybTFpKGxvY2F0aW9uLCB2MCk7CiB9CiAKLXZvaWQgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0xaXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTHNp
emVpIHNpemUsIGNvbnN0IEdDR0xpbnQqIGFycmF5KQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6dW5pZm9ybTFpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50
PiBhcnJheSkKIHsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1
cm47CiAKLSAgICA6OmdsVW5pZm9ybTFpdihsb2NhdGlvbiwgc2l6ZSwgYXJyYXkpOworICAgIDo6
Z2xVbmlmb3JtMWl2KGxvY2F0aW9uLCBhcnJheS5idWZTaXplLCBhcnJheS5kYXRhKTsKIH0KIAog
dm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTJpKEdDR0xpbnQgbG9jYXRpb24s
IEdDR0xpbnQgdjAsIEdDR0xpbnQgdjEpCkBAIC0xNDk4LDEzICsxNDk4LDEzIEBAIHZvaWQgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0yaShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMaW50
IHYwLCBHQ0dMaW50IHYxCiAgICAgOjpnbFVuaWZvcm0yaShsb2NhdGlvbiwgdjAsIHYxKTsKIH0K
IAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTJpdihHQ0dMaW50IGxvY2F0
aW9uLCBHQ0dMc2l6ZWkgc2l6ZSwgY29uc3QgR0NHTGludCogYXJyYXkpCit2b2lkIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMml2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNv
bnN0IEdDR0xpbnQ+IGFycmF5KQogewotICAgIC8vIEZJWE1FOiBsZW5ndGggbmVlZHMgdG8gYmUg
YSBtdWx0aXBsZSBvZiAyLgorICAgIEFTU0VSVCghKGFycmF5LmJ1ZlNpemUgJSAyKSk7CiAgICAg
aWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgOjpnbFVu
aWZvcm0yaXYobG9jYXRpb24sIHNpemUsIGFycmF5KTsKKyAgICA6OmdsVW5pZm9ybTJpdihsb2Nh
dGlvbiwgYXJyYXkuYnVmU2l6ZSAvIDIsIGFycmF5LmRhdGEpOwogfQogCiB2b2lkIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjp1bmlmb3JtM2koR0NHTGludCBsb2NhdGlvbiwgR0NHTGludCB2MCwg
R0NHTGludCB2MSwgR0NHTGludCB2MikKQEAgLTE1MTUsMTMgKzE1MTUsMTMgQEAgdm9pZCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTNpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xpbnQg
djAsIEdDR0xpbnQgdjEKICAgICA6OmdsVW5pZm9ybTNpKGxvY2F0aW9uLCB2MCwgdjEsIHYyKTsK
IH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTNpdihHQ0dMaW50IGxv
Y2F0aW9uLCBHQ0dMc2l6ZWkgc2l6ZSwgY29uc3QgR0NHTGludCogYXJyYXkpCit2b2lkIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtM2l2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFu
PGNvbnN0IEdDR0xpbnQ+IGFycmF5KQogewotICAgIC8vIEZJWE1FOiBsZW5ndGggbmVlZHMgdG8g
YmUgYSBtdWx0aXBsZSBvZiAzLgorICAgIEFTU0VSVCghKGFycmF5LmJ1ZlNpemUgJSAzKSk7CiAg
ICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgOjpn
bFVuaWZvcm0zaXYobG9jYXRpb24sIHNpemUsIGFycmF5KTsKKyAgICA6OmdsVW5pZm9ybTNpdihs
b2NhdGlvbiwgYXJyYXkuYnVmU2l6ZSAvIDMsIGFycmF5LmRhdGEpOwogfQogCiB2b2lkIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtNGkoR0NHTGludCBsb2NhdGlvbiwgR0NHTGludCB2
MCwgR0NHTGludCB2MSwgR0NHTGludCB2MiwgR0NHTGludCB2MykKQEAgLTE1MzIsNDAgKzE1MzIs
NDAgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTRpKEdDR0xpbnQgbG9j
YXRpb24sIEdDR0xpbnQgdjAsIEdDR0xpbnQgdjEKICAgICA6OmdsVW5pZm9ybTRpKGxvY2F0aW9u
LCB2MCwgdjEsIHYyLCB2Myk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVu
aWZvcm00aXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIHNpemUsIGNvbnN0IEdDR0xpbnQq
IGFycmF5KQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTRpdihHQ0dMaW50
IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50PiBhcnJheSkKIHsKLSAgICAvLyBGSVhN
RTogbGVuZ3RoIG5lZWRzIHRvIGJlIGEgbXVsdGlwbGUgb2YgNC4KKyAgICBBU1NFUlQoIShhcnJh
eS5idWZTaXplICUgNCkpOwogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIDo6Z2xVbmlmb3JtNGl2KGxvY2F0aW9uLCBzaXplLCBhcnJheSk7Cisg
ICAgOjpnbFVuaWZvcm00aXYobG9jYXRpb24sIGFycmF5LmJ1ZlNpemUgLyA0LCBhcnJheS5kYXRh
KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybU1hdHJpeDJmdihH
Q0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgc2l6ZSwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBj
b25zdCBHQ0dMZmxvYXQqIGFycmF5KQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5p
Zm9ybU1hdHJpeDJmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdD
R0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gYXJyYXkpCiB7Ci0gICAgLy8gRklYTUU6IGxlbmd0aCBu
ZWVkcyB0byBiZSBhIG11bHRpcGxlIG9mIDQuCisgICAgQVNTRVJUKCEoYXJyYXkuYnVmU2l6ZSAl
IDQpKTsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CiAK
LSAgICA6OmdsVW5pZm9ybU1hdHJpeDJmdihsb2NhdGlvbiwgc2l6ZSwgdHJhbnNwb3NlLCBhcnJh
eSk7CisgICAgOjpnbFVuaWZvcm1NYXRyaXgyZnYobG9jYXRpb24sIGFycmF5LmJ1ZlNpemUgLyA0
LCB0cmFuc3Bvc2UsIGFycmF5LmRhdGEpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjp1bmlmb3JtTWF0cml4M2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBzaXplLCBH
Q0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogYXJyYXkpCit2b2lkIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4M2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdD
R0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiBhcnJheSkKIHsK
LSAgICAvLyBGSVhNRTogbGVuZ3RoIG5lZWRzIHRvIGJlIGEgbXVsdGlwbGUgb2YgOS4KKyAgICBB
U1NFUlQoIShhcnJheS5idWZTaXplICUgOSkpOwogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50
KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIDo6Z2xVbmlmb3JtTWF0cml4M2Z2KGxvY2F0aW9u
LCBzaXplLCB0cmFuc3Bvc2UsIGFycmF5KTsKKyAgICA6OmdsVW5pZm9ybU1hdHJpeDNmdihsb2Nh
dGlvbiwgYXJyYXkuYnVmU2l6ZSAvIDksIHRyYW5zcG9zZSwgYXJyYXkuZGF0YSk7CiB9CiAKLXZv
aWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXg0ZnYoR0NHTGludCBsb2Nh
dGlvbiwgR0NHTHNpemVpIHNpemUsIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZs
b2F0KiBhcnJheSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXg0
ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25z
dCBHQ0dMZmxvYXQ+IGFycmF5KQogewotICAgIC8vIEZJWE1FOiBsZW5ndGggbmVlZHMgdG8gYmUg
YSBtdWx0aXBsZSBvZiAxNi4KKyAgICBBU1NFUlQoIShhcnJheS5idWZTaXplICUgMTYpKTsKICAg
ICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICA6Omds
VW5pZm9ybU1hdHJpeDRmdihsb2NhdGlvbiwgc2l6ZSwgdHJhbnNwb3NlLCBhcnJheSk7CisgICAg
OjpnbFVuaWZvcm1NYXRyaXg0ZnYobG9jYXRpb24sIGFycmF5LmJ1ZlNpemUgLyAxNiwgdHJhbnNw
b3NlLCBhcnJheS5kYXRhKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dXNl
UHJvZ3JhbShQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0pCkBAIC0xNTk0LDEyICsxNTk0LDEyIEBA
IHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYjFmKEdDR0x1aW50IGlu
ZGV4LCBHQ0dMZmxvYXQgdjApCiAgICAgOjpnbFZlcnRleEF0dHJpYjFmKGluZGV4LCB2MCk7CiB9
CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYjFmdihHQ0dMdWlu
dCBpbmRleCwgY29uc3QgR0NHTGZsb2F0KiBhcnJheSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OnZlcnRleEF0dHJpYjFmdihHQ0dMdWludCBpbmRleCwgR0NHTFNwYW48Y29uc3QgR0NH
TGZsb2F0LCAxPiBhcnJheSkKIHsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICA6OmdsVmVydGV4QXR0cmliMWZ2KGluZGV4LCBhcnJheSk7Cisg
ICAgOjpnbFZlcnRleEF0dHJpYjFmdihpbmRleCwgYXJyYXkuZGF0YSk7CiB9CiAKIHZvaWQgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYjJmKEdDR0x1aW50IGluZGV4LCBHQ0dM
ZmxvYXQgdjAsIEdDR0xmbG9hdCB2MSkKQEAgLTE2MTAsMTIgKzE2MTAsMTIgQEAgdm9pZCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliMmYoR0NHTHVpbnQgaW5kZXgsIEdDR0xm
bG9hdCB2MCwgR0NHTGYKICAgICA6OmdsVmVydGV4QXR0cmliMmYoaW5kZXgsIHYwLCB2MSk7CiB9
CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYjJmdihHQ0dMdWlu
dCBpbmRleCwgY29uc3QgR0NHTGZsb2F0KiBhcnJheSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OnZlcnRleEF0dHJpYjJmdihHQ0dMdWludCBpbmRleCwgR0NHTFNwYW48Y29uc3QgR0NH
TGZsb2F0LCAyPiBhcnJheSkKIHsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICA6OmdsVmVydGV4QXR0cmliMmZ2KGluZGV4LCBhcnJheSk7Cisg
ICAgOjpnbFZlcnRleEF0dHJpYjJmdihpbmRleCwgYXJyYXkuZGF0YSk7CiB9CiAKIHZvaWQgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYjNmKEdDR0x1aW50IGluZGV4LCBHQ0dM
ZmxvYXQgdjAsIEdDR0xmbG9hdCB2MSwgR0NHTGZsb2F0IHYyKQpAQCAtMTYyNiwxMiArMTYyNiwx
MiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2ZXJ0ZXhBdHRyaWIzZihHQ0dMdWlu
dCBpbmRleCwgR0NHTGZsb2F0IHYwLCBHQ0dMZgogICAgIDo6Z2xWZXJ0ZXhBdHRyaWIzZihpbmRl
eCwgdjAsIHYxLCB2Mik7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZlcnRl
eEF0dHJpYjNmdihHQ0dMdWludCBpbmRleCwgY29uc3QgR0NHTGZsb2F0KiBhcnJheSkKK3ZvaWQg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYjNmdihHQ0dMdWludCBpbmRleCwg
R0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0LCAzPiBhcnJheSkKIHsKICAgICBpZiAoIW1ha2VDb250
ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICA6OmdsVmVydGV4QXR0cmliM2Z2
KGluZGV4LCBhcnJheSk7CisgICAgOjpnbFZlcnRleEF0dHJpYjNmdihpbmRleCwgYXJyYXkuZGF0
YSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYjRmKEdD
R0x1aW50IGluZGV4LCBHQ0dMZmxvYXQgdjAsIEdDR0xmbG9hdCB2MSwgR0NHTGZsb2F0IHYyLCBH
Q0dMZmxvYXQgdjMpCkBAIC0xNjQyLDEyICsxNjQyLDEyIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OnZlcnRleEF0dHJpYjRmKEdDR0x1aW50IGluZGV4LCBHQ0dMZmxvYXQgdjAsIEdD
R0xmCiAgICAgOjpnbFZlcnRleEF0dHJpYjRmKGluZGV4LCB2MCwgdjEsIHYyLCB2Myk7CiB9CiAK
LXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYjRmdihHQ0dMdWludCBp
bmRleCwgY29uc3QgR0NHTGZsb2F0KiBhcnJheSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OnZlcnRleEF0dHJpYjRmdihHQ0dMdWludCBpbmRleCwgR0NHTFNwYW48Y29uc3QgR0NHTGZs
b2F0LCA0PiBhcnJheSkKIHsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICA6OmdsVmVydGV4QXR0cmliNGZ2KGluZGV4LCBhcnJheSk7CisgICAg
OjpnbFZlcnRleEF0dHJpYjRmdihpbmRleCwgYXJyYXkuZGF0YSk7CiB9CiAKIHZvaWQgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYlBvaW50ZXIoR0NHTHVpbnQgaW5kZXgsIEdD
R0xpbnQgc2l6ZSwgR0NHTGVudW0gdHlwZSwgR0NHTGJvb2xlYW4gbm9ybWFsaXplZCwgR0NHTHNp
emVpIHN0cmlkZSwgR0NHTGludHB0ciBvZmZzZXQpCkBAIC0yMDU1LDcgKzIwNTUsNyBAQCBHQ0dM
c2l6ZWlwdHIgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFZlcnRleEF0dHJpYk9mZnNldChH
Q0dMdWludCBpbmRleCwgR0NHTAogICAgIHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMc2l6ZWlwdHI+
KHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KHBvaW50ZXIpKTsKIH0KIAotdm9pZCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6dGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQg
bGV2ZWwsIEdDR0xpbnQgeG9mZiwgR0NHTGludCB5b2ZmLCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xz
aXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgY29uc3Qgdm9pZCog
cGl4ZWxzKQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dGV4U3ViSW1hZ2UyRChHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZiwgR0NHTGludCB5b2ZmLCBH
Q0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVu
dW0gdHlwZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IHBpeGVscykKIHsKICAgICBpZiAoIW1h
a2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CkBAIC0yMDgzLDcgKzIwODMsNyBA
QCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp0ZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRh
cmdldCwgR0NHTGludCBsZXZlbCwgR0NHTAogICAgIH0KIAogICAgIC8vIEZJWE1FOiB3ZSB3aWxs
IG5lZWQgdG8gZGVhbCB3aXRoIFBpeGVsU3RvcmUgcGFyYW1zIHdoZW4gZGVhbGluZyB3aXRoIGlt
YWdlIGJ1ZmZlcnMgdGhhdCBkaWZmZXIgZnJvbSB0aGUgc3ViaW1hZ2Ugc2l6ZS4KLSAgICA6Omds
VGV4U3ViSW1hZ2UyRCh0YXJnZXQsIGxldmVsLCB4b2ZmLCB5b2ZmLCB3aWR0aCwgaGVpZ2h0LCBm
b3JtYXQsIHR5cGUsIHBpeGVscyk7CisgICAgOjpnbFRleFN1YkltYWdlMkQodGFyZ2V0LCBsZXZl
bCwgeG9mZiwgeW9mZiwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBwaXhlbHMuZGF0YSk7
CiAgICAgbV9zdGF0ZS50ZXh0dXJlU2VlZENvdW50LmFkZChtX3N0YXRlLmN1cnJlbnRCb3VuZFRl
eHR1cmUoKSk7CiB9CiAKQEAgLTIzOTUsMTcgKzIzOTUsMTUgQEAgdm9pZCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6ZnJhbWVidWZmZXJUZXh0dXJlTGF5ZXIoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
ZW51bQogICAgIFVOVVNFRF9QQVJBTShsYXllcik7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmludmFsaWRhdGVGcmFtZWJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXpl
aSBudW1BdHRhY2htZW50cywgY29uc3QgR0NHTGVudW0qIGF0dGFjaG1lbnRzKQordm9pZCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6aW52YWxpZGF0ZUZyYW1lYnVmZmVyKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+IGF0dGFjaG1lbnRzKQogewogICAgIFVOVVNFRF9Q
QVJBTSh0YXJnZXQpOwotICAgIFVOVVNFRF9QQVJBTShudW1BdHRhY2htZW50cyk7CiAgICAgVU5V
U0VEX1BBUkFNKGF0dGFjaG1lbnRzKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6aW52YWxpZGF0ZVN1YkZyYW1lYnVmZmVyKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpIG51
bUF0dGFjaG1lbnRzLCBjb25zdCBHQ0dMZW51bSogYXR0YWNobWVudHMsIEdDR0xpbnQgeCwgR0NH
TGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpCit2b2lkIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjppbnZhbGlkYXRlU3ViRnJhbWVidWZmZXIoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4gYXR0YWNobWVudHMsIEdDR0xpbnQgeCwgR0NHTGlu
dCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpCiB7CiAgICAgVU5VU0VEX1BB
UkFNKHRhcmdldCk7Ci0gICAgVU5VU0VEX1BBUkFNKG51bUF0dGFjaG1lbnRzKTsKICAgICBVTlVT
RURfUEFSQU0oYXR0YWNobWVudHMpOwogICAgIFVOVVNFRF9QQVJBTSh4KTsKICAgICBVTlVTRURf
UEFSQU0oeSk7CkBAIC0yNTI5LDkwICsyNTI3LDcwIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OnVuaWZvcm00dWkoR0NHTGludCBsb2NhdGlvbiwgR0NHTHVpbnQgdjAsIEdDR0x1aW50
CiAgICAgVU5VU0VEX1BBUkFNKHYzKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6dW5pZm9ybTF1aXYoR0NHTGludCBsb2NhdGlvbiwgY29uc3QgR0NHTHVpbnQqIGRhdGEsIEdD
R0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQordm9pZCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6dW5pZm9ybTF1aXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3Qg
R0NHTHVpbnQ+IGRhdGEpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGxvY2F0aW9uKTsKICAgICBVTlVT
RURfUEFSQU0oZGF0YSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY09mZnNldCk7Ci0gICAgVU5VU0VE
X1BBUkFNKHNyY0xlbmd0aCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVu
aWZvcm0ydWl2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0x1aW50KiBkYXRhLCBHQ0dMdWlu
dCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OnVuaWZvcm0ydWl2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0x1
aW50PiBkYXRhKQogewogICAgIFVOVVNFRF9QQVJBTShsb2NhdGlvbik7CiAgICAgVU5VU0VEX1BB
UkFNKGRhdGEpOwotICAgIFVOVVNFRF9QQVJBTShzcmNPZmZzZXQpOwotICAgIFVOVVNFRF9QQVJB
TShzcmNMZW5ndGgpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3Jt
M3VpdihHQ0dMaW50IGxvY2F0aW9uLCBjb25zdCBHQ0dMdWludCogZGF0YSwgR0NHTHVpbnQgc3Jj
T2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
Ojp1bmlmb3JtM3VpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdWludD4g
ZGF0YSkKIHsKICAgICBVTlVTRURfUEFSQU0obG9jYXRpb24pOwogICAgIFVOVVNFRF9QQVJBTShk
YXRhKTsKLSAgICBVTlVTRURfUEFSQU0oc3JjT2Zmc2V0KTsKLSAgICBVTlVTRURfUEFSQU0oc3Jj
TGVuZ3RoKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTR1aXYo
R0NHTGludCBsb2NhdGlvbiwgY29uc3QgR0NHTHVpbnQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNl
dCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5p
Zm9ybTR1aXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTHVpbnQ+IGRhdGEp
CiB7CiAgICAgVU5VU0VEX1BBUkFNKGxvY2F0aW9uKTsKICAgICBVTlVTRURfUEFSQU0oZGF0YSk7
Ci0gICAgVU5VU0VEX1BBUkFNKHNyY09mZnNldCk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY0xlbmd0
aCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXgyeDNm
dihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9h
dCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCit2b2lkIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4MngzZnYoR0NHTGludCBsb2NhdGlv
biwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEp
CiB7CiAgICAgVU5VU0VEX1BBUkFNKGxvY2F0aW9uKTsKICAgICBVTlVTRURfUEFSQU0odHJhbnNw
b3NlKTsKICAgICBVTlVTRURfUEFSQU0oZGF0YSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY09mZnNl
dCk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY0xlbmd0aCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXgzeDJmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9v
bGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0
LCBHQ0dMdWludCBzcmNMZW5ndGgpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlm
b3JtTWF0cml4M3gyZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBH
Q0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGxvY2F0
aW9uKTsKICAgICBVTlVTRURfUEFSQU0odHJhbnNwb3NlKTsKICAgICBVTlVTRURfUEFSQU0oZGF0
YSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY09mZnNldCk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY0xl
bmd0aCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXgy
eDRmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xm
bG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCit2b2lk
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4Mng0ZnYoR0NHTGludCBsb2Nh
dGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRh
dGEpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGxvY2F0aW9uKTsKICAgICBVTlVTRURfUEFSQU0odHJh
bnNwb3NlKTsKICAgICBVTlVTRURfUEFSQU0oZGF0YSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY09m
ZnNldCk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY0xlbmd0aCk7CiB9CiAKLXZvaWQgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXg0eDJmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dM
Ym9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zm
c2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1
bmlmb3JtTWF0cml4NHgyZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3Nl
LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGxv
Y2F0aW9uKTsKICAgICBVTlVTRURfUEFSQU0odHJhbnNwb3NlKTsKICAgICBVTlVTRURfUEFSQU0o
ZGF0YSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY09mZnNldCk7Ci0gICAgVU5VU0VEX1BBUkFNKHNy
Y0xlbmd0aCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRy
aXgzeDRmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdD
R0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCit2
b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4M3g0ZnYoR0NHTGludCBs
b2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+
IGRhdGEpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGxvY2F0aW9uKTsKICAgICBVTlVTRURfUEFSQU0o
dHJhbnNwb3NlKTsKICAgICBVTlVTRURfUEFSQU0oZGF0YSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNy
Y09mZnNldCk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY0xlbmd0aCk7CiB9CiAKLXZvaWQgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXg0eDNmdihHQ0dMaW50IGxvY2F0aW9uLCBH
Q0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3Jj
T2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
Ojp1bmlmb3JtTWF0cml4NHgzZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNw
b3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEpCiB7CiAgICAgVU5VU0VEX1BBUkFN
KGxvY2F0aW9uKTsKICAgICBVTlVTRURfUEFSQU0odHJhbnNwb3NlKTsKICAgICBVTlVTRURfUEFS
QU0oZGF0YSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY09mZnNldCk7Ci0gICAgVU5VU0VEX1BBUkFN
KHNyY0xlbmd0aCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZlcnRleEF0
dHJpYkk0aShHQ0dMdWludCBpbmRleCwgR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xpbnQgeiwg
R0NHTGludCB3KQpAQCAtMjYyNCw3ICsyNjAyLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6dmVydGV4QXR0cmliSTRpKEdDR0x1aW50IGluZGV4LCBHQ0dMaW50IHgsIEdDR0xpbnQK
ICAgICBVTlVTRURfUEFSQU0odyk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OnZlcnRleEF0dHJpYkk0aXYoR0NHTHVpbnQgaW5kZXgsIGNvbnN0IEdDR0xpbnQqIHZhbHVlcykK
K3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYkk0aXYoR0NHTHVpbnQg
aW5kZXgsIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQsIDQ+IHZhbHVlcykKIHsKICAgICBVTlVTRURf
UEFSQU0oaW5kZXgpOwogICAgIFVOVVNFRF9QQVJBTSh2YWx1ZXMpOwpAQCAtMjYzOSw3ICsyNjE3
LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliSTR1aShHQ0dM
dWludCBpbmRleCwgR0NHTHVpbnQgeCwgR0NHTHUKICAgICBVTlVTRURfUEFSQU0odyk7CiB9CiAK
LXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYkk0dWl2KEdDR0x1aW50
IGluZGV4LCBjb25zdCBHQ0dMdWludCogdmFsdWVzKQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6dmVydGV4QXR0cmliSTR1aXYoR0NHTHVpbnQgaW5kZXgsIEdDR0xTcGFuPGNvbnN0IEdD
R0x1aW50LCA0PiB2YWx1ZXMpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGluZGV4KTsKICAgICBVTlVT
RURfUEFSQU0odmFsdWVzKTsKQEAgLTI2NjQsMzQgKzI2NDIsMzAgQEAgdm9pZCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6ZHJhd1JhbmdlRWxlbWVudHMoR0NHTGVudW0gbW9kZSwgR0NHTHVpbnQg
c3RhcnQsIEcKICAgICBVTlVTRURfUEFSQU0ob2Zmc2V0KTsKIH0KIAotdm9pZCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6ZHJhd0J1ZmZlcnMoR0NHTHNpemVpIG4sIGNvbnN0IEdDR0xlbnVtKiBi
dWZzKQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6ZHJhd0J1ZmZlcnMoR0NHTFNwYW48
Y29uc3QgR0NHTGVudW0+IGJ1ZnMpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKG4pOwogICAgIFVOVVNF
RF9QQVJBTShidWZzKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y2xlYXJC
dWZmZXJpdihHQ0dMZW51bSBidWZmZXIsIEdDR0xpbnQgZHJhd2J1ZmZlciwgY29uc3QgR0NHTGlu
dCogdmFsdWVzLCBHQ0dMdWludCBzcmNPZmZzZXQpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpjbGVhckJ1ZmZlcml2KEdDR0xlbnVtIGJ1ZmZlciwgR0NHTGludCBkcmF3YnVmZmVyLCBH
Q0dMU3Bhbjxjb25zdCBHQ0dMaW50PiB2YWx1ZXMpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGJ1ZmZl
cik7CiAgICAgVU5VU0VEX1BBUkFNKGRyYXdidWZmZXIpOwogICAgIFVOVVNFRF9QQVJBTSh2YWx1
ZXMpOwotICAgIFVOVVNFRF9QQVJBTShzcmNPZmZzZXQpOwogfQogCi12b2lkIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpjbGVhckJ1ZmZlcnVpdihHQ0dMZW51bSBidWZmZXIsIEdDR0xpbnQgZHJh
d2J1ZmZlciwgY29uc3QgR0NHTHVpbnQqIHZhbHVlcywgR0NHTHVpbnQgc3JjT2Zmc2V0KQordm9p
ZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y2xlYXJCdWZmZXJ1aXYoR0NHTGVudW0gYnVmZmVy
LCBHQ0dMaW50IGRyYXdidWZmZXIsIEdDR0xTcGFuPGNvbnN0IEdDR0x1aW50PiB2YWx1ZXMpCiB7
CiAgICAgVU5VU0VEX1BBUkFNKGJ1ZmZlcik7CiAgICAgVU5VU0VEX1BBUkFNKGRyYXdidWZmZXIp
OwogICAgIFVOVVNFRF9QQVJBTSh2YWx1ZXMpOwotICAgIFVOVVNFRF9QQVJBTShzcmNPZmZzZXQp
OwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjbGVhckJ1ZmZlcmZ2KEdDR0xl
bnVtIGJ1ZmZlciwgR0NHTGludCBkcmF3YnVmZmVyLCBjb25zdCBHQ0dMZmxvYXQqIHZhbHVlcywg
R0NHTHVpbnQgc3JjT2Zmc2V0KQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y2xlYXJC
dWZmZXJmdihHQ0dMZW51bSBidWZmZXIsIEdDR0xpbnQgZHJhd2J1ZmZlciwgR0NHTFNwYW48Y29u
c3QgR0NHTGZsb2F0PiB2YWx1ZXMpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGJ1ZmZlcik7CiAgICAg
VU5VU0VEX1BBUkFNKGRyYXdidWZmZXIpOwogICAgIFVOVVNFRF9QQVJBTSh2YWx1ZXMpOwotICAg
IFVOVVNFRF9QQVJBTShzcmNPZmZzZXQpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpjbGVhckJ1ZmZlcmZpKEdDR0xlbnVtIGJ1ZmZlciwgR0NHTGludCBkcmF3YnVmZmVyLCBH
Q0dMZmxvYXQgZGVwdGgsIEdDR0xpbnQgc3RlbmNpbCkKQEAgLTI5OTQsMTUzICsyOTY4LDgzIEBA
IHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNvbXByZXNzZWRUZXhJbWFnZTJEKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGludCBsZXZlCiAgICAgVU5VU0VEX1BBUkFNKHNyY0xlbmd0aE92ZXJy
aWRlKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y29tcHJlc3NlZFRleFN1
YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQs
IEdDR0xpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dM
ZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xpbnRwdHIgb2Zmc2V0KQordm9p
ZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZFBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQg
eSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdD
R0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KQogewotICAgIFVOVVNFRF9QQVJBTSh0YXJn
ZXQpOwotICAgIFVOVVNFRF9QQVJBTShsZXZlbCk7Ci0gICAgVU5VU0VEX1BBUkFNKHhvZmZzZXQp
OwotICAgIFVOVVNFRF9QQVJBTSh5b2Zmc2V0KTsKKyAgICBVTlVTRURfUEFSQU0oeCk7CisgICAg
VU5VU0VEX1BBUkFNKHkpOwogICAgIFVOVVNFRF9QQVJBTSh3aWR0aCk7CiAgICAgVU5VU0VEX1BB
UkFNKGhlaWdodCk7CiAgICAgVU5VU0VEX1BBUkFNKGZvcm1hdCk7Ci0gICAgVU5VU0VEX1BBUkFN
KGltYWdlU2l6ZSk7CisgICAgVU5VU0VEX1BBUkFNKHR5cGUpOwogICAgIFVOVVNFRF9QQVJBTShv
ZmZzZXQpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjb21wcmVzc2VkVGV4
U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNl
dCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdD
R0xlbnVtIGZvcm1hdCwgY29uc3Qgdm9pZCogc3JjRGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBH
Q0dMdWludCBzcmNMZW5ndGhPdmVycmlkZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OnJlYWRQaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNp
emVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBjb25zdCB2b2lkKiBk
c3REYXRhLCBHQ0dMdWludCBkc3RPZmZzZXQpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHRhcmdldCk7
Ci0gICAgVU5VU0VEX1BBUkFNKGxldmVsKTsKLSAgICBVTlVTRURfUEFSQU0oeG9mZnNldCk7Ci0g
ICAgVU5VU0VEX1BBUkFNKHlvZmZzZXQpOworICAgIFVOVVNFRF9QQVJBTSh4KTsKKyAgICBVTlVT
RURfUEFSQU0oeSk7CiAgICAgVU5VU0VEX1BBUkFNKHdpZHRoKTsKICAgICBVTlVTRURfUEFSQU0o
aGVpZ2h0KTsKICAgICBVTlVTRURfUEFSQU0oZm9ybWF0KTsKLSAgICBVTlVTRURfUEFSQU0oc3Jj
RGF0YSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY09mZnNldCk7Ci0gICAgVU5VU0VEX1BBUkFNKHNy
Y0xlbmd0aE92ZXJyaWRlKTsKKyAgICBVTlVTRURfUEFSQU0odHlwZSk7CisgICAgVU5VU0VEX1BB
UkFNKGRzdERhdGEpOworICAgIFVOVVNFRF9QQVJBTShkc3RPZmZzZXQpOwogfQogCi12b2lkIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMWZ2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0
IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgp
Cit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRBY3RpdmVVbmlmb3JtQmxvY2tpdihH
Q0dMdWludCBwcm9ncmFtLCBHQ0dMdWludCB1bmlmb3JtQmxvY2tJbmRleCwgR0NHTGVudW0gcG5h
bWUsIEdDR0xTcGFuPEdDR0xpbnQ+IHBhcmFtcykKIHsKLSAgICBVTlVTRURfUEFSQU0obG9jYXRp
b24pOwotICAgIFVOVVNFRF9QQVJBTShkYXRhKTsKLSAgICBVTlVTRURfUEFSQU0oc3JjT2Zmc2V0
KTsKLSAgICBVTlVTRURfUEFSQU0oc3JjTGVuZ3RoKTsKKyAgICBVTlVTRURfUEFSQU0ocHJvZ3Jh
bSk7CisgICAgVU5VU0VEX1BBUkFNKHVuaWZvcm1CbG9ja0luZGV4KTsKKyAgICBVTlVTRURfUEFS
QU0ocG5hbWUpOworICAgIFVOVVNFRF9QQVJBTShwYXJhbXMpOwogfQogCi12b2lkIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMmZ2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0xm
bG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCit2b2lk
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp0ZXhJbWFnZTJEKEdDR0xlbnVtLCBHQ0dMaW50LCBH
Q0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWksIEdDR0xpbnQsIEdDR0xlbnVtLCBHQ0dMZW51
bSAsIEdDR0xpbnRwdHIpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGxvY2F0aW9uKTsKLSAgICBVTlVT
RURfUEFSQU0oZGF0YSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY09mZnNldCk7Ci0gICAgVU5VU0VE
X1BBUkFNKHNyY0xlbmd0aCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVu
aWZvcm0zZnYoR0NHTGludCBsb2NhdGlvbiwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWlu
dCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OnRleFN1YkltYWdlMkQoR0NHTGVudW0sIEdDR0xpbnQsIEdDR0xpbnQsIEdDR0xpbnQs
IEdDR0xzaXplaSwgR0NHTHNpemVpLCBHQ0dMZW51bSwgR0NHTGVudW0sIEdDR0xpbnRwdHIpCiB7
Ci0gICAgVU5VU0VEX1BBUkFNKGxvY2F0aW9uKTsKLSAgICBVTlVTRURfUEFSQU0oZGF0YSk7Ci0g
ICAgVU5VU0VEX1BBUkFNKHNyY09mZnNldCk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY0xlbmd0aCk7
CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm00ZnYoR0NHTGludCBs
b2NhdGlvbiwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1
aW50IHNyY0xlbmd0aCkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNvbXByZXNzZWRU
ZXhJbWFnZTJEKEdDR0xlbnVtLCBHQ0dMaW50LCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6
ZWksIEdDR0xpbnQsIEdDR0xzaXplaSwgR0NHTGludHB0cikKIHsKLSAgICBVTlVTRURfUEFSQU0o
bG9jYXRpb24pOwotICAgIFVOVVNFRF9QQVJBTShkYXRhKTsKLSAgICBVTlVTRURfUEFSQU0oc3Jj
T2Zmc2V0KTsKLSAgICBVTlVTRURfUEFSQU0oc3JjTGVuZ3RoKTsKIH0KIAotdm9pZCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTFpdihHQ0dMaW50IGxvY2F0aW9uLCBjb25zdCBHQ0dM
aW50KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKK3ZvaWQg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKEdDR0xlbnVt
LCBHQ0dMaW50LCBHQ0dMaW50LCBHQ0dMaW50LCBHQ0dMc2l6ZWksIEdDR0xzaXplaSwgR0NHTGVu
dW0sIEdDR0xzaXplaSwgR0NHTGludHB0cikKIHsKLSAgICBVTlVTRURfUEFSQU0obG9jYXRpb24p
OwotICAgIFVOVVNFRF9QQVJBTShkYXRhKTsKLSAgICBVTlVTRURfUEFSQU0oc3JjT2Zmc2V0KTsK
LSAgICBVTlVTRURfUEFSQU0oc3JjTGVuZ3RoKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6dW5pZm9ybTJpdihHQ0dMaW50IGxvY2F0aW9uLCBjb25zdCBHQ0dMaW50KiBkYXRh
LCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKK3ZvaWQgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OnRleEltYWdlM0QoR0NHTGVudW0sIEdDR0xpbnQsIEdDR0xpbnQsIEdD
R0xzaXplaSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWksIEdDR0xpbnQsIEdDR0xlbnVtLCBHQ0dMZW51
bSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+KQogewotICAgIFVOVVNFRF9QQVJBTShsb2NhdGlv
bik7Ci0gICAgVU5VU0VEX1BBUkFNKGRhdGEpOwotICAgIFVOVVNFRF9QQVJBTShzcmNPZmZzZXQp
OwotICAgIFVOVVNFRF9QQVJBTShzcmNMZW5ndGgpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjp1bmlmb3JtM2l2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0xpbnQqIGRh
dGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQordm9pZCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6dGV4SW1hZ2UzRChHQ0dMZW51bSwgR0NHTGludCwgR0NHTGludCwg
R0NHTHNpemVpLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSwgR0NHTGludCwgR0NHTGVudW0sIEdDR0xl
bnVtLCBHQ0dMaW50cHRyKQogewotICAgIFVOVVNFRF9QQVJBTShsb2NhdGlvbik7Ci0gICAgVU5V
U0VEX1BBUkFNKGRhdGEpOwotICAgIFVOVVNFRF9QQVJBTShzcmNPZmZzZXQpOwotICAgIFVOVVNF
RF9QQVJBTShzcmNMZW5ndGgpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1
bmlmb3JtNGl2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0xpbnQqIGRhdGEsIEdDR0x1aW50
IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6dGV4U3ViSW1hZ2UzRChHQ0dMZW51bSwgR0NHTGludCwgR0NHTGludCwgR0NHTGludCwg
R0NHTGludCwgR0NHTHNpemVpLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSwgR0NHTGVudW0sIEdDR0xl
bnVtLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4pCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGxvY2F0
aW9uKTsKLSAgICBVTlVTRURfUEFSQU0oZGF0YSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY09mZnNl
dCk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY0xlbmd0aCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXgyZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xl
YW4gdHJhbnNwb3NlLCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwg
R0NHTHVpbnQgc3JjTGVuZ3RoKQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dGV4U3Vi
SW1hZ2UzRChHQ0dMZW51bSwgR0NHTGludCwgR0NHTGludCwgR0NHTGludCwgR0NHTGludCwgR0NH
THNpemVpLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSwgR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dMaW50
cHRyKQogewotICAgIFVOVVNFRF9QQVJBTShsb2NhdGlvbik7Ci0gICAgVU5VU0VEX1BBUkFNKHRy
YW5zcG9zZSk7Ci0gICAgVU5VU0VEX1BBUkFNKGRhdGEpOwotICAgIFVOVVNFRF9QQVJBTShzcmNP
ZmZzZXQpOwotICAgIFVOVVNFRF9QQVJBTShzcmNMZW5ndGgpOwotfQotCi12b2lkIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4M2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xi
b29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZz
ZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKLXsKLSAgICBVTlVTRURfUEFSQU0obG9jYXRpb24pOwot
ICAgIFVOVVNFRF9QQVJBTSh0cmFuc3Bvc2UpOwotICAgIFVOVVNFRF9QQVJBTShkYXRhKTsKLSAg
ICBVTlVTRURfUEFSQU0oc3JjT2Zmc2V0KTsKLSAgICBVTlVTRURfUEFSQU0oc3JjTGVuZ3RoKTsK
IH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybU1hdHJpeDRmdihHQ0dM
aW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogZGF0
YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCit2b2lkIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpjb21wcmVzc2VkVGV4SW1hZ2UzRChHQ0dMZW51bSwgR0NHTGludCwg
R0NHTGVudW0sIEdDR0xzaXplaSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWksIEdDR0xpbnQsIEdDR0xz
aXplaSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+KQogewotICAgIFVOVVNFRF9QQVJBTShsb2Nh
dGlvbik7Ci0gICAgVU5VU0VEX1BBUkFNKHRyYW5zcG9zZSk7Ci0gICAgVU5VU0VEX1BBUkFNKGRh
dGEpOwotICAgIFVOVVNFRF9QQVJBTShzcmNPZmZzZXQpOwotICAgIFVOVVNFRF9QQVJBTShzcmNM
ZW5ndGgpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkUGl4ZWxzKEdD
R0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdD
R0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpCit2b2lkIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjb21wcmVzc2VkVGV4SW1hZ2UzRChHQ0dMZW51bSwgR0NH
TGludCwgR0NHTGVudW0sIEdDR0xzaXplaSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWksIEdDR0xpbnQs
IEdDR0xzaXplaSwgR0NHTGludHB0cikKIHsKLSAgICBVTlVTRURfUEFSQU0oeCk7Ci0gICAgVU5V
U0VEX1BBUkFNKHkpOwotICAgIFVOVVNFRF9QQVJBTSh3aWR0aCk7Ci0gICAgVU5VU0VEX1BBUkFN
KGhlaWdodCk7Ci0gICAgVU5VU0VEX1BBUkFNKGZvcm1hdCk7Ci0gICAgVU5VU0VEX1BBUkFNKHR5
cGUpOwotICAgIFVOVVNFRF9QQVJBTShvZmZzZXQpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpyZWFkUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lk
dGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgY29u
c3Qgdm9pZCogZHN0RGF0YSwgR0NHTHVpbnQgZHN0T2Zmc2V0KQordm9pZCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6Y29tcHJlc3NlZFRleFN1YkltYWdlM0QoR0NHTGVudW0sIEdDR0xpbnQsIEdD
R0xpbnQsIEdDR0xpbnQsIEdDR0xpbnQsIEdDR0xzaXplaSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWks
IEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPikKIHsKLSAgICBV
TlVTRURfUEFSQU0oeCk7Ci0gICAgVU5VU0VEX1BBUkFNKHkpOwotICAgIFVOVVNFRF9QQVJBTSh3
aWR0aCk7Ci0gICAgVU5VU0VEX1BBUkFNKGhlaWdodCk7Ci0gICAgVU5VU0VEX1BBUkFNKGZvcm1h
dCk7Ci0gICAgVU5VU0VEX1BBUkFNKHR5cGUpOwotICAgIFVOVVNFRF9QQVJBTShkc3REYXRhKTsK
LSAgICBVTlVTRURfUEFSQU0oZHN0T2Zmc2V0KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6Z2V0QWN0aXZlVW5pZm9ybUJsb2NraXYoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTHVp
bnQgdW5pZm9ybUJsb2NrSW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMaW50PiBw
YXJhbXMpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjb21wcmVzc2VkVGV4U3ViSW1h
Z2UzRChHQ0dMZW51bSwgR0NHTGludCwgR0NHTGludCwgR0NHTGludCwgR0NHTGludCwgR0NHTHNp
emVpLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSwgR0NHTGVudW0sIEdDR0xzaXplaSwgR0NHTGludHB0
cikKIHsKLSAgICBVTlVTRURfUEFSQU0ocHJvZ3JhbSk7Ci0gICAgVU5VU0VEX1BBUkFNKHVuaWZv
cm1CbG9ja0luZGV4KTsKLSAgICBVTlVTRURfUEFSQU0ocG5hbWUpOwotICAgIFVOVVNFRF9QQVJB
TShwYXJhbXMpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xFUy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xFUy5j
cHAKaW5kZXggYTFkODA5MmJjY2FlMDA4ZDZlNjllOGNkOGY2ZGRmYjE3YWNhZjAwZi4uMjNkNzRm
YTgwZDcwNzkxYmU2MDBkZjU4ZTc1NjE3MzM5NmFhNTUwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMRVMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGlj
c0NvbnRleHRHTE9wZW5HTEVTLmNwcApAQCAtMjE1LDE1ICsyMTUsMTQgQEAgdm9pZCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6Z2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0KEdDR0xlbnVtIHNoYWRl
clR5cGUsIEdDR0wKICAgICA6OmdsR2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0KHNoYWRlclR5cGUs
IHByZWNpc2lvblR5cGUsIHJhbmdlLmRhdGEsIHByZWNpc2lvbik7CiB9CiAKLWJvb2wgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OnRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxl
dmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkg
aGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBj
b25zdCB2b2lkKiBwaXhlbHMpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp0ZXhJbWFn
ZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3Jt
YXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdD
R0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IHBp
eGVscykKIHsKLSAgICBpZiAod2lkdGggJiYgaGVpZ2h0ICYmICFwaXhlbHMpIHsKKyAgICBpZiAo
d2lkdGggJiYgaGVpZ2h0ICYmICFwaXhlbHMuZGF0YSkgewogICAgICAgICBzeW50aGVzaXplR0xF
cnJvcihJTlZBTElEX1ZBTFVFKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1
cm47CiAgICAgfQogCi0gICAgdGV4SW1hZ2UyRERpcmVjdCh0YXJnZXQsIGxldmVsLCBpbnRlcm5h
bGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgYm9yZGVyLCBmb3JtYXQsIHR5cGUsIHBpeGVscyk7Ci0g
ICAgcmV0dXJuIHRydWU7CisgICAgdGV4SW1hZ2UyRERpcmVjdCh0YXJnZXQsIGxldmVsLCBpbnRl
cm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgYm9yZGVyLCBmb3JtYXQsIHR5cGUsIHBpeGVscy5k
YXRhKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmFsaWRhdGVBdHRyaWJ1
dGVzKCkK
</data>
<flag name="commit-queue"
          id="431881"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>414896</attachid>
            <date>2020-11-26 05:26:00 -0800</date>
            <delta_ts>2020-11-26 06:21:17 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219256-20201126152556.patch</filename>
            <type>text/plain</type>
            <size>203701</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwMTY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzIzYWI2YjRlNmM0NDFj
MDYzZWM1Mzg0YzZmOTA5NDdiZDFhNDY5ZC4uNDYxNzUzYzg2N2RlMDc0MjA5Y2QzNzY2ODkzZGY5
NTQzMzJkMzRlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzNiBAQAorMjAyMC0xMS0yMyAgS2lt
bW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIEdyYXBoaWNzQ29u
dGV4dEdMIHNob3VsZCBoYXZlIHJvYnVzdCBtdWx0aXZhbHVlIHNldHRlcnMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxOTI1NgorCisgICAgICAgIFJl
dmlld2VkIGJ5IERlYW4gSmFja3Nvbi4KKworICAgICAgICBSZXBsYWNlIGJ1ZlNpemUsIHBvaW50
ZXIgcGFpcnMgYW5kIHBsYWluIHBvaW50ZXJzIGluIEdyYXBoaWNzQ29udGV4dEdMCisgICAgICAg
IHdpdGggR0NHTFNwYW4uIFRoaXMgbWFrZXMgaXQgZWFzaWVyIHRvIHVuZGVyc3RhbmQgaG93IG1h
bnkgdmFsdWVzIHRoZXJlCisgICAgICAgIGFyZSBwb2ludGVkIGJ5IHRoZSBwb2ludGVyLiBUaGlz
IGlzIG5lZWRlZCBmb3Igc2ltcGxlciBpbXBsZW1lbnRhdGlvbiBvZiBHUFUKKyAgICAgICAgcHJv
Y2VzcyBJUEMsIHdoZXJlIHRoZSBJUEMgbGF5ZXIgZG9lcyBub3QgbmVlZCB0byBpbnRlcnByZXQg
dGhlIE9wZW5HTAorICAgICAgICBwcm9wZXJ0aWVzLgorCisgICAgICAgIEluIFdlYkdMIGltcGxl
bWVudGF0aW9uLCBjaGFuZ2VzIHRoZSB2YWxpZGF0aW9uIGZ1bmN0aW9ucyB0byByZXR1cm4KKyAg
ICAgICAgdGhlIG1lbW9yeSByZWZlcmVuY2UgdGhhdCB3aWxsIGJlIHRvdWNoZWQgYnkgdGhlIHZh
bGlkIGZ1bmN0aW9uIGNhbGwuCisgICAgICAgIE9uIHZhbGlkYXRpb24gZmFpbHVyZSwgbnVsbG9w
dCB3aWxsIGJlIHJldHVybmVkLgorCisgICAgICAgIE1ha2VzIHRoZSBleGlzdGluZyBHcmFwaGlj
c0NvbnRleHRHTCB0ZXh0dXJlIGltYWdlIG1hbmlwdWxhdGlvbiBmdW5jdGlvbnMKKyAgICAgICAg
dG8gc3VwcG9ydCByb2J1c3QgaW52b2NhdGlvbi4gUmVtb3ZlcyB0aGUgcm9idXN0IEFQSXMgZnJv
bSBFeHRlbnNpb25zR0wuCisgICAgICAgIEFkZHMgdGhlIG1pc3NpbmcgdGV4dHVyZSBpbWFnZSBt
YW5pcHVsYXRpb24gZnVuY3Rpb25zIGZyb20gRXh0ZW5zaW9uR0wKKyAgICAgICAgdG8gR3JhcGhp
Y3NDb250ZXh0R0wuIEltcGxlbWVudGF0aW9ucyBmb3IgdGhlIG1vdmVkIG1ldGhvZHMKKyAgICAg
ICAgZXhpc3Qgb25seSBmb3IgQU5HTEUgaW1wbGVtZW50YXRpb24gb2YgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0wuCisKKyAgICAgICAgQ2hhbmdlcyB0aGUgQU5HTEUgdmFyaWFudCBvZiBHcmFwaGlj
c0NvbnRleHRHTDo6dGV4SW1hZ2UyRCB0byBiZQorICAgICAgICBpbXBsZW1lbnRlZCBhcyBFeHRl
bnNpb25zR0xBTkdMRTo6dGV4SW1hZ2UyRFJvYnVzdEFOR0xFLiBCZWZvcmUsIGZvcgorICAgICAg
ICBBTkdMRSB0aGUgR3JhcGhpY3NDb250ZXh0R0w6OnRleEltYWdlMkQgd2FzIHVudXNlZC4KKwor
ICAgICAgICBObyBuZXcgdGVzdHMsIGEgcmVmYWN0b3IuCisKKyAgICAgICAgKiBodG1sL2NhbnZh
cy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJl
bmRlcmluZ0NvbnRleHQ6OmludmFsaWRhdGVGcmFtZWJ1ZmZlcik6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjppbnZhbGlkYXRlU3ViRnJhbWVidWZmZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTF1aXYpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTJ1aXYpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTN1aXYpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTR1aXYpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybU1hdHJpeDJ4M2Z2
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm1NYXRy
aXgzeDJmdik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlm
b3JtTWF0cml4Mng0ZnYpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4
dDo6dW5pZm9ybU1hdHJpeDR4MmZ2KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmlu
Z0NvbnRleHQ6OnVuaWZvcm1NYXRyaXgzeDRmdik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJS
ZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtTWF0cml4NHgzZnYpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dmVydGV4QXR0cmliSTRpdik6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp2ZXJ0ZXhBdHRyaWJJNHVpdik6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpkcmF3QnVmZmVycyk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpjbGVhckJ1ZmZlcml2KToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmNsZWFyQnVmZmVydWl2KToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmNsZWFyQnVmZmVyZnYpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dmFsaWRhdGVDbGVhckJ1
ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3Jt
MWZ2KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm0y
ZnYpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTNm
dik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtNGZ2
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm0xaXYp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTJpdik6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtM2l2KToK
KyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm00aXYpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybU1hdHJpeDJm
dik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtTWF0
cml4M2Z2KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZv
cm1NYXRyaXg0ZnYpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRl
eHQuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTERyYXdCdWZmZXJzLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdMRHJhd0J1ZmZlcnM6OmRyYXdCdWZmZXJzV0VCR0wpOgorICAgICAg
ICAqIGh0bWwvY2FudmFzL1dlYkdMRnJhbWVidWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
V2ViR0xGcmFtZWJ1ZmZlcjo6ZHJhd0J1ZmZlcnNJZk5lY2Vzc2FyeSk6CisgICAgICAgICogaHRt
bC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpidWZmZXJEYXRhKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmJ1ZmZlclN1YkRhdGEpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybTFmdik6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtMmZ2KToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm0zZnYpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybTRmdik6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtMWl2KToK
KyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm0yaXYp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybTNp
dik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3Jt
NGl2KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZv
cm1NYXRyaXgyZnYpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZTo6dW5pZm9ybU1hdHJpeDNmdik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlOjp1bmlmb3JtTWF0cml4NGZ2KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlVW5pZm9ybU1hdHJpeFBhcmFtZXRlcnMpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmVydGV4QXR0cmliZnZJ
bXBsKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmg6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZVVu
aWZvcm1QYXJhbWV0ZXJzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNpb25z
R0wuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXNHTC5oOgorICAgICAgICAo
R0NHTFNwYW46OkdDR0xTcGFuKToKKyAgICAgICAgKHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90
Pjo6bWF4KToKKyAgICAgICAgKG1ha2VHQ0dMU3Bhbik6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXh0
ZW5zaW9uc0dMQU5HTEU6OmRyYXdCdWZmZXJzRVhUKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmJ1ZmZlckRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmJ1ZmZlclN1YkRhdGEpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0xZnYpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0yZnYpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0zZnYpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm00ZnYpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0xaXYpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0yaXYpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0zaXYpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm00aXYpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXgyZnYpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXgzZnYpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXg0ZnYp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJp
YjFmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4
QXR0cmliMmZ2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2
ZXJ0ZXhBdHRyaWIzZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OnZlcnRleEF0dHJpYjRmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6aW52YWxpZGF0ZUZyYW1lYnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjppbnZhbGlkYXRlU3ViRnJhbWVidWZmZXIpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0xdWl2KToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMnVpdik6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTN1aXYpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm00dWl2KToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4MngzZnYp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRy
aXgzeDJmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5p
Zm9ybU1hdHJpeDJ4NGZ2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjp1bmlmb3JtTWF0cml4NHgyZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXgzeDRmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybU1hdHJpeDR4M2Z2KToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2ZXJ0ZXhBdHRyaWJJNGl2KToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2ZXJ0ZXhBdHRyaWJJNHVpdik6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6ZHJhd0J1ZmZlcnMpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNsZWFyQnVmZmVyaXYp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNsZWFyQnVmZmVy
dWl2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjbGVhckJ1
ZmZlcmZ2KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jdi9HcmFwaGljc0NvbnRleHRH
TENWQU5HTEUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xDVkFOR0xF
Ojppbml0aWFsaXplVVZDb250ZXh0T2JqZWN0cyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTENWQU5HTEU6OmNvcHlQaXhlbEJ1ZmZlclRvVGV4dHVyZSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmg6CisKIDIw
MjAtMTEtMjIgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgogCiAgICAgICAgIFtM
RkNdW0ludGVncmF0aW9uXSBDb252ZXJ0IHNvbWUgcmVtYWluaW5nIElubGluZUJveCBhY2Nlc3Mg
dG8gdXNlIGlubGluZSBpdGVyYXRvcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcAppbmRleCA1NWJjMWY4ZGIyNDlkMzM4MjJl
Nzg4OWNhNzgzZjViZWMwMjVhMjk5Li42OGVmM2E5OWZmMDViNGEzMzJmOTU5ODE0YzllODg4YzI5
NWY3MzY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5k
ZXJpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJS
ZW5kZXJpbmdDb250ZXh0LmNwcApAQCAtODk1LDcgKzg5NSw3IEBAIHZvaWQgV2ViR0wyUmVuZGVy
aW5nQ29udGV4dDo6aW52YWxpZGF0ZUZyYW1lYnVmZmVyKEdDR0xlbnVtIHRhcmdldCwgY29uc3Qg
VmVjdG9yCiAgICAgVmVjdG9yPEdDR0xlbnVtPiB0cmFuc2xhdGVkQXR0YWNobWVudHMgPSBhdHRh
Y2htZW50czsKICAgICBpZiAoIWNoZWNrQW5kVHJhbnNsYXRlQXR0YWNobWVudHMoImludmFsaWRh
dGVGcmFtZWJ1ZmZlciIsIHRhcmdldCwgdHJhbnNsYXRlZEF0dGFjaG1lbnRzKSkKICAgICAgICAg
cmV0dXJuOwotICAgIG1fY29udGV4dC0+aW52YWxpZGF0ZUZyYW1lYnVmZmVyKHRhcmdldCwgdHJh
bnNsYXRlZEF0dGFjaG1lbnRzLnNpemUoKSwgdHJhbnNsYXRlZEF0dGFjaG1lbnRzLmRhdGEoKSk7
CisgICAgbV9jb250ZXh0LT5pbnZhbGlkYXRlRnJhbWVidWZmZXIodGFyZ2V0LCB0cmFuc2xhdGVk
QXR0YWNobWVudHMpOwogfQogCiB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmludmFsaWRh
dGVTdWJGcmFtZWJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQsIGNvbnN0IFZlY3RvcjxHQ0dMZW51bT4m
IGF0dGFjaG1lbnRzLCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dM
c2l6ZWkgaGVpZ2h0KQpAQCAtOTA2LDcgKzkwNiw3IEBAIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29u
dGV4dDo6aW52YWxpZGF0ZVN1YkZyYW1lYnVmZmVyKEdDR0xlbnVtIHRhcmdldCwgY29uc3QgVmVj
CiAgICAgVmVjdG9yPEdDR0xlbnVtPiB0cmFuc2xhdGVkQXR0YWNobWVudHMgPSBhdHRhY2htZW50
czsKICAgICBpZiAoIWNoZWNrQW5kVHJhbnNsYXRlQXR0YWNobWVudHMoImludmFsaWRhdGVTdWJG
cmFtZWJ1ZmZlciIsIHRhcmdldCwgdHJhbnNsYXRlZEF0dGFjaG1lbnRzKSkKICAgICAgICAgcmV0
dXJuOwotICAgIG1fY29udGV4dC0+aW52YWxpZGF0ZVN1YkZyYW1lYnVmZmVyKHRhcmdldCwgdHJh
bnNsYXRlZEF0dGFjaG1lbnRzLnNpemUoKSwgdHJhbnNsYXRlZEF0dGFjaG1lbnRzLmRhdGEoKSwg
eCwgeSwgd2lkdGgsIGhlaWdodCk7CisgICAgbV9jb250ZXh0LT5pbnZhbGlkYXRlU3ViRnJhbWVi
dWZmZXIodGFyZ2V0LCB0cmFuc2xhdGVkQXR0YWNobWVudHMsIHgsIHksIHdpZHRoLCBoZWlnaHQp
OwogfQogCiB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnJlYWRCdWZmZXIoR0NHTGVudW0g
c3JjKQpAQCAtMTEyOSw3ICsxMTI5LDcgQEAgdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp0
ZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludAogICAgIGlm
ICghdmFsaWRhdGVUZXhGdW5jKCJ0ZXhJbWFnZTJEIiwgVGV4SW1hZ2VGdW5jdGlvblR5cGU6OlRl
eEltYWdlLCBTb3VyY2VVbnBhY2tCdWZmZXIsIHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0
LCB3aWR0aCwgaGVpZ2h0LCAxLCBib3JkZXIsIGZvcm1hdCwgdHlwZSwgMCwgMCwgMCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnRleEltYWdlMkRS
b2J1c3RBTkdMRSh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwg
Ym9yZGVyLCBmb3JtYXQsIHR5cGUsIDAsIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KG9mZnNldCkp
OworICAgIG1fY29udGV4dC0+dGV4SW1hZ2UyRCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1h
dCwgd2lkdGgsIGhlaWdodCwgYm9yZGVyLCBmb3JtYXQsIHR5cGUsIG9mZnNldCk7CiB9CiAKIEV4
Y2VwdGlvbk9yPHZvaWQ+IFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnRleEltYWdlMkQoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IGludGVybmFsZm9ybWF0LCBHQ0dMc2l6
ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3Jt
YXQsIEdDR0xlbnVtIHR5cGUsIFRleEltYWdlU291cmNlJiYgc291cmNlKQpAQCAtMTE3Myw3ICsx
MTczLDcgQEAgdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp0ZXhJbWFnZTNEKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludAogICAgIGlmICghdmFsaWRhdGVUZXhGdW5j
KCJ0ZXhJbWFnZTNEIiwgVGV4SW1hZ2VGdW5jdGlvblR5cGU6OlRleEltYWdlLCBTb3VyY2VVbnBh
Y2tCdWZmZXIsIHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBk
ZXB0aCwgYm9yZGVyLCBmb3JtYXQsIHR5cGUsIDAsIDAsIDApKQogICAgICAgICByZXR1cm47CiAK
LSAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS50ZXhJbWFnZTNEUm9idXN0QU5HTEUodGFy
Z2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBib3JkZXIs
IGZvcm1hdCwgdHlwZSwgMCwgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ob2Zmc2V0KSk7CisgICAg
bV9jb250ZXh0LT50ZXhJbWFnZTNEKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0
aCwgaGVpZ2h0LCBkZXB0aCwgYm9yZGVyLCBmb3JtYXQsIHR5cGUsICBvZmZzZXQpOwogfQogCiBF
eGNlcHRpb25Pcjx2b2lkPiBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp0ZXhJbWFnZTNEKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCBpbnRlcm5hbGZvcm1hdCwgR0NHTHNp
emVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xpbnQgYm9y
ZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIFRleEltYWdlU291cmNlJiYgc291
cmNlKQpAQCAtMTI1OSw3ICsxMjU5LDcgQEAgdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp0
ZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGkKICAgICBp
ZiAoIXZhbGlkYXRlVGV4RnVuYygidGV4U3ViSW1hZ2UyRCIsIFRleEltYWdlRnVuY3Rpb25UeXBl
OjpUZXhTdWJJbWFnZSwgU291cmNlVW5wYWNrQnVmZmVyLCB0YXJnZXQsIGxldmVsLCAwLCB3aWR0
aCwgaGVpZ2h0LCAxLCAwLCBmb3JtYXQsIHR5cGUsIHhvZmZzZXQsIHlvZmZzZXQsIDApKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS50ZXhTdWJJbWFn
ZTJEUm9idXN0QU5HTEUodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhl
aWdodCwgZm9ybWF0LCB0eXBlLCAwLCByZWludGVycHJldF9jYXN0PHZvaWQqPihvZmZzZXQpKTsK
KyAgICBtX2NvbnRleHQtPnRleFN1YkltYWdlMkQodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9m
ZnNldCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBvZmZzZXQpOwogfQogCiBFeGNlcHRp
b25Pcjx2b2lkPiBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp0ZXhTdWJJbWFnZTJEKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQs
IEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dM
ZW51bSB0eXBlLCBUZXhJbWFnZVNvdXJjZSYmIHNvdXJjZSkKQEAgLTEzMDMsNyArMTMwMyw3IEBA
IHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dGV4U3ViSW1hZ2UzRChHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpCiAgICAgaWYgKCF2YWxpZGF0ZVRleEZ1bmMoInRleFN1
YkltYWdlM0QiLCBUZXhJbWFnZUZ1bmN0aW9uVHlwZTo6VGV4U3ViSW1hZ2UsIFNvdXJjZVVucGFj
a0J1ZmZlciwgdGFyZ2V0LCBsZXZlbCwgMCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIDAsIGZvcm1h
dCwgdHlwZSwgeG9mZnNldCwgeW9mZnNldCwgem9mZnNldCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnRleFN1YkltYWdlM0RSb2J1c3RBTkdMRSh0
YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB6b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBk
ZXB0aCwgZm9ybWF0LCB0eXBlLCAwLCByZWludGVycHJldF9jYXN0PHZvaWQqPihvZmZzZXQpKTsK
KyAgICBtX2NvbnRleHQtPnRleFN1YkltYWdlM0QodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9m
ZnNldCwgem9mZnNldCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGZvcm1hdCwgdHlwZSwgb2Zmc2V0
KTsKIH0KIAogdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp0ZXhTdWJJbWFnZTNEKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZz
ZXQsIEdDR0xpbnQgem9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBH
Q0dMc2l6ZWkgZGVwdGgsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgUmVmUHRyPEFy
cmF5QnVmZmVyVmlldz4mJiBzcmNEYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQpCkBAIC0xMzY5LDEw
ICsxMzY5LDcgQEAgdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojpjb21wcmVzc2VkVGV4SW1h
Z2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwKICAgICB9CiAgICAgaWYgKCF2YWxp
ZGF0ZVRleHR1cmUyREJpbmRpbmcoImNvbXByZXNzZWRUZXhJbWFnZTJEIiwgdGFyZ2V0KSkKICAg
ICAgICAgcmV0dXJuOwotICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmNvbXByZXNzZWRU
ZXhJbWFnZTJEUm9idXN0QU5HTEUoCi0gICAgICAgIHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9y
bWF0LCB3aWR0aCwKLSAgICAgICAgaGVpZ2h0LCBib3JkZXIsIGltYWdlU2l6ZSwKLSAgICAgICAg
MCwgcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4ob2Zmc2V0KSk7CisgICAgbV9jb250ZXh0LT5j
b21wcmVzc2VkVGV4SW1hZ2UyRCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgs
IGhlaWdodCwgYm9yZGVyLCBpbWFnZVNpemUsIG9mZnNldCk7CiB9CiAKIHZvaWQgV2ViR0wyUmVu
ZGVyaW5nQ29udGV4dDo6Y29tcHJlc3NlZFRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
aW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dM
c2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgQXJyYXlCdWZmZXJWaWV3JiBzcmNEYXRhLCBH
Q0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aE92ZXJyaWRlKQpAQCAtMTM5MCwx
MCArMTM4Nyw3IEBAIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Y29tcHJlc3NlZFRleElt
YWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsCiAgICAgYXV0byBzbGljZSA9IHNs
aWNlQXJyYXlCdWZmZXJWaWV3KCJjb21wcmVzc2VkVGV4SW1hZ2UyRCIsIHNyY0RhdGEsIHNyY09m
ZnNldCwgc3JjTGVuZ3RoT3ZlcnJpZGUpOwogICAgIGlmICghc2xpY2UpCiAgICAgICAgIHJldHVy
bjsKLSAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5jb21wcmVzc2VkVGV4SW1hZ2UyRFJv
YnVzdEFOR0xFKAotICAgICAgICB0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgs
IGhlaWdodCwKLSAgICAgICAgYm9yZGVyLCBzbGljZS0+Ynl0ZUxlbmd0aCgpLAotICAgICAgICBz
bGljZS0+Ynl0ZUxlbmd0aCgpLCBzbGljZS0+YmFzZUFkZHJlc3MoKSk7CisgICAgbV9jb250ZXh0
LT5jb21wcmVzc2VkVGV4SW1hZ2UyRCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lk
dGgsIGhlaWdodCwgYm9yZGVyLCBzbGljZS0+Ynl0ZUxlbmd0aCgpLCBtYWtlR0NHTFNwYW4oc2xp
Y2UtPmJhc2VBZGRyZXNzKCksIHNsaWNlLT5ieXRlTGVuZ3RoKCkpKTsKIH0KIAogdm9pZCBXZWJH
TDJSZW5kZXJpbmdDb250ZXh0Ojpjb21wcmVzc2VkVGV4SW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQs
IEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgs
IEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGludCBib3JkZXIsIEdDR0xz
aXplaSBpbWFnZVNpemUsIEdDR0xpbnQ2NCBvZmZzZXQpCkBAIC0xNDA4LDEwICsxNDAyLDcgQEAg
dm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojpjb21wcmVzc2VkVGV4SW1hZ2UzRChHQ0dMZW51
bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwKICAgICB9CiAgICAgaWYgKCF2YWxpZGF0ZVRleHR1cmUz
REJpbmRpbmcoImNvbXByZXNzZWRUZXhJbWFnZTNEIiwgdGFyZ2V0KSkKICAgICAgICAgcmV0dXJu
OwotICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmNvbXByZXNzZWRUZXhJbWFnZTNEUm9i
dXN0QU5HTEUoCi0gICAgICAgIHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwK
LSAgICAgICAgaGVpZ2h0LCBkZXB0aCwgYm9yZGVyLCBpbWFnZVNpemUsCi0gICAgICAgIDAsIHJl
aW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KG9mZnNldCkpOworICAgIG1fY29udGV4dC0+Y29tcHJl
c3NlZFRleEltYWdlM0QodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWln
aHQsIGRlcHRoLCBib3JkZXIsIGltYWdlU2l6ZSwgb2Zmc2V0KTsKIH0KIAogdm9pZCBXZWJHTDJS
ZW5kZXJpbmdDb250ZXh0Ojpjb21wcmVzc2VkVGV4SW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdD
R0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdD
R0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGludCBib3JkZXIsIEFycmF5QnVm
ZmVyVmlldyYgc3JjRGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGhP
dmVycmlkZSkKQEAgLTE0MjksMTAgKzE0MjAsMTAgQEAgdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250
ZXh0Ojpjb21wcmVzc2VkVGV4SW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwK
ICAgICBhdXRvIHNsaWNlID0gc2xpY2VBcnJheUJ1ZmZlclZpZXcoImNvbXByZXNzZWRUZXhJbWFn
ZTNEIiwgc3JjRGF0YSwgc3JjT2Zmc2V0LCBzcmNMZW5ndGhPdmVycmlkZSk7CiAgICAgaWYgKCFz
bGljZSkKICAgICAgICAgcmV0dXJuOwotICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmNv
bXByZXNzZWRUZXhJbWFnZTNEUm9idXN0QU5HTEUoCisgICAgbV9jb250ZXh0LT5jb21wcmVzc2Vk
VGV4SW1hZ2UzRCgKICAgICAgICAgdGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRo
LCBoZWlnaHQsCiAgICAgICAgIGRlcHRoLCBib3JkZXIsIHNsaWNlLT5ieXRlTGVuZ3RoKCksCi0g
ICAgICAgIHNsaWNlLT5ieXRlTGVuZ3RoKCksIHNsaWNlLT5iYXNlQWRkcmVzcygpKTsKKyAgICAg
ICAgbWFrZUdDR0xTcGFuKHNsaWNlLT5iYXNlQWRkcmVzcygpLCBzbGljZS0+Ynl0ZUxlbmd0aCgp
KSk7CiB9CiAKIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Y29tcHJlc3NlZFRleFN1Yklt
YWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdD
R0xpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51
bSBmb3JtYXQsIEFycmF5QnVmZmVyVmlldyYgc3JjRGF0YSkKQEAgLTE0NjAsMTAgKzE0NTEsNyBA
QCB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKEdD
R0xlbnVtIHRhcmdldCwgR0NHTGludCBsZQogICAgIH0KICAgICBpZiAoIXZhbGlkYXRlVGV4dHVy
ZTJEQmluZGluZygiY29tcHJlc3NlZFRleEltYWdlMkQiLCB0YXJnZXQpKQogICAgICAgICByZXR1
cm47Ci0gICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuY29tcHJlc3NlZFRleFN1YkltYWdl
MkRSb2J1c3RBTkdMRSgKLSAgICAgICAgdGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwK
LSAgICAgICAgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCBpbWFnZVNpemUsCi0gICAgICAgIDAsIHJl
aW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KG9mZnNldCkpOworICAgIG1fY29udGV4dC0+Y29tcHJl
c3NlZFRleFN1YkltYWdlMkQodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgd2lkdGgs
IGhlaWdodCwgZm9ybWF0LCBpbWFnZVNpemUsIG9mZnNldCk7CiB9CiAKIHZvaWQgV2ViR0wyUmVu
ZGVyaW5nQ29udGV4dDo6Y29tcHJlc3NlZFRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTHNpemVp
IHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEFycmF5QnVmZmVyVmll
dyYgc3JjRGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGhPdmVycmlk
ZSkKQEAgLTE0ODEsMTAgKzE0NjksNyBAQCB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmNv
bXByZXNzZWRUZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZQogICAgIGF1
dG8gc2xpY2UgPSBzbGljZUFycmF5QnVmZmVyVmlldygiY29tcHJlc3NlZFRleFN1YkltYWdlMkQi
LCBzcmNEYXRhLCBzcmNPZmZzZXQsIHNyY0xlbmd0aE92ZXJyaWRlKTsKICAgICBpZiAoIXNsaWNl
KQogICAgICAgICByZXR1cm47Ci0gICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuY29tcHJl
c3NlZFRleFN1YkltYWdlMkRSb2J1c3RBTkdMRSgKLSAgICAgICAgdGFyZ2V0LCBsZXZlbCwgeG9m
ZnNldCwgeW9mZnNldCwKLSAgICAgICAgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCBzbGljZS0+Ynl0
ZUxlbmd0aCgpLAotICAgICAgICBzbGljZS0+Ynl0ZUxlbmd0aCgpLCBzbGljZS0+YmFzZUFkZHJl
c3MoKSk7CisgICAgbV9jb250ZXh0LT5jb21wcmVzc2VkVGV4U3ViSW1hZ2UyRCh0YXJnZXQsIGxl
dmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHNsaWNlLT5ieXRl
TGVuZ3RoKCksIG1ha2VHQ0dMU3BhbihzbGljZS0+YmFzZUFkZHJlc3MoKSwgc2xpY2UtPmJ5dGVM
ZW5ndGgoKSkpOwogfQogCiB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmNvbXByZXNzZWRU
ZXhTdWJJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zm
c2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xpbnQgem9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBH
Q0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTHNp
emVpIGltYWdlU2l6ZSwgR0NHTGludDY0IG9mZnNldCkKQEAgLTE0OTksMTAgKzE0ODQsNyBAQCB2
b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmNvbXByZXNzZWRUZXhTdWJJbWFnZTNEKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGludCBsZQogICAgIH0KICAgICBpZiAoIXZhbGlkYXRlVGV4dHVyZTNE
QmluZGluZygiY29tcHJlc3NlZFRleFN1YkltYWdlM0QiLCB0YXJnZXQpKQogICAgICAgICByZXR1
cm47Ci0gICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuY29tcHJlc3NlZFRleFN1YkltYWdl
M0RSb2J1c3RBTkdMRSgKLSAgICAgICAgdGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwg
em9mZnNldCwKLSAgICAgICAgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGZvcm1hdCwgaW1hZ2VTaXpl
LAotICAgICAgICAwLCByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihvZmZzZXQpKTsKKyAgICBt
X2NvbnRleHQtPmNvbXByZXNzZWRUZXhTdWJJbWFnZTNEKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQs
IHlvZmZzZXQsIHpvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBmb3JtYXQsIGltYWdlU2l6
ZSwgb2Zmc2V0KTsKIH0KIAogdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojpjb21wcmVzc2Vk
VGV4U3ViSW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9m
ZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMaW50IHpvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwg
R0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMZW51bSBmb3JtYXQsIEFycmF5
QnVmZmVyVmlldyYgc3JjRGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5n
dGhPdmVycmlkZSkKQEAgLTE1MjAsMTAgKzE1MDIsMTAgQEAgdm9pZCBXZWJHTDJSZW5kZXJpbmdD
b250ZXh0Ojpjb21wcmVzc2VkVGV4U3ViSW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQg
bGUKICAgICBhdXRvIHNsaWNlID0gc2xpY2VBcnJheUJ1ZmZlclZpZXcoImNvbXByZXNzZWRUZXhT
dWJJbWFnZTNEIiwgc3JjRGF0YSwgc3JjT2Zmc2V0LCBzcmNMZW5ndGhPdmVycmlkZSk7CiAgICAg
aWYgKCFzbGljZSkKICAgICAgICAgcmV0dXJuOwotICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9u
cygpLmNvbXByZXNzZWRUZXhTdWJJbWFnZTNEUm9idXN0QU5HTEUoCisgICAgbV9jb250ZXh0LT5j
b21wcmVzc2VkVGV4U3ViSW1hZ2UzRCgKICAgICAgICAgdGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwg
eW9mZnNldCwgem9mZnNldCwKICAgICAgICAgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGZvcm1hdCwg
c2xpY2UtPmJ5dGVMZW5ndGgoKSwKLSAgICAgICAgc2xpY2UtPmJ5dGVMZW5ndGgoKSwgc2xpY2Ut
PmJhc2VBZGRyZXNzKCkpOworICAgICAgICBtYWtlR0NHTFNwYW4oc2xpY2UtPmJhc2VBZGRyZXNz
KCksIHNsaWNlLT5ieXRlTGVuZ3RoKCkpKTsKIH0KIAogR0NHTGludCBXZWJHTDJSZW5kZXJpbmdD
b250ZXh0OjpnZXRGcmFnRGF0YUxvY2F0aW9uKFdlYkdMUHJvZ3JhbSYgcHJvZ3JhbSwgY29uc3Qg
U3RyaW5nJiBuYW1lKQpAQCAtMTU2Myw3MiArMTU0NSwxMDIgQEAgdm9pZCBXZWJHTDJSZW5kZXJp
bmdDb250ZXh0Ojp1bmlmb3JtNHVpKFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgR0NH
THVpbnQKIAogdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtMXVpdihXZWJHTFVu
aWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIFVpbnQzMkxpc3QmJiB2YWx1ZSwgR0NHTHVpbnQgc3Jj
T2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCiB7Ci0gICAgaWYgKGlzQ29udGV4dExvc3RPclBl
bmRpbmcoKSB8fCAhdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycygidW5pZm9ybTF1aXYiLCBsb2Nh
dGlvbiwgdmFsdWUsIDEsIHNyY09mZnNldCwgc3JjTGVuZ3RoKSkKKyAgICBpZiAoaXNDb250ZXh0
TG9zdE9yUGVuZGluZygpKQorICAgICAgICByZXR1cm47CisgICAgYXV0byBkYXRhID0gdmFsaWRh
dGVVbmlmb3JtUGFyYW1ldGVycygidW5pZm9ybTF1aXYiLCBsb2NhdGlvbiwgdmFsdWUsIDEsIHNy
Y09mZnNldCwgc3JjTGVuZ3RoKTsKKyAgICBpZiAoIWRhdGEpCiAgICAgICAgIHJldHVybjsKLSAg
ICBtX2NvbnRleHQtPnVuaWZvcm0xdWl2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCB2YWx1ZS5kYXRh
KCksIHNyY09mZnNldCwgc3JjTGVuZ3RoID8gc3JjTGVuZ3RoIDogKHZhbHVlLmxlbmd0aCgpIC0g
c3JjT2Zmc2V0KSk7CisgICAgbV9jb250ZXh0LT51bmlmb3JtMXVpdihsb2NhdGlvbi0+bG9jYXRp
b24oKSwgZGF0YS52YWx1ZSgpKTsKIH0KIAogdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1
bmlmb3JtMnVpdihXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIFVpbnQzMkxpc3QmJiB2
YWx1ZSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCiB7Ci0gICAgaWYg
KGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycygi
dW5pZm9ybTJ1aXYiLCBsb2NhdGlvbiwgdmFsdWUsIDIsIHNyY09mZnNldCwgc3JjTGVuZ3RoKSkK
KyAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpKQorICAgICAgICByZXR1cm47CisgICAg
YXV0byBkYXRhID0gdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycygidW5pZm9ybTJ1aXYiLCBsb2Nh
dGlvbiwgdmFsdWUsIDIsIHNyY09mZnNldCwgc3JjTGVuZ3RoKTsKKyAgICBpZiAoIWRhdGEpCiAg
ICAgICAgIHJldHVybjsKLSAgICBtX2NvbnRleHQtPnVuaWZvcm0ydWl2KGxvY2F0aW9uLT5sb2Nh
dGlvbigpLCB2YWx1ZS5kYXRhKCksIHNyY09mZnNldCwgKHNyY0xlbmd0aCA/IHNyY0xlbmd0aCA6
IHZhbHVlLmxlbmd0aCgpIC0gc3JjT2Zmc2V0KSAvIDIpOworICAgIG1fY29udGV4dC0+dW5pZm9y
bTJ1aXYobG9jYXRpb24tPmxvY2F0aW9uKCksIGRhdGEudmFsdWUoKSk7CiB9CiAKIHZvaWQgV2Vi
R0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTN1aXYoV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxv
Y2F0aW9uLCBVaW50MzJMaXN0JiYgdmFsdWUsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQg
c3JjTGVuZ3RoKQogewotICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlk
YXRlVW5pZm9ybVBhcmFtZXRlcnMoInVuaWZvcm0zdWl2IiwgbG9jYXRpb24sIHZhbHVlLCAzLCBz
cmNPZmZzZXQsIHNyY0xlbmd0aCkpCisgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSkK
KyAgICAgICAgcmV0dXJuOworICAgIGF1dG8gZGF0YSA9IHZhbGlkYXRlVW5pZm9ybVBhcmFtZXRl
cnMoInVuaWZvcm0zdWl2IiwgbG9jYXRpb24sIHZhbHVlLCAzLCBzcmNPZmZzZXQsIHNyY0xlbmd0
aCk7CisgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm47Ci0gICAgbV9jb250ZXh0LT51bmlm
b3JtM3Vpdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgdmFsdWUuZGF0YSgpLCBzcmNPZmZzZXQsIChz
cmNMZW5ndGggPyBzcmNMZW5ndGggOiB2YWx1ZS5sZW5ndGgoKSAtIHNyY09mZnNldCkgLyAzKTsK
KyAgICBtX2NvbnRleHQtPnVuaWZvcm0zdWl2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCBkYXRhLnZh
bHVlKCkpOwogfQogCiB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm00dWl2KFdl
YkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgVWludDMyTGlzdCYmIHZhbHVlLCBHQ0dMdWlu
dCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKIHsKLSAgICBpZiAoaXNDb250ZXh0TG9z
dE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKCJ1bmlmb3JtNHVpdiIs
IGxvY2F0aW9uLCB2YWx1ZSwgNCwgc3JjT2Zmc2V0LCBzcmNMZW5ndGgpKQorICAgIGlmIChpc0Nv
bnRleHRMb3N0T3JQZW5kaW5nKCkpCisgICAgICAgIHJldHVybjsKKyAgICBhdXRvIGRhdGEgPSB2
YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKCJ1bmlmb3JtNHVpdiIsIGxvY2F0aW9uLCB2YWx1ZSwg
NCwgc3JjT2Zmc2V0LCBzcmNMZW5ndGgpOworICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJu
OwotICAgIG1fY29udGV4dC0+dW5pZm9ybTR1aXYobG9jYXRpb24tPmxvY2F0aW9uKCksIHZhbHVl
LmRhdGEoKSwgc3JjT2Zmc2V0LCAoc3JjTGVuZ3RoID8gc3JjTGVuZ3RoIDogdmFsdWUubGVuZ3Ro
KCkgLSBzcmNPZmZzZXQpIC8gNCk7CisgICAgbV9jb250ZXh0LT51bmlmb3JtNHVpdihsb2NhdGlv
bi0+bG9jYXRpb24oKSwgZGF0YS52YWx1ZSgpKTsKIH0KIAogdm9pZCBXZWJHTDJSZW5kZXJpbmdD
b250ZXh0Ojp1bmlmb3JtTWF0cml4MngzZnYoV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9u
LCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEZsb2F0MzJMaXN0JiYgdiwgR0NHTHVpbnQgc3JjT2Zm
c2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCiB7Ci0gICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRp
bmcoKSB8fCAhdmFsaWRhdGVVbmlmb3JtTWF0cml4UGFyYW1ldGVycygidW5pZm9ybU1hdHJpeDJ4
M2Z2IiwgbG9jYXRpb24sIHRyYW5zcG9zZSwgdiwgNiwgc3JjT2Zmc2V0LCBzcmNMZW5ndGgpKQor
ICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCisgICAgICAgIHJldHVybjsKKyAgICBh
dXRvIGRhdGEgPSB2YWxpZGF0ZVVuaWZvcm1NYXRyaXhQYXJhbWV0ZXJzKCJ1bmlmb3JtTWF0cml4
MngzZnYiLCBsb2NhdGlvbiwgdHJhbnNwb3NlLCB2LCA2LCBzcmNPZmZzZXQsIHNyY0xlbmd0aCk7
CisgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm47Ci0gICAgbV9jb250ZXh0LT51bmlmb3Jt
TWF0cml4MngzZnYobG9jYXRpb24tPmxvY2F0aW9uKCksIHRyYW5zcG9zZSwgdi5kYXRhKCksIHNy
Y09mZnNldCwgKHNyY0xlbmd0aCA/IHNyY0xlbmd0aCA6IHYubGVuZ3RoKCkgLSBzcmNPZmZzZXQp
IC8gNik7CisgICAgbV9jb250ZXh0LT51bmlmb3JtTWF0cml4MngzZnYobG9jYXRpb24tPmxvY2F0
aW9uKCksIHRyYW5zcG9zZSwgZGF0YS52YWx1ZSgpKTsKIH0KIAogdm9pZCBXZWJHTDJSZW5kZXJp
bmdDb250ZXh0Ojp1bmlmb3JtTWF0cml4M3gyZnYoV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0
aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEZsb2F0MzJMaXN0JiYgdiwgR0NHTHVpbnQgc3Jj
T2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCiB7Ci0gICAgaWYgKGlzQ29udGV4dExvc3RPclBl
bmRpbmcoKSB8fCAhdmFsaWRhdGVVbmlmb3JtTWF0cml4UGFyYW1ldGVycygidW5pZm9ybU1hdHJp
eDN4MmZ2IiwgbG9jYXRpb24sIHRyYW5zcG9zZSwgdiwgNiwgc3JjT2Zmc2V0LCBzcmNMZW5ndGgp
KQorICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCisgICAgICAgIHJldHVybjsKKyAg
ICBhdXRvIGRhdGEgPSB2YWxpZGF0ZVVuaWZvcm1NYXRyaXhQYXJhbWV0ZXJzKCJ1bmlmb3JtTWF0
cml4M3gyZnYiLCBsb2NhdGlvbiwgdHJhbnNwb3NlLCB2LCA2LCBzcmNPZmZzZXQsIHNyY0xlbmd0
aCk7CisgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm47Ci0gICAgbV9jb250ZXh0LT51bmlm
b3JtTWF0cml4M3gyZnYobG9jYXRpb24tPmxvY2F0aW9uKCksIHRyYW5zcG9zZSwgdi5kYXRhKCks
IHNyY09mZnNldCwgKHNyY0xlbmd0aCA/IHNyY0xlbmd0aCA6IHYubGVuZ3RoKCkgLSBzcmNPZmZz
ZXQpIC8gNik7CisgICAgbV9jb250ZXh0LT51bmlmb3JtTWF0cml4M3gyZnYobG9jYXRpb24tPmxv
Y2F0aW9uKCksIHRyYW5zcG9zZSwgZGF0YS52YWx1ZSgpKTsKIH0KIAogdm9pZCBXZWJHTDJSZW5k
ZXJpbmdDb250ZXh0Ojp1bmlmb3JtTWF0cml4Mng0ZnYoV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxv
Y2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEZsb2F0MzJMaXN0JiYgdiwgR0NHTHVpbnQg
c3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCiB7Ci0gICAgaWYgKGlzQ29udGV4dExvc3RP
clBlbmRpbmcoKSB8fCAhdmFsaWRhdGVVbmlmb3JtTWF0cml4UGFyYW1ldGVycygidW5pZm9ybU1h
dHJpeDJ4NGZ2IiwgbG9jYXRpb24sIHRyYW5zcG9zZSwgdiwgOCwgc3JjT2Zmc2V0LCBzcmNMZW5n
dGgpKQorICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCisgICAgICAgIHJldHVybjsK
KyAgICBhdXRvIGRhdGEgPSB2YWxpZGF0ZVVuaWZvcm1NYXRyaXhQYXJhbWV0ZXJzKCJ1bmlmb3Jt
TWF0cml4Mng0ZnYiLCBsb2NhdGlvbiwgdHJhbnNwb3NlLCB2LCA4LCBzcmNPZmZzZXQsIHNyY0xl
bmd0aCk7CisgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm47Ci0gICAgbV9jb250ZXh0LT51
bmlmb3JtTWF0cml4Mng0ZnYobG9jYXRpb24tPmxvY2F0aW9uKCksIHRyYW5zcG9zZSwgdi5kYXRh
KCksIHNyY09mZnNldCwgKHNyY0xlbmd0aCA/IHNyY0xlbmd0aCA6IHYubGVuZ3RoKCkgLSBzcmNP
ZmZzZXQpIC8gOCk7CisgICAgbV9jb250ZXh0LT51bmlmb3JtTWF0cml4Mng0ZnYobG9jYXRpb24t
PmxvY2F0aW9uKCksIHRyYW5zcG9zZSwgZGF0YS52YWx1ZSgpKTsKIH0KIAogdm9pZCBXZWJHTDJS
ZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtTWF0cml4NHgyZnYoV2ViR0xVbmlmb3JtTG9jYXRpb24q
IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEZsb2F0MzJMaXN0JiYgdiwgR0NHTHVp
bnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCiB7Ci0gICAgaWYgKGlzQ29udGV4dExv
c3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVVbmlmb3JtTWF0cml4UGFyYW1ldGVycygidW5pZm9y
bU1hdHJpeDR4MmZ2IiwgbG9jYXRpb24sIHRyYW5zcG9zZSwgdiwgOCwgc3JjT2Zmc2V0LCBzcmNM
ZW5ndGgpKQorICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCisgICAgICAgIHJldHVy
bjsKKyAgICBhdXRvIGRhdGEgPSB2YWxpZGF0ZVVuaWZvcm1NYXRyaXhQYXJhbWV0ZXJzKCJ1bmlm
b3JtTWF0cml4NHgyZnYiLCBsb2NhdGlvbiwgdHJhbnNwb3NlLCB2LCA4LCBzcmNPZmZzZXQsIHNy
Y0xlbmd0aCk7CisgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm47Ci0gICAgbV9jb250ZXh0
LT51bmlmb3JtTWF0cml4NHgyZnYobG9jYXRpb24tPmxvY2F0aW9uKCksIHRyYW5zcG9zZSwgdi5k
YXRhKCksIHNyY09mZnNldCwgKHNyY0xlbmd0aCA/IHNyY0xlbmd0aCA6IHYubGVuZ3RoKCkgLSBz
cmNPZmZzZXQpIC8gOCk7CisgICAgbV9jb250ZXh0LT51bmlmb3JtTWF0cml4NHgyZnYobG9jYXRp
b24tPmxvY2F0aW9uKCksIHRyYW5zcG9zZSwgZGF0YS52YWx1ZSgpKTsKIH0KIAogdm9pZCBXZWJH
TDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtTWF0cml4M3g0ZnYoV2ViR0xVbmlmb3JtTG9jYXRp
b24qIGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEZsb2F0MzJMaXN0JiYgdiwgR0NH
THVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCiB7Ci0gICAgaWYgKGlzQ29udGV4
dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVVbmlmb3JtTWF0cml4UGFyYW1ldGVycygidW5p
Zm9ybU1hdHJpeDN4NGZ2IiwgbG9jYXRpb24sIHRyYW5zcG9zZSwgdiwgMTIsIHNyY09mZnNldCwg
c3JjTGVuZ3RoKSkKKyAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpKQorICAgICAgICBy
ZXR1cm47CisgICAgYXV0byBkYXRhID0gdmFsaWRhdGVVbmlmb3JtTWF0cml4UGFyYW1ldGVycygi
dW5pZm9ybU1hdHJpeDN4NGZ2IiwgbG9jYXRpb24sIHRyYW5zcG9zZSwgdiwgMTIsIHNyY09mZnNl
dCwgc3JjTGVuZ3RoKTsKKyAgICBpZiAoIWRhdGEpCiAgICAgICAgIHJldHVybjsKLSAgICBtX2Nv
bnRleHQtPnVuaWZvcm1NYXRyaXgzeDRmdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgdHJhbnNwb3Nl
LCB2LmRhdGEoKSwgc3JjT2Zmc2V0LCAoc3JjTGVuZ3RoID8gc3JjTGVuZ3RoIDogdi5sZW5ndGgo
KSAtIHNyY09mZnNldCkgLyAxMik7CisgICAgbV9jb250ZXh0LT51bmlmb3JtTWF0cml4M3g0ZnYo
bG9jYXRpb24tPmxvY2F0aW9uKCksIHRyYW5zcG9zZSwgZGF0YS52YWx1ZSgpKTsKIH0KIAogdm9p
ZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtTWF0cml4NHgzZnYoV2ViR0xVbmlmb3Jt
TG9jYXRpb24qIGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEZsb2F0MzJMaXN0JiYg
diwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCiB7Ci0gICAgaWYgKGlz
Q29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVVbmlmb3JtTWF0cml4UGFyYW1ldGVy
cygidW5pZm9ybU1hdHJpeDR4M2Z2IiwgbG9jYXRpb24sIHRyYW5zcG9zZSwgdiwgMTIsIHNyY09m
ZnNldCwgc3JjTGVuZ3RoKSkKKyAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpKQorICAg
ICAgICByZXR1cm47CisgICAgYXV0byBkYXRhID0gdmFsaWRhdGVVbmlmb3JtTWF0cml4UGFyYW1l
dGVycygidW5pZm9ybU1hdHJpeDR4M2Z2IiwgbG9jYXRpb24sIHRyYW5zcG9zZSwgdiwgMTIsIHNy
Y09mZnNldCwgc3JjTGVuZ3RoKTsKKyAgICBpZiAoIWRhdGEpCiAgICAgICAgIHJldHVybjsKLSAg
ICBtX2NvbnRleHQtPnVuaWZvcm1NYXRyaXg0eDNmdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgdHJh
bnNwb3NlLCB2LmRhdGEoKSwgc3JjT2Zmc2V0LCAoc3JjTGVuZ3RoID8gc3JjTGVuZ3RoIDogdi5s
ZW5ndGgoKSAtIHNyY09mZnNldCkgLyAxMik7CisgICAgbV9jb250ZXh0LT51bmlmb3JtTWF0cml4
NHgzZnYobG9jYXRpb24tPmxvY2F0aW9uKCksIHRyYW5zcG9zZSwgZGF0YS52YWx1ZSgpKTsKIH0K
IAogdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp2ZXJ0ZXhBdHRyaWJJNGkoR0NHTHVpbnQg
aW5kZXgsIEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMaW50IHosIEdDR0xpbnQgdykKQEAgLTE2
NjQsNyArMTY3Niw3IEBAIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dmVydGV4QXR0cmli
STRpdihHQ0dMdWludCBpbmRleCwgSW50MzJMaXN0JiYgbGlzdCkKICAgICAgICAgc3ludGhlc2l6
ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfVkFMVUUsICJ2ZXJ0ZXhBdHRyaWJJ
NGl2IiwgImluZGV4IG91dCBvZiByYW5nZSIpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAg
IG1fY29udGV4dC0+dmVydGV4QXR0cmliSTRpdihpbmRleCwgZGF0YSk7CisgICAgbV9jb250ZXh0
LT52ZXJ0ZXhBdHRyaWJJNGl2KGluZGV4LCBtYWtlR0NHTFNwYW48ND4oZGF0YSkpOwogICAgIG1f
dmVydGV4QXR0cmliVmFsdWVbaW5kZXhdLnR5cGUgPSBHcmFwaGljc0NvbnRleHRHTDo6SU5UOwog
ICAgIG1lbWNweShtX3ZlcnRleEF0dHJpYlZhbHVlW2luZGV4XS5pVmFsdWUsIGRhdGEsIHNpemVv
ZihtX3ZlcnRleEF0dHJpYlZhbHVlW2luZGV4XS5pVmFsdWUpKTsKIH0KQEAgLTE3MDIsNyArMTcx
NCw3IEBAIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dmVydGV4QXR0cmliSTR1aXYoR0NH
THVpbnQgaW5kZXgsIFVpbnQzMkxpc3QmJiBsaXN0CiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9y
KEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX1ZBTFVFLCAidmVydGV4QXR0cmliSTR1aXYiLCAi
aW5kZXggb3V0IG9mIHJhbmdlIik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgbV9jb250
ZXh0LT52ZXJ0ZXhBdHRyaWJJNHVpdihpbmRleCwgZGF0YSk7CisgICAgbV9jb250ZXh0LT52ZXJ0
ZXhBdHRyaWJJNHVpdihpbmRleCwgbWFrZUdDR0xTcGFuPDQ+KGRhdGEpKTsKICAgICBtX3ZlcnRl
eEF0dHJpYlZhbHVlW2luZGV4XS50eXBlID0gR3JhcGhpY3NDb250ZXh0R0w6OlVOU0lHTkVEX0lO
VDsKICAgICBtZW1jcHkobV92ZXJ0ZXhBdHRyaWJWYWx1ZVtpbmRleF0udWlWYWx1ZSwgZGF0YSwg
c2l6ZW9mKG1fdmVydGV4QXR0cmliVmFsdWVbaW5kZXhdLnVpVmFsdWUpKTsKIH0KQEAgLTE3NjMs
OCArMTc3NSw4IEBAIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6ZHJhd0J1ZmZlcnMoY29u
c3QgVmVjdG9yPEdDR0xlbnVtPiYgYnVmZmVycykKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQogICAgICAgICAvLyBCZWNhdXNlIHRoZSBiYWNrYnVmZmVyIGlzIHNpbXVsYXRlZCBvbiBh
bGwgY3VycmVudCBXZWJLaXQgcG9ydHMsIHdlIG5lZWQgdG8gY2hhbmdlIEJBQ0sgdG8gQ09MT1Jf
QVRUQUNITUVOVDAuCi0gICAgICAgIEdDR0xlbnVtIHZhbHVlID0gKGJ1ZnNbMF0gPT0gR3JhcGhp
Y3NDb250ZXh0R0w6OkJBQ0spID8gR3JhcGhpY3NDb250ZXh0R0w6OkNPTE9SX0FUVEFDSE1FTlQw
IDogR3JhcGhpY3NDb250ZXh0R0w6Ok5PTkU7Ci0gICAgICAgIG1fY29udGV4dC0+ZHJhd0J1ZmZl
cnMoMSwgJnZhbHVlKTsKKyAgICAgICAgR0NHTGVudW0gdmFsdWVbMV0geyAoYnVmc1swXSA9PSBH
cmFwaGljc0NvbnRleHRHTDo6QkFDSykgPyBHcmFwaGljc0NvbnRleHRHTDo6Q09MT1JfQVRUQUNI
TUVOVDAgOiBHcmFwaGljc0NvbnRleHRHTDo6Tk9ORSB9OworICAgICAgICBtX2NvbnRleHQtPmRy
YXdCdWZmZXJzKHZhbHVlKTsKICAgICAgICAgc2V0QmFja0RyYXdCdWZmZXIoYnVmc1swXSk7CiAg
ICAgfSBlbHNlIHsKICAgICAgICAgaWYgKG4gPiBnZXRNYXhEcmF3QnVmZmVycygpKSB7CkBAIC0x
NzgzLDI4ICsxNzk1LDM2IEBAIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6ZHJhd0J1ZmZl
cnMoY29uc3QgVmVjdG9yPEdDR0xlbnVtPiYgYnVmZmVycykKIAogdm9pZCBXZWJHTDJSZW5kZXJp
bmdDb250ZXh0OjpjbGVhckJ1ZmZlcml2KEdDR0xlbnVtIGJ1ZmZlciwgR0NHTGludCBkcmF3YnVm
ZmVyLCBJbnQzMkxpc3QmJiB2YWx1ZXMsIEdDR0x1aW50IHNyY09mZnNldCkKIHsKLSAgICBpZiAo
aXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZUNsZWFyQnVmZmVyKCJjbGVhckJ1
ZmZlcml2IiwgYnVmZmVyLCB2YWx1ZXMubGVuZ3RoKCksIHNyY09mZnNldCkpCisgICAgaWYgKGlz
Q29udGV4dExvc3RPclBlbmRpbmcoKSkKKyAgICAgICAgcmV0dXJuOworICAgIGF1dG8gZGF0YSA9
IHZhbGlkYXRlQ2xlYXJCdWZmZXIoImNsZWFyQnVmZmVyaXYiLCBidWZmZXIsIHZhbHVlcywgc3Jj
T2Zmc2V0KTsKKyAgICBpZiAoIWRhdGEpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fY29udGV4
dC0+Y2xlYXJCdWZmZXJpdihidWZmZXIsIGRyYXdidWZmZXIsIHZhbHVlcy5kYXRhKCksIHNyY09m
ZnNldCk7CisgICAgbV9jb250ZXh0LT5jbGVhckJ1ZmZlcml2KGJ1ZmZlciwgZHJhd2J1ZmZlciwg
ZGF0YS52YWx1ZSgpKTsKICAgICB1cGRhdGVCdWZmZXJzVG9BdXRvQ2xlYXIoQ2xlYXJCdWZmZXJD
YWxsZXI6OkNsZWFyQnVmZmVyaXYsIGJ1ZmZlciwgZHJhd2J1ZmZlcik7CiB9CiAKIHZvaWQgV2Vi
R0wyUmVuZGVyaW5nQ29udGV4dDo6Y2xlYXJCdWZmZXJ1aXYoR0NHTGVudW0gYnVmZmVyLCBHQ0dM
aW50IGRyYXdidWZmZXIsIFVpbnQzMkxpc3QmJiB2YWx1ZXMsIEdDR0x1aW50IHNyY09mZnNldCkK
IHsKLSAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZUNsZWFyQnVm
ZmVyKCJjbGVhckJ1ZmZlcnVpdiIsIGJ1ZmZlciwgdmFsdWVzLmxlbmd0aCgpLCBzcmNPZmZzZXQp
KQorICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCiAgICAgICAgIHJldHVybjsKLQot
ICAgIG1fY29udGV4dC0+Y2xlYXJCdWZmZXJ1aXYoYnVmZmVyLCBkcmF3YnVmZmVyLCB2YWx1ZXMu
ZGF0YSgpLCBzcmNPZmZzZXQpOworICAgIGF1dG8gZGF0YSA9IHZhbGlkYXRlQ2xlYXJCdWZmZXIo
ImNsZWFyQnVmZmVydWl2IiwgYnVmZmVyLCB2YWx1ZXMsIHNyY09mZnNldCk7CisgICAgaWYgKCFk
YXRhKQorICAgICAgICByZXR1cm47CisgICAgbV9jb250ZXh0LT5jbGVhckJ1ZmZlcnVpdihidWZm
ZXIsIGRyYXdidWZmZXIsIGRhdGEudmFsdWUoKSk7CiAgICAgdXBkYXRlQnVmZmVyc1RvQXV0b0Ns
ZWFyKENsZWFyQnVmZmVyQ2FsbGVyOjpDbGVhckJ1ZmZlcnVpdiwgYnVmZmVyLCBkcmF3YnVmZmVy
KTsKIH0KIAogdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpjbGVhckJ1ZmZlcmZ2KEdDR0xl
bnVtIGJ1ZmZlciwgR0NHTGludCBkcmF3YnVmZmVyLCBGbG9hdDMyTGlzdCYmIHZhbHVlcywgR0NH
THVpbnQgc3JjT2Zmc2V0KQogewotICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwg
IXZhbGlkYXRlQ2xlYXJCdWZmZXIoImNsZWFyQnVmZmVyZnYiLCBidWZmZXIsIHZhbHVlcy5sZW5n
dGgoKSwgc3JjT2Zmc2V0KSkKKyAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpKQorICAg
ICAgICByZXR1cm47CisgICAgYXV0byBkYXRhID0gdmFsaWRhdGVDbGVhckJ1ZmZlcigiY2xlYXJC
dWZmZXJmdiIsIGJ1ZmZlciwgdmFsdWVzLCBzcmNPZmZzZXQpOworICAgIGlmICghZGF0YSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgbV9jb250ZXh0LT5jbGVhckJ1ZmZlcmZ2KGJ1ZmZlciwgZHJh
d2J1ZmZlciwgdmFsdWVzLmRhdGEoKSwgc3JjT2Zmc2V0KTsKKyAgICBtX2NvbnRleHQtPmNsZWFy
QnVmZmVyZnYoYnVmZmVyLCBkcmF3YnVmZmVyLCBkYXRhLnZhbHVlKCkpOwogICAgIC8vIGNsZWFy
QnVmZmVyaXYgYW5kIGNsZWFyQnVmZmVydWl2IHdpbGwgY3VycmVudGx5IGdlbmVyYXRlIGFuIGVy
cm9yCiAgICAgLy8gaWYgdGhleSdyZSBjYWxsZWQgYWdhaW5zdCB0aGUgZGVmYXVsdCBiYWNrIGJ1
ZmZlci4gSWYgc3VwcG9ydCBmb3IKICAgICAvLyBleHRlbmRlZCBjYW52YXMgY29sb3Igc3BhY2Vz
IGlzIGFkZGVkLCB0aGlzIGNhbGwgbWlnaHQgbmVlZCB0byBiZQpAQCAtMzM3MiwxMTAgKzMzOTIs
MTQ0IEBAIGJvb2wgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dmFsaWRhdGVDYXBhYmlsaXR5KGNv
bnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgR0NHTGVuCiAgICAgfQogfQogCi1ib29sIFdlYkdMMlJl
bmRlcmluZ0NvbnRleHQ6OnZhbGlkYXRlQ2xlYXJCdWZmZXIoY29uc3QgY2hhciogZnVuY3Rpb25O
YW1lLCBHQ0dMZW51bSBidWZmZXIsIHNpemVfdCBzaXplLCBHQ0dMdWludCBzcmNPZmZzZXQpCit0
ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBUeXBlZEFycmF5VHlwZT4KK09wdGlvbmFsPEdD
R0xTcGFuPGNvbnN0IFQ+PiBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp2YWxpZGF0ZUNsZWFyQnVm
ZmVyKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgR0NHTGVudW0gYnVmZmVyLCBUeXBlZExpc3Q8
VHlwZWRBcnJheVR5cGUsIFQ+JiB2YWx1ZXMsIEdDR0x1aW50IHNyY09mZnNldCkKIHsKLSAgICBD
aGVja2VkPEdDR0xzaXplaSwgUmVjb3JkT3ZlcmZsb3c+IGNoZWNrZWRTaXplKHNpemUpOworICAg
IENoZWNrZWQ8R0NHTHNpemVpLCBSZWNvcmRPdmVyZmxvdz4gY2hlY2tlZFNpemUodmFsdWVzLmxl
bmd0aCgpKTsKICAgICBjaGVja2VkU2l6ZSAtPSBzcmNPZmZzZXQ7CiAgICAgaWYgKGNoZWNrZWRT
aXplLmhhc092ZXJmbG93ZWQoKSkgewogICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGlj
c0NvbnRleHRHTDo6SU5WQUxJRF9WQUxVRSwgZnVuY3Rpb25OYW1lLCAiaW52YWxpZCBhcnJheSBz
aXplIC8gc3JjT2Zmc2V0Iik7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJu
IHsgfTsKICAgICB9CiAgICAgc3dpdGNoIChidWZmZXIpIHsKICAgICBjYXNlIEdyYXBoaWNzQ29u
dGV4dEdMOjpDT0xPUjoKICAgICAgICAgaWYgKGNoZWNrZWRTaXplLnVuc2FmZUdldCgpIDwgNCkg
ewogICAgICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFM
SURfVkFMVUUsIGZ1bmN0aW9uTmFtZSwgImludmFsaWQgYXJyYXkgc2l6ZSAvIHNyY09mZnNldCIp
OwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgcmV0dXJuIHsgfTsKICAg
ICAgICAgfQotICAgICAgICBicmVhazsKKyAgICAgICAgcmV0dXJuIG1ha2VHQ0dMU3Bhbih2YWx1
ZXMuZGF0YSgpICsgc3JjT2Zmc2V0LCA0KTsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpE
RVBUSDoKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpTVEVOQ0lMOgogICAgICAgICBpZiAo
Y2hlY2tlZFNpemUudW5zYWZlR2V0KCkgPCAxKSB7CiAgICAgICAgICAgICBzeW50aGVzaXplR0xF
cnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9WQUxVRSwgZnVuY3Rpb25OYW1lLCAiaW52
YWxpZCBhcnJheSBzaXplIC8gc3JjT2Zmc2V0Iik7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgICAgICByZXR1cm4geyB9OwogICAgICAgICB9Ci0gICAgICAgIGJyZWFrOworICAg
ICAgICByZXR1cm4gbWFrZUdDR0xTcGFuKHZhbHVlcy5kYXRhKCkgKyBzcmNPZmZzZXQsIDEpOwor
CiAgICAgZGVmYXVsdDoKICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0
R0w6OklOVkFMSURfRU5VTSwgZnVuY3Rpb25OYW1lLCAiaW52YWxpZCBidWZmZXIiKTsKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4geyB9OwogICAgIH0KLSAgICByZXR1cm4g
dHJ1ZTsKIH0KIAogdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtMWZ2KFdlYkdM
VW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgRmxvYXQzMkxpc3QgZGF0YSwgR0NHTHVpbnQgc3Jj
T2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCiB7Ci0gICAgaWYgKGlzQ29udGV4dExvc3RPclBl
bmRpbmcoKSB8fCAhdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycygidW5pZm9ybTFmdiIsIGxvY2F0
aW9uLCBkYXRhLCAxLCBzcmNPZmZzZXQsIHNyY0xlbmd0aCkpCisgICAgaWYgKGlzQ29udGV4dExv
c3RPclBlbmRpbmcoKSkKKyAgICAgICAgcmV0dXJuOworICAgIGF1dG8gcmVzdWx0ID0gdmFsaWRh
dGVVbmlmb3JtUGFyYW1ldGVycygidW5pZm9ybTFmdiIsIGxvY2F0aW9uLCBkYXRhLCAxLCBzcmNP
ZmZzZXQsIHNyY0xlbmd0aCk7CisgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgIHJldHVybjsKLSAg
ICBtX2NvbnRleHQtPnVuaWZvcm0xZnYobG9jYXRpb24tPmxvY2F0aW9uKCksIGRhdGEuZGF0YSgp
LCBzcmNPZmZzZXQsIHNyY0xlbmd0aCA/IHNyY0xlbmd0aCA6IChkYXRhLmxlbmd0aCgpIC0gc3Jj
T2Zmc2V0KSk7CisgICAgbV9jb250ZXh0LT51bmlmb3JtMWZ2KGxvY2F0aW9uLT5sb2NhdGlvbigp
LCByZXN1bHQudmFsdWUoKSk7CiB9CiAKIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5p
Zm9ybTJmdihXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEZsb2F0MzJMaXN0IGRhdGEs
IEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQogewotICAgIGlmIChpc0Nv
bnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMoInVuaWZv
cm0yZnYiLCBsb2NhdGlvbiwgZGF0YSwgMiwgc3JjT2Zmc2V0LCBzcmNMZW5ndGgpKQorICAgIGlm
IChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCisgICAgICAgIHJldHVybjsKKyAgICBhdXRvIHJl
c3VsdCA9IHZhbGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMoInVuaWZvcm0yZnYiLCBsb2NhdGlvbiwg
ZGF0YSwgMiwgc3JjT2Zmc2V0LCBzcmNMZW5ndGgpOworICAgIGlmICghcmVzdWx0KQogICAgICAg
ICByZXR1cm47Ci0gICAgbV9jb250ZXh0LT51bmlmb3JtMmZ2KGxvY2F0aW9uLT5sb2NhdGlvbigp
LCBkYXRhLmRhdGEoKSwgc3JjT2Zmc2V0LCAoc3JjTGVuZ3RoID8gc3JjTGVuZ3RoIDogZGF0YS5s
ZW5ndGgoKSAtIHNyY09mZnNldCkgLyAyKTsKKyAgICBtX2NvbnRleHQtPnVuaWZvcm0yZnYobG9j
YXRpb24tPmxvY2F0aW9uKCksIHJlc3VsdC52YWx1ZSgpKTsKIH0KIAogdm9pZCBXZWJHTDJSZW5k
ZXJpbmdDb250ZXh0Ojp1bmlmb3JtM2Z2KFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwg
RmxvYXQzMkxpc3QgZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgp
CiB7Ci0gICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVVbmlmb3Jt
UGFyYW1ldGVycygidW5pZm9ybTNmdiIsIGxvY2F0aW9uLCBkYXRhLCAzLCBzcmNPZmZzZXQsIHNy
Y0xlbmd0aCkpCisgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSkKKyAgICAgICAgcmV0
dXJuOworICAgIGF1dG8gcmVzdWx0ID0gdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycygidW5pZm9y
bTNmdiIsIGxvY2F0aW9uLCBkYXRhLCAzLCBzcmNPZmZzZXQsIHNyY0xlbmd0aCk7CisgICAgaWYg
KCFyZXN1bHQpCiAgICAgICAgIHJldHVybjsKLSAgICBtX2NvbnRleHQtPnVuaWZvcm0zZnYobG9j
YXRpb24tPmxvY2F0aW9uKCksIGRhdGEuZGF0YSgpLCBzcmNPZmZzZXQsIChzcmNMZW5ndGggPyBz
cmNMZW5ndGggOiBkYXRhLmxlbmd0aCgpIC0gc3JjT2Zmc2V0KSAvIDMpOworICAgIG1fY29udGV4
dC0+dW5pZm9ybTNmdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgcmVzdWx0LnZhbHVlKCkpOwogfQog
CiB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm00ZnYoV2ViR0xVbmlmb3JtTG9j
YXRpb24qIGxvY2F0aW9uLCBGbG9hdDMyTGlzdCBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdD
R0x1aW50IHNyY0xlbmd0aCkKIHsKLSAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8
ICF2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKCJ1bmlmb3JtNGZ2IiwgbG9jYXRpb24sIGRhdGEs
IDQsIHNyY09mZnNldCwgc3JjTGVuZ3RoKSkKKyAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGlu
ZygpKQogICAgICAgICByZXR1cm47Ci0gICAgbV9jb250ZXh0LT51bmlmb3JtNGZ2KGxvY2F0aW9u
LT5sb2NhdGlvbigpLCBkYXRhLmRhdGEoKSwgc3JjT2Zmc2V0LCAoc3JjTGVuZ3RoID8gc3JjTGVu
Z3RoIDogZGF0YS5sZW5ndGgoKSAtIHNyY09mZnNldCkgLyA0KTsKKyAgICBhdXRvIHJlc3VsdCA9
IHZhbGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMoInVuaWZvcm00ZnYiLCBsb2NhdGlvbiwgZGF0YSwg
NCwgc3JjT2Zmc2V0LCBzcmNMZW5ndGgpOworICAgIGlmICghcmVzdWx0KQorICAgICAgICByZXR1
cm47CisgICAgbV9jb250ZXh0LT51bmlmb3JtNGZ2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCByZXN1
bHQudmFsdWUoKSk7CiB9CiAKIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTFp
dihXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEludDMyTGlzdCBkYXRhLCBHQ0dMdWlu
dCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKIHsKLSAgICBpZiAoaXNDb250ZXh0TG9z
dE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKCJ1bmlmb3JtMWl2Iiwg
bG9jYXRpb24sIGRhdGEsIDEsIHNyY09mZnNldCwgc3JjTGVuZ3RoKSkKKyAgICBpZiAoaXNDb250
ZXh0TG9zdE9yUGVuZGluZygpKQogICAgICAgICByZXR1cm47Ci0gICAgbV9jb250ZXh0LT51bmlm
b3JtMWl2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCBkYXRhLmRhdGEoKSwgc3JjT2Zmc2V0LCBzcmNM
ZW5ndGggPyBzcmNMZW5ndGggOiAoZGF0YS5sZW5ndGgoKSAtIHNyY09mZnNldCkpOworICAgIGF1
dG8gcmVzdWx0ID0gdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycygidW5pZm9ybTFpdiIsIGxvY2F0
aW9uLCBkYXRhLCAxLCBzcmNPZmZzZXQsIHNyY0xlbmd0aCk7CisgICAgaWYgKCFyZXN1bHQpCisg
ICAgICAgIHJldHVybjsKKyAgICBtX2NvbnRleHQtPnVuaWZvcm0xaXYobG9jYXRpb24tPmxvY2F0
aW9uKCksIHJlc3VsdC52YWx1ZSgpKTsKIH0KIAogdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0
Ojp1bmlmb3JtMml2KFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgSW50MzJMaXN0IGRh
dGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQogewotICAgIGlmIChp
c0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMoInVu
aWZvcm0yaXYiLCBsb2NhdGlvbiwgZGF0YSwgMiwgc3JjT2Zmc2V0LCBzcmNMZW5ndGgpKQorICAg
IGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBtX2Nv
bnRleHQtPnVuaWZvcm0yaXYobG9jYXRpb24tPmxvY2F0aW9uKCksIGRhdGEuZGF0YSgpLCBzcmNP
ZmZzZXQsIChzcmNMZW5ndGggPyBzcmNMZW5ndGggOiBkYXRhLmxlbmd0aCgpIC0gc3JjT2Zmc2V0
KSAvIDIpOworICAgIGF1dG8gcmVzdWx0ID0gdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycygidW5p
Zm9ybTJpdiIsIGxvY2F0aW9uLCBkYXRhLCAyLCBzcmNPZmZzZXQsIHNyY0xlbmd0aCk7CisgICAg
aWYgKCFyZXN1bHQpCisgICAgICAgIHJldHVybjsKKyAgICBtX2NvbnRleHQtPnVuaWZvcm0yaXYo
bG9jYXRpb24tPmxvY2F0aW9uKCksIHJlc3VsdC52YWx1ZSgpKTsKIH0KIAogdm9pZCBXZWJHTDJS
ZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtM2l2KFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlv
biwgSW50MzJMaXN0IGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3Ro
KQogewotICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlVW5pZm9y
bVBhcmFtZXRlcnMoInVuaWZvcm0zaXYiLCBsb2NhdGlvbiwgZGF0YSwgMywgc3JjT2Zmc2V0LCBz
cmNMZW5ndGgpKQorICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCiAgICAgICAgIHJl
dHVybjsKLSAgICBtX2NvbnRleHQtPnVuaWZvcm0zaXYobG9jYXRpb24tPmxvY2F0aW9uKCksIGRh
dGEuZGF0YSgpLCBzcmNPZmZzZXQsIChzcmNMZW5ndGggPyBzcmNMZW5ndGggOiBkYXRhLmxlbmd0
aCgpIC0gc3JjT2Zmc2V0KSAvIDMpOworICAgIGF1dG8gcmVzdWx0ID0gdmFsaWRhdGVVbmlmb3Jt
UGFyYW1ldGVycygidW5pZm9ybTNpdiIsIGxvY2F0aW9uLCBkYXRhLCAzLCBzcmNPZmZzZXQsIHNy
Y0xlbmd0aCk7CisgICAgaWYgKCFyZXN1bHQpCisgICAgICAgIHJldHVybjsKKyAgICBtX2NvbnRl
eHQtPnVuaWZvcm0zaXYobG9jYXRpb24tPmxvY2F0aW9uKCksIHJlc3VsdC52YWx1ZSgpKTsKIH0K
IAogdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtNGl2KFdlYkdMVW5pZm9ybUxv
Y2F0aW9uKiBsb2NhdGlvbiwgSW50MzJMaXN0IGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NH
THVpbnQgc3JjTGVuZ3RoKQogewotICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwg
IXZhbGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMoInVuaWZvcm00aXYiLCBsb2NhdGlvbiwgZGF0YSwg
NCwgc3JjT2Zmc2V0LCBzcmNMZW5ndGgpKQorICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5n
KCkpCiAgICAgICAgIHJldHVybjsKLSAgICBtX2NvbnRleHQtPnVuaWZvcm00aXYobG9jYXRpb24t
PmxvY2F0aW9uKCksIGRhdGEuZGF0YSgpLCBzcmNPZmZzZXQsIChzcmNMZW5ndGggPyBzcmNMZW5n
dGggOiBkYXRhLmxlbmd0aCgpIC0gc3JjT2Zmc2V0KSAvIDQpOworICAgIGF1dG8gcmVzdWx0ID0g
dmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycygidW5pZm9ybTRpdiIsIGxvY2F0aW9uLCBkYXRhLCA0
LCBzcmNPZmZzZXQsIHNyY0xlbmd0aCk7CisgICAgaWYgKCFyZXN1bHQpCisgICAgICAgIHJldHVy
bjsKKyAgICBtX2NvbnRleHQtPnVuaWZvcm00aXYobG9jYXRpb24tPmxvY2F0aW9uKCksIHJlc3Vs
dC52YWx1ZSgpKTsKIH0KIAogdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtTWF0
cml4MmZ2KFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNw
b3NlLCBGbG9hdDMyTGlzdCBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xl
bmd0aCkKIHsKLSAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVVu
aWZvcm1NYXRyaXhQYXJhbWV0ZXJzKCJ1bmlmb3JtTWF0cml4MmZ2IiwgbG9jYXRpb24sIHRyYW5z
cG9zZSwgZGF0YSwgMioyLCBzcmNPZmZzZXQsIHNyY0xlbmd0aCkpCisgICAgaWYgKGlzQ29udGV4
dExvc3RPclBlbmRpbmcoKSkKICAgICAgICAgcmV0dXJuOwotICAgIG1fY29udGV4dC0+dW5pZm9y
bU1hdHJpeDJmdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgdHJhbnNwb3NlLCBkYXRhLmRhdGEoKSwg
c3JjT2Zmc2V0LCAoc3JjTGVuZ3RoID8gc3JjTGVuZ3RoIDogZGF0YS5sZW5ndGgoKSAtIHNyY09m
ZnNldCkgLyAoMioyKSk7CisgICAgYXV0byByZXN1bHQgPSB2YWxpZGF0ZVVuaWZvcm1NYXRyaXhQ
YXJhbWV0ZXJzKCJ1bmlmb3JtTWF0cml4MmZ2IiwgbG9jYXRpb24sIHRyYW5zcG9zZSwgZGF0YSwg
MioyLCBzcmNPZmZzZXQsIHNyY0xlbmd0aCk7CisgICAgaWYgKCFyZXN1bHQpCisgICAgICAgIHJl
dHVybjsKKyAgICBtX2NvbnRleHQtPnVuaWZvcm1NYXRyaXgyZnYobG9jYXRpb24tPmxvY2F0aW9u
KCksIHRyYW5zcG9zZSwgcmVzdWx0LnZhbHVlKCkpOwogfQogCiB2b2lkIFdlYkdMMlJlbmRlcmlu
Z0NvbnRleHQ6OnVuaWZvcm1NYXRyaXgzZnYoV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9u
LCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEZsb2F0MzJMaXN0IGRhdGEsIEdDR0x1aW50IHNyY09m
ZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQogewotICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5k
aW5nKCkgfHwgIXZhbGlkYXRlVW5pZm9ybU1hdHJpeFBhcmFtZXRlcnMoInVuaWZvcm1NYXRyaXgz
ZnYiLCBsb2NhdGlvbiwgdHJhbnNwb3NlLCBkYXRhLCAzKjMsIHNyY09mZnNldCwgc3JjTGVuZ3Ro
KSkKKyAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpKQogICAgICAgICByZXR1cm47Ci0g
ICAgbV9jb250ZXh0LT51bmlmb3JtTWF0cml4M2Z2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCB0cmFu
c3Bvc2UsIGRhdGEuZGF0YSgpLCBzcmNPZmZzZXQsIChzcmNMZW5ndGggPyBzcmNMZW5ndGggOiBk
YXRhLmxlbmd0aCgpIC0gc3JjT2Zmc2V0KSAvICgzKjMpKTsKKyAgICBhdXRvIHJlc3VsdCA9IHZh
bGlkYXRlVW5pZm9ybU1hdHJpeFBhcmFtZXRlcnMoInVuaWZvcm1NYXRyaXgzZnYiLCBsb2NhdGlv
biwgdHJhbnNwb3NlLCBkYXRhLCAzKjMsIHNyY09mZnNldCwgc3JjTGVuZ3RoKTsKKyAgICBpZiAo
IXJlc3VsdCkKKyAgICAgICAgcmV0dXJuOworICAgIG1fY29udGV4dC0+dW5pZm9ybU1hdHJpeDNm
dihsb2NhdGlvbi0+bG9jYXRpb24oKSwgdHJhbnNwb3NlLCByZXN1bHQudmFsdWUoKSk7CiB9CiAK
IHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybU1hdHJpeDRmdihXZWJHTFVuaWZv
cm1Mb2NhdGlvbiogbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgRmxvYXQzMkxpc3Qg
ZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCiB7Ci0gICAgaWYg
KGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVVbmlmb3JtTWF0cml4UGFyYW1l
dGVycygidW5pZm9ybU1hdHJpeDRmdiIsIGxvY2F0aW9uLCB0cmFuc3Bvc2UsIGRhdGEsIDQqNCwg
c3JjT2Zmc2V0LCBzcmNMZW5ndGgpKQorICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkp
CisgICAgICAgIHJldHVybjsKKyAgICBhdXRvIHJlc3VsdCA9IHZhbGlkYXRlVW5pZm9ybU1hdHJp
eFBhcmFtZXRlcnMoInVuaWZvcm1NYXRyaXg0ZnYiLCBsb2NhdGlvbiwgdHJhbnNwb3NlLCBkYXRh
LCA0KjQsIHNyY09mZnNldCwgc3JjTGVuZ3RoKTsKKyAgICBpZiAoIXJlc3VsdCkKICAgICAgICAg
cmV0dXJuOwotICAgIG1fY29udGV4dC0+dW5pZm9ybU1hdHJpeDRmdihsb2NhdGlvbi0+bG9jYXRp
b24oKSwgdHJhbnNwb3NlLCBkYXRhLmRhdGEoKSwgc3JjT2Zmc2V0LCAoc3JjTGVuZ3RoID8gc3Jj
TGVuZ3RoIDogZGF0YS5sZW5ndGgoKSAtIHNyY09mZnNldCkgLyAoNCo0KSk7CisgICAgbV9jb250
ZXh0LT51bmlmb3JtTWF0cml4NGZ2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCB0cmFuc3Bvc2UsIHJl
c3VsdC52YWx1ZSgpKTsKIH0KIAogdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpyZWFkUGl4
ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWln
aHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgQXJyYXlCdWZmZXJWaWV3JiBwaXhl
bHMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJp
bmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdD
b250ZXh0LmgKaW5kZXggYjhiMDM2ZTQ0NzZhNGYxNWQ0ZTUwNjc1OGM1NzU5MzVlMGEwNjI0Zi4u
NWY0N2U2MWYwYTQ0NDRhMjg4YzFiNDYwZmI0ZTBmNzM2Njc0NjY3OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuaApAQCAtMjky
LDcgKzI5Miw4IEBAIHByaXZhdGU6CiAgICAgYm9vbCB2YWxpZGF0ZUluZGV4QXJyYXlDb25zZXJ2
YXRpdmUoR0NHTGVudW0gdHlwZSwgdW5zaWduZWQmIG51bUVsZW1lbnRzUmVxdWlyZWQpIGZpbmFs
OwogICAgIGJvb2wgdmFsaWRhdGVCbGVuZEVxdWF0aW9uKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFt
ZSwgR0NHTGVudW0gbW9kZSkgZmluYWw7CiAgICAgYm9vbCB2YWxpZGF0ZUNhcGFiaWxpdHkoY29u
c3QgY2hhciogZnVuY3Rpb25OYW1lLCBHQ0dMZW51bSBjYXApIGZpbmFsOwotICAgIGJvb2wgdmFs
aWRhdGVDbGVhckJ1ZmZlcihjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIEdDR0xlbnVtIGJ1ZmZl
ciwgc2l6ZV90LCBHQ0dMdWludCBzcmNPZmZzZXQpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQs
IHR5cGVuYW1lIFR5cGVkQXJyYXlUeXBlPgorICAgIE9wdGlvbmFsPEdDR0xTcGFuPGNvbnN0IFQ+
PiB2YWxpZGF0ZUNsZWFyQnVmZmVyKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgR0NHTGVudW0g
YnVmZmVyLCBUeXBlZExpc3Q8VHlwZWRBcnJheVR5cGUsIFQ+JiB2YWx1ZXMsIEdDR0x1aW50IHNy
Y09mZnNldCk7CiAgICAgYm9vbCB2YWxpZGF0ZUZyYW1lYnVmZmVyVGFyZ2V0KEdDR0xlbnVtIHRh
cmdldCkgZmluYWw7CiAgICAgV2ViR0xGcmFtZWJ1ZmZlciogZ2V0RnJhbWVidWZmZXJCaW5kaW5n
KEdDR0xlbnVtIHRhcmdldCkgZmluYWw7CiAgICAgV2ViR0xGcmFtZWJ1ZmZlciogZ2V0UmVhZEZy
YW1lYnVmZmVyQmluZGluZygpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xEcmF3QnVmZmVycy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTERyYXdCdWZmZXJzLmNwcAppbmRleCA0OTQxNTZlMWU2NWI2MDI5MTkwZGI3YzFjMDI2
YWRmODAzZGRhOGQyLi5lNWNlYjRiZGRjYzRjMDUxZGI4YjlhYTljZTAyMDgxYmYyMjMwNTAwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTERyYXdCdWZmZXJzLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTERyYXdCdWZmZXJzLmNwcApA
QCAtNzQsOCArNzQsOCBAQCB2b2lkIFdlYkdMRHJhd0J1ZmZlcnM6OmRyYXdCdWZmZXJzV0VCR0wo
Y29uc3QgVmVjdG9yPEdDR0xlbnVtPiYgYnVmZmVycykKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQogICAgICAgICAvLyBCZWNhdXNlIHRoZSBiYWNrYnVmZmVyIGlzIHNpbXVsYXRlZCBv
biBhbGwgY3VycmVudCBXZWJLaXQgcG9ydHMsIHdlIG5lZWQgdG8gY2hhbmdlIEJBQ0sgdG8gQ09M
T1JfQVRUQUNITUVOVDAuCi0gICAgICAgIEdDR0xlbnVtIHZhbHVlID0gKGJ1ZnNbMF0gPT0gR3Jh
cGhpY3NDb250ZXh0R0w6OkJBQ0spID8gR3JhcGhpY3NDb250ZXh0R0w6OkNPTE9SX0FUVEFDSE1F
TlQwIDogR3JhcGhpY3NDb250ZXh0R0w6Ok5PTkU7Ci0gICAgICAgIG1fY29udGV4dC0+Z3JhcGhp
Y3NDb250ZXh0R0woKS0+Z2V0RXh0ZW5zaW9ucygpLmRyYXdCdWZmZXJzRVhUKDEsICZ2YWx1ZSk7
CisgICAgICAgIEdDR0xlbnVtIHZhbHVlWzFdIHsgKGJ1ZnNbMF0gPT0gR3JhcGhpY3NDb250ZXh0
R0w6OkJBQ0spID8gR3JhcGhpY3NDb250ZXh0R0w6OkNPTE9SX0FUVEFDSE1FTlQwIDogR3JhcGhp
Y3NDb250ZXh0R0w6Ok5PTkUgfTsKKyAgICAgICAgbV9jb250ZXh0LT5ncmFwaGljc0NvbnRleHRH
TCgpLT5nZXRFeHRlbnNpb25zKCkuZHJhd0J1ZmZlcnNFWFQodmFsdWUpOwogICAgICAgICBtX2Nv
bnRleHQtPnNldEJhY2tEcmF3QnVmZmVyKGJ1ZnNbMF0pOwogICAgIH0gZWxzZSB7CiAgICAgICAg
IGlmIChuID4gbV9jb250ZXh0LT5nZXRNYXhEcmF3QnVmZmVycygpKSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEZyYW1lYnVmZmVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRnJhbWVidWZmZXIuY3BwCmluZGV4IDM2NThlZThlYWFm
N2YwZGJiODg2M2NlZDUwMjQyNWY0ZmI0ZTIzYTUuLmIxOThiMzY2YjExZjE1YjFiODAzYmQwNjNj
NzZjNGYyY2Q4ZDExNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMRnJhbWVidWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
RnJhbWVidWZmZXIuY3BwCkBAIC03MDIsMTMgKzcwMiwxMCBAQCB2b2lkIFdlYkdMRnJhbWVidWZm
ZXI6OmRyYXdCdWZmZXJzSWZOZWNlc3NhcnkoYm9vbCBmb3JjZSkKICAgICAgICAgICAgIH0KICAg
ICAgICAgfQogICAgICAgICBpZiAocmVzZXQpIHsKLSAgICAgICAgICAgIGlmIChjb250ZXh0KCkt
PmlzV2ViR0wyKCkpIHsKLSAgICAgICAgICAgICAgICBjb250ZXh0KCktPmdyYXBoaWNzQ29udGV4
dEdMKCktPmRyYXdCdWZmZXJzKAotICAgICAgICAgICAgICAgICAgICBtX2ZpbHRlcmVkRHJhd0J1
ZmZlcnMuc2l6ZSgpLCBtX2ZpbHRlcmVkRHJhd0J1ZmZlcnMuZGF0YSgpKTsKLSAgICAgICAgICAg
IH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgY29udGV4dCgpLT5ncmFwaGljc0NvbnRleHRHTCgp
LT5nZXRFeHRlbnNpb25zKCkuZHJhd0J1ZmZlcnNFWFQoCi0gICAgICAgICAgICAgICAgICAgIG1f
ZmlsdGVyZWREcmF3QnVmZmVycy5zaXplKCksIG1fZmlsdGVyZWREcmF3QnVmZmVycy5kYXRhKCkp
OwotICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGNvbnRleHQoKS0+aXNXZWJHTDIoKSkK
KyAgICAgICAgICAgICAgICBjb250ZXh0KCktPmdyYXBoaWNzQ29udGV4dEdMKCktPmRyYXdCdWZm
ZXJzKG1fZmlsdGVyZWREcmF3QnVmZmVycyk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICAgICAgY29udGV4dCgpLT5ncmFwaGljc0NvbnRleHRHTCgpLT5nZXRFeHRlbnNpb25zKCkuZHJh
d0J1ZmZlcnNFWFQobV9maWx0ZXJlZERyYXdCdWZmZXJzKTsKICAgICAgICAgfQogICAgIH0KIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZS5jcHAKaW5kZXggMTg1ZThjNjJlNmZiZTMxZjMxMzg4YzBjOWY4MGQ4MWNlZTI0
YTNiMS4uZjhlZTUwNTkwNTkzNjg4NjMwM2UxYThiZWY2ZDJjZTg1YTJjMjhmZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZS5jcHAKQEAgLTE2MDMsNyArMTYwMyw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZTo6YnVmZmVyRGF0YShHQ0dMZW51bSB0YXJnZXQsIE9wdGlvbmFsPEJ1ZmZlckRhdGFTCiAg
ICAgICAgIH0KIAogICAgICAgICBtX2NvbnRleHQtPm1vdmVFcnJvcnNUb1N5bnRoZXRpY0Vycm9y
TGlzdCgpOwotICAgICAgICBtX2NvbnRleHQtPmJ1ZmZlckRhdGEodGFyZ2V0LCBkYXRhLT5ieXRl
TGVuZ3RoKCksIGRhdGEtPmRhdGEoKSwgdXNhZ2UpOworICAgICAgICBtX2NvbnRleHQtPmJ1ZmZl
ckRhdGEodGFyZ2V0LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4oZGF0YS0+ZGF0YSgpLCBkYXRh
LT5ieXRlTGVuZ3RoKCkpLCB1c2FnZSk7CiAgICAgICAgIGlmIChtX2NvbnRleHQtPm1vdmVFcnJv
cnNUb1N5bnRoZXRpY0Vycm9yTGlzdCgpKSB7CiAgICAgICAgICAgICAvLyBUaGUgYnVmZmVyRGF0
YSBmdW5jdGlvbiBmYWlsZWQuIFRlbGwgdGhlIGJ1ZmZlciBpdCBkb2Vzbid0IGhhdmUgdGhlIGRh
dGEgaXQgdGhpbmtzIGl0IGRvZXMuCiAgICAgICAgICAgICBidWZmZXItPmRpc2Fzc29jaWF0ZUJ1
ZmZlckRhdGEoKTsKQEAgLTE2MzAsNyArMTYzMCw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZTo6YnVmZmVyU3ViRGF0YShHQ0dMZW51bSB0YXJnZXQsIGxvbmcgbG9uZyBvZmZzZXQs
CiAgICAgICAgIH0KIAogICAgICAgICBtX2NvbnRleHQtPm1vdmVFcnJvcnNUb1N5bnRoZXRpY0Vy
cm9yTGlzdCgpOwotICAgICAgICBtX2NvbnRleHQtPmJ1ZmZlclN1YkRhdGEodGFyZ2V0LCBzdGF0
aWNfY2FzdDxHQ0dMaW50cHRyPihvZmZzZXQpLCBkYXRhLT5ieXRlTGVuZ3RoKCksIGRhdGEtPmRh
dGEoKSk7CisgICAgICAgIG1fY29udGV4dC0+YnVmZmVyU3ViRGF0YSh0YXJnZXQsIHN0YXRpY19j
YXN0PEdDR0xpbnRwdHI+KG9mZnNldCksIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPihkYXRhLT5k
YXRhKCksIGRhdGEtPmJ5dGVMZW5ndGgoKSkpOwogICAgICAgICBpZiAobV9jb250ZXh0LT5tb3Zl
RXJyb3JzVG9TeW50aGV0aWNFcnJvckxpc3QoKSkgewogICAgICAgICAgICAgLy8gVGhlIGJ1ZmZl
clN1YkRhdGEgZnVuY3Rpb24gZmFpbGVkLiBUZWxsIHRoZSBidWZmZXIgaXQgZG9lc24ndCBoYXZl
IHRoZSBkYXRhIGl0IHRoaW5rcyBpdCBkb2VzLgogICAgICAgICAgICAgYnVmZmVyLT5kaXNhc3Nv
Y2lhdGVCdWZmZXJEYXRhKCk7CkBAIC0xNzU2LDggKzE3NTYsOCBAQCB2b2lkIFdlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2U6OmNvbXByZXNzZWRUZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NH
TGludCBsZQogI2lmIFVTRShBTkdMRSkKICAgICBpZiAoIXZhbGlkYXRlVGV4dHVyZTJEQmluZGlu
ZygiY29tcHJlc3NlZFRleEltYWdlMkQiLCB0YXJnZXQpKQogICAgICAgICByZXR1cm47Ci0gICAg
bV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuY29tcHJlc3NlZFRleEltYWdlMkRSb2J1c3RBTkdM
RSh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwKLSAgICAgICAg
Ym9yZGVyLCBkYXRhLmJ5dGVMZW5ndGgoKSwgZGF0YS5ieXRlTGVuZ3RoKCksIGRhdGEuYmFzZUFk
ZHJlc3MoKSk7CisgICAgbV9jb250ZXh0LT5jb21wcmVzc2VkVGV4SW1hZ2UyRCh0YXJnZXQsIGxl
dmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwKKyAgICAgICAgYm9yZGVyLCBkYXRh
LmJ5dGVMZW5ndGgoKSwgbWFrZUdDR0xTcGFuKGRhdGEuYmFzZUFkZHJlc3MoKSwgZGF0YS5ieXRl
TGVuZ3RoKCkpKTsKICNlbHNlCiAgICAgaWYgKCF2YWxpZGF0ZVRleEZ1bmNMZXZlbCgiY29tcHJl
c3NlZFRleEltYWdlMkQiLCB0YXJnZXQsIGxldmVsKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTc4
Miw3ICsxNzgyLDcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpjb21wcmVzc2Vk
VGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGUKICAgICAgICAgcmV0dXJuOwog
ICAgIG1fY29udGV4dC0+bW92ZUVycm9yc1RvU3ludGhldGljRXJyb3JMaXN0KCk7CiAgICAgc3Rh
dGljX2Nhc3Q8R3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqPihtX2NvbnRleHQuZ2V0KCkpLT5jb21w
cmVzc2VkVGV4SW1hZ2UyRCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhl
aWdodCwKLSAgICAgICAgYm9yZGVyLCBkYXRhLmJ5dGVMZW5ndGgoKSwgZGF0YS5iYXNlQWRkcmVz
cygpKTsKKyAgICAgICAgYm9yZGVyLCBtYWtlR0NHTFNwYW4oZGF0YS5iYXNlQWRkcmVzcygpLCBk
YXRhLmJ5dGVMZW5ndGgoKSkpOwogICAgIGlmIChtX2NvbnRleHQtPm1vdmVFcnJvcnNUb1N5bnRo
ZXRpY0Vycm9yTGlzdCgpKSB7CiAgICAgICAgIC8vIFRoZSBjb21wcmVzc2VkVGV4SW1hZ2UyRCBm
dW5jdGlvbiBmYWlsZWQuIFRlbGwgdGhlIFdlYkdMVGV4dHVyZSBpdCBkb2Vzbid0IGhhdmUgdGhl
IGRhdGEgZm9yIHRoaXMgbGV2ZWwuCiAgICAgICAgIHRleC0+bWFya0ludmFsaWQodGFyZ2V0LCBs
ZXZlbCk7CkBAIC0xODAxLDcgKzE4MDEsNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U6OmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludAogI2lm
IFVTRShBTkdMRSkKICAgICBpZiAoIXZhbGlkYXRlVGV4dHVyZTJEQmluZGluZygiY29tcHJlc3Nl
ZFRleFN1YkltYWdlMkQiLCB0YXJnZXQpKQogICAgICAgICByZXR1cm47Ci0gICAgZ3JhcGhpY3ND
b250ZXh0R0woKS0+Z2V0RXh0ZW5zaW9ucygpLmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEUm9idXN0
QU5HTEUodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdodCwgZm9y
bWF0LCBkYXRhLmJ5dGVMZW5ndGgoKSwgZGF0YS5ieXRlTGVuZ3RoKCksIGRhdGEuYmFzZUFkZHJl
c3MoKSk7CisgICAgbV9jb250ZXh0LT5jb21wcmVzc2VkVGV4U3ViSW1hZ2UyRCh0YXJnZXQsIGxl
dmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIGRhdGEuYnl0ZUxl
bmd0aCgpLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4oZGF0YS5iYXNlQWRkcmVzcygpLCBkYXRh
LmJ5dGVMZW5ndGgoKSkpOwogI2Vsc2UKICAgICBpZiAoIXZhbGlkYXRlVGV4RnVuY0xldmVsKCJj
b21wcmVzc2VkVGV4U3ViSW1hZ2UyRCIsIHRhcmdldCwgbGV2ZWwpKQogICAgICAgICByZXR1cm47
CkBAIC0xODI0LDcgKzE4MjQsNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmNv
bXByZXNzZWRUZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludAogICAgIGlmICgh
dmFsaWRhdGVDb21wcmVzc2VkVGV4U3ViRGltZW5zaW9ucygiY29tcHJlc3NlZFRleFN1YkltYWdl
MkQiLCB0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBmb3Jt
YXQsIHRleC5nZXQoKSkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHN0YXRpY19jYXN0PEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMKj4oZ3JhcGhpY3NDb250ZXh0R0woKSktPmNvbXByZXNzZWRUZXhT
dWJJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQs
IGZvcm1hdCwgZGF0YS5ieXRlTGVuZ3RoKCksIGRhdGEuYmFzZUFkZHJlc3MoKSk7CisgICAgc3Rh
dGljX2Nhc3Q8R3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqPihncmFwaGljc0NvbnRleHRHTCgpKS0+
Y29tcHJlc3NlZFRleFN1YkltYWdlMkQodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwg
d2lkdGgsIGhlaWdodCwgZm9ybWF0LCBtYWtlR0NHTFNwYW4oZGF0YS5iYXNlQWRkcmVzcygpLCBk
YXRhLmJ5dGVMZW5ndGgoKSk7CiAgICAgdGV4LT5zZXRDb21wcmVzc2VkKCk7CiAjZW5kaWYKIH0K
QEAgLTE5MDAsOCArMTkwMCw4IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Y29w
eVRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsCiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgVW5pcXVlQXJyYXk8dW5zaWduZWQgY2hhcj4g
emVybzsKKyAgICAgICAgdW5zaWduZWQgc2l6ZSA9IDA7CiAgICAgICAgIGlmICh3aWR0aCAmJiBo
ZWlnaHQpIHsKLSAgICAgICAgICAgIHVuc2lnbmVkIHNpemU7CiAgICAgICAgICAgICBHQ0dMZW51
bSBlcnJvciA9IG1fY29udGV4dC0+Y29tcHV0ZUltYWdlU2l6ZUluQnl0ZXMoZm9ybWF0LCB0eXBl
LCB3aWR0aCwgaGVpZ2h0LCAxLCBnZXRVbnBhY2tQaXhlbFN0b3JlUGFyYW1zKFRleEltYWdlRGlt
ZW5zaW9uOjpUZXgyRCksICZzaXplLCBudWxscHRyLCBudWxscHRyKTsKICAgICAgICAgICAgIGlm
IChlcnJvciAhPSBHcmFwaGljc0NvbnRleHRHTDo6Tk9fRVJST1IpIHsKICAgICAgICAgICAgICAg
ICBzeW50aGVzaXplR0xFcnJvcihlcnJvciwgImNvcHlUZXhTdWJJbWFnZTJEIiwgImJhZCBkaW1l
bnNpb25zIik7CkBAIC0xOTE0LDcgKzE5MTQsNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2U6OmNvcHlUZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbAog
ICAgICAgICAgICAgfQogICAgICAgICAgICAgbWVtc2V0KHplcm8uZ2V0KCksIDAsIHNpemUpOwog
ICAgICAgICB9Ci0gICAgICAgIG1fY29udGV4dC0+dGV4U3ViSW1hZ2UyRCh0YXJnZXQsIGxldmVs
LCB4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIHplcm8uZ2V0
KCkpOworICAgICAgICBtX2NvbnRleHQtPnRleFN1YkltYWdlMkQodGFyZ2V0LCBsZXZlbCwgeG9m
ZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBtYWtlR0NHTFNwYW4o
emVyby5nZXQoKSwgc2l6ZSkpOwogICAgICAgICBpZiAoY2xpcHBlZFdpZHRoID4gMCAmJiBjbGlw
cGVkSGVpZ2h0ID4gMCkKICAgICAgICAgICAgIG1fY29udGV4dC0+Y29weVRleFN1YkltYWdlMkQo
dGFyZ2V0LCBsZXZlbCwgeG9mZnNldCArIGNsaXBwZWRYIC0geCwgeW9mZnNldCArIGNsaXBwZWRZ
IC0geSwgY2xpcHBlZFgsIGNsaXBwZWRZLCBjbGlwcGVkV2lkdGgsIGNsaXBwZWRIZWlnaHQpOwog
ICAgIH0gZWxzZQpAQCAtNDcwNywxNCArNDcwNywxNCBAQCBFeGNlcHRpb25Pcjx2b2lkPiBXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlOjp0ZXhJbWFnZVNvdXJjZUhlbHBlcihUZXhJbWFnZUZ1bmN0
aQogI2lmIFVTRShBTkdMRSkKICAgICAgICAgICAgIC8vIDNEIGZ1bmN0aW9ucy4KICAgICAgICAg
ICAgIGlmIChmdW5jdGlvbklEID09IFRleEltYWdlRnVuY3Rpb25JRDo6VGV4SW1hZ2UzRCkgewot
ICAgICAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnRleEltYWdlM0RSb2J1
c3RBTkdMRSh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwKKyAgICAgICAgICAgICAgICBt
X2NvbnRleHQtPnRleEltYWdlM0QodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsCiAgICAg
ICAgICAgICAgICAgICAgIGFkanVzdGVkU291cmNlSW1hZ2VSZWN0LndpZHRoKCksIGFkanVzdGVk
U291cmNlSW1hZ2VSZWN0LmhlaWdodCgpLCBkZXB0aCwgMCwKLSAgICAgICAgICAgICAgICAgICAg
Zm9ybWF0LCB0eXBlLCBieXRlTGVuZ3RoLCBuZWVkQ29udmVyc2lvbiA/IGRhdGEuZGF0YSgpIDog
cGl4ZWxzLT5kYXRhKCktPmRhdGEoKSk7CisgICAgICAgICAgICAgICAgICAgIGZvcm1hdCwgdHlw
ZSwgbWFrZUdDR0xTcGFuKG5lZWRDb252ZXJzaW9uID8gZGF0YS5kYXRhKCkgOiBwaXhlbHMtPmRh
dGEoKS0+ZGF0YSgpLCBieXRlTGVuZ3RoKSk7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAg
ICAgICAgICAgIEFTU0VSVChmdW5jdGlvbklEID09IFRleEltYWdlRnVuY3Rpb25JRDo6VGV4U3Vi
SW1hZ2UzRCk7Ci0gICAgICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkudGV4
U3ViSW1hZ2UzRFJvYnVzdEFOR0xFKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHpv
ZmZzZXQsCisgICAgICAgICAgICAgICAgbV9jb250ZXh0LT50ZXhTdWJJbWFnZTNEKHRhcmdldCwg
bGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHpvZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgIGFk
anVzdGVkU291cmNlSW1hZ2VSZWN0LndpZHRoKCksIGFkanVzdGVkU291cmNlSW1hZ2VSZWN0Lmhl
aWdodCgpLCBkZXB0aCwKLSAgICAgICAgICAgICAgICAgICAgZm9ybWF0LCB0eXBlLCBieXRlTGVu
Z3RoLCBuZWVkQ29udmVyc2lvbiA/IGRhdGEuZGF0YSgpIDogcGl4ZWxzLT5kYXRhKCktPmRhdGEo
KSk7CisgICAgICAgICAgICAgICAgICAgIGZvcm1hdCwgdHlwZSwgbWFrZUdDR0xTcGFuKG5lZWRD
b252ZXJzaW9uID8gZGF0YS5kYXRhKCkgOiBwaXhlbHMtPmRhdGEoKS0+ZGF0YSgpLCBieXRlTGVu
Z3RoKSk7CiAgICAgICAgICAgICB9CiAjZWxzZQogICAgICAgICAgICAgLy8gV2ViR0wgMi4wIGlz
IG9ubHkgc3VwcG9ydGVkIHdpdGggdGhlIEFOR0xFIGJhY2tlbmQuCkBAIC00ODk0LDExICs0ODk0
LDExIEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dGV4SW1hZ2VBcnJheUJ1ZmZl
clZpZXdIZWxwZXIoVGV4SW1hZ2VGdW5jdGlvbklECiAgICAgfQogI2lmIFVTRShBTkdMRSkKICAg
ICBpZiAoZnVuY3Rpb25JRCA9PSBUZXhJbWFnZUZ1bmN0aW9uSUQ6OlRleEltYWdlM0QpIHsKLSAg
ICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkudGV4SW1hZ2UzRFJvYnVzdEFOR0xFKHRh
cmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgYm9yZGVy
LCBmb3JtYXQsIHR5cGUsIGJ5dGVMZW5ndGgsIGRhdGEpOworICAgICAgICBtX2NvbnRleHQtPnRl
eEltYWdlM0QodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGRl
cHRoLCBib3JkZXIsIGZvcm1hdCwgdHlwZSwgbWFrZUdDR0xTcGFuKGRhdGEsIGJ5dGVMZW5ndGgp
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBpZiAoZnVuY3Rpb25JRCA9PSBUZXhJbWFn
ZUZ1bmN0aW9uSUQ6OlRleFN1YkltYWdlM0QpIHsKLSAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRl
bnNpb25zKCkudGV4U3ViSW1hZ2UzRFJvYnVzdEFOR0xFKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQs
IHlvZmZzZXQsIHpvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBmb3JtYXQsIHR5cGUsIGJ5
dGVMZW5ndGgsIGRhdGEpOworICAgICAgICBtX2NvbnRleHQtPnRleFN1YkltYWdlM0QodGFyZ2V0
LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgem9mZnNldCwgd2lkdGgsIGhlaWdodCwgZGVwdGgs
IGZvcm1hdCwgdHlwZSwgbWFrZUdDR0xTcGFuKGRhdGEsIGJ5dGVMZW5ndGgpKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KICNlbmRpZiAvLyBVU0UoQU5HTEUpCkBAIC00OTczLDE0ICs0OTczLDE0
IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dGV4SW1hZ2VJbXBsKFRleEltYWdl
RnVuY3Rpb25JRCBmdW5jdGlvbklELCBHQ0dMCiAjaWYgVVNFKEFOR0xFKQogICAgICAgICAvLyAz
RCBmdW5jdGlvbnMuCiAgICAgICAgIGlmIChmdW5jdGlvbklEID09IFRleEltYWdlRnVuY3Rpb25J
RDo6VGV4SW1hZ2UzRCkgewotICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCku
dGV4SW1hZ2UzRFJvYnVzdEFOR0xFKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LAorICAg
ICAgICAgICAgbV9jb250ZXh0LT50ZXhJbWFnZTNEKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9y
bWF0LAogICAgICAgICAgICAgICAgIGFkanVzdGVkU291cmNlSW1hZ2VSZWN0LndpZHRoKCksIGFk
anVzdGVkU291cmNlSW1hZ2VSZWN0LmhlaWdodCgpLCBkZXB0aCwgMCwKLSAgICAgICAgICAgICAg
ICBmb3JtYXQsIHR5cGUsIGJ5dGVMZW5ndGgsIG5lZWRDb252ZXJzaW9uID8gZGF0YS5kYXRhKCkg
OiBpbWFnZVBpeGVsRGF0YSk7CisgICAgICAgICAgICAgICAgZm9ybWF0LCB0eXBlLCBtYWtlR0NH
TFNwYW4obmVlZENvbnZlcnNpb24gPyBkYXRhLmRhdGEoKSA6IGltYWdlUGl4ZWxEYXRhLCBieXRl
TGVuZ3RoKSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBBU1NFUlQoZnVuY3Rpb25J
RCA9PSBUZXhJbWFnZUZ1bmN0aW9uSUQ6OlRleFN1YkltYWdlM0QpOwotICAgICAgICAgICAgbV9j
b250ZXh0LT5nZXRFeHRlbnNpb25zKCkudGV4U3ViSW1hZ2UzRFJvYnVzdEFOR0xFKHRhcmdldCwg
bGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHpvZmZzZXQsCisgICAgICAgICAgICBtX2NvbnRleHQt
PnRleFN1YkltYWdlM0QodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgem9mZnNldCwK
ICAgICAgICAgICAgICAgICBhZGp1c3RlZFNvdXJjZUltYWdlUmVjdC53aWR0aCgpLCBhZGp1c3Rl
ZFNvdXJjZUltYWdlUmVjdC5oZWlnaHQoKSwgZGVwdGgsCi0gICAgICAgICAgICAgICAgZm9ybWF0
LCB0eXBlLCBieXRlTGVuZ3RoLCBuZWVkQ29udmVyc2lvbiA/IGRhdGEuZGF0YSgpIDogaW1hZ2VQ
aXhlbERhdGEpOworICAgICAgICAgICAgICAgIGZvcm1hdCwgdHlwZSwgbWFrZUdDR0xTcGFuKG5l
ZWRDb252ZXJzaW9uID8gZGF0YS5kYXRhKCkgOiBpbWFnZVBpeGVsRGF0YSwgYnl0ZUxlbmd0aCkp
OwogICAgICAgICB9CiAjZWxzZQogICAgICAgICBVTlVTRURfUEFSQU0oem9mZnNldCk7CkBAIC00
OTkzLDcgKzQ5OTMsNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnRleEltYWdl
SW1wbChUZXhJbWFnZUZ1bmN0aW9uSUQgZnVuY3Rpb25JRCwgR0NHTAogdm9pZCBXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlOjp0ZXhJbWFnZTJEQmFzZShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQg
bGV2ZWwsIEdDR0xlbnVtIGludGVybmFsRm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXpl
aSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUs
IEdDR0xzaXplaSBieXRlTGVuZ3RoLCBjb25zdCB2b2lkKiBwaXhlbHMpCiB7CiAjaWYgVVNFKEFO
R0xFKQotICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnRleEltYWdlMkRSb2J1c3RBTkdM
RSh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbEZvcm1hdCwgd2lkdGgsIGhlaWdodCwgYm9yZGVyLCBm
b3JtYXQsIHR5cGUsIGJ5dGVMZW5ndGgsIHBpeGVscyk7CisgICAgbV9jb250ZXh0LT50ZXhJbWFn
ZTJEKHRhcmdldCwgbGV2ZWwsIGludGVybmFsRm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIs
IGZvcm1hdCwgdHlwZSwgbWFrZUdDR0xTcGFuKHBpeGVscywgYnl0ZUxlbmd0aCkpOwogI2Vsc2UK
ICAgICBVTlVTRURfUEFSQU0oYnl0ZUxlbmd0aCk7CiAgICAgLy8gRklYTUU6IEZvciBub3cgd2Ug
aWdub3JlIGFueSBlcnJvcnMgcmV0dXJuZWQuCkBAIC01MDA3LDcgKzUwMDcsNyBAQCB2b2lkIFdl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnRleEltYWdlMkRCYXNlKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGludCBsZXZlbCwgRwogICAgIH0gZWxzZSB7CiAgICAgICAgIEFTU0VSVCh2YWxpZGF0ZVNl
dHRhYmxlVGV4SW50ZXJuYWxGb3JtYXQoInRleEltYWdlMkQiLCBpbnRlcm5hbEZvcm1hdCkpOwog
ICAgICAgICBtX2NvbnRleHQtPm1vdmVFcnJvcnNUb1N5bnRoZXRpY0Vycm9yTGlzdCgpOwotICAg
ICAgICBtX2NvbnRleHQtPnRleEltYWdlMkQodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxGb3JtYXQs
IHdpZHRoLCBoZWlnaHQsIGJvcmRlciwgZm9ybWF0LCB0eXBlLCBwaXhlbHMpOworICAgICAgICBt
X2NvbnRleHQtPnRleEltYWdlMkQodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxGb3JtYXQsIHdpZHRo
LCBoZWlnaHQsIGJvcmRlciwgZm9ybWF0LCB0eXBlLCBtYWtlR0NHTFNwYW4ocGl4ZWxzLCBieXRl
TGVuZ3RoKSk7CiAgICAgICAgIGlmIChtX2NvbnRleHQtPm1vdmVFcnJvcnNUb1N5bnRoZXRpY0Vy
cm9yTGlzdCgpKSB7CiAgICAgICAgICAgICAvLyBUaGUgdGV4SW1hZ2UyRCBmdW5jdGlvbiBmYWls
ZWQuIFRlbGwgdGhlIFdlYkdMVGV4dHVyZSBpdCBkb2Vzbid0IGhhdmUgdGhlIGRhdGEgZm9yIHRo
aXMgbGV2ZWwuCiAgICAgICAgICAgICB0ZXgtPm1hcmtJbnZhbGlkKHRhcmdldCwgbGV2ZWwpOwpA
QCAtNTAyMyw3ICs1MDIzLDcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp0ZXhT
dWJJbWFnZTJEQmFzZShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwKICAgICBBU1NFUlQo
IWlzQ29udGV4dExvc3QoKSk7CiAjaWYgVVNFKEFOR0xFKQogICAgIFVOVVNFRF9QQVJBTShpbnRl
cm5hbEZvcm1hdCk7Ci0gICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkudGV4U3ViSW1hZ2Uy
RFJvYnVzdEFOR0xFKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWln
aHQsIGZvcm1hdCwgdHlwZSwgYnl0ZUxlbmd0aCwgcGl4ZWxzKTsKKyAgICBtX2NvbnRleHQtPnRl
eFN1YkltYWdlMkQodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdo
dCwgZm9ybWF0LCB0eXBlLCBtYWtlR0NHTFNwYW4ocGl4ZWxzLCBieXRlTGVuZ3RoKSk7CiAjZWxz
ZQogICAgIFVOVVNFRF9QQVJBTShieXRlTGVuZ3RoKTsKICAgICBBU1NFUlQodmFsaWRhdGVUZXhG
dW5jUGFyYW1ldGVycygidGV4U3ViSW1hZ2UyRCIsIFRleEltYWdlRnVuY3Rpb25UeXBlOjpUZXhT
dWJJbWFnZSwgU291cmNlQXJyYXlCdWZmZXJWaWV3LCB0YXJnZXQsIGxldmVsLCBpbnRlcm5hbEZv
cm1hdCwgd2lkdGgsIGhlaWdodCwgMSwgMCwgZm9ybWF0LCB0eXBlKSk7CkBAIC01MDQwLDcgKzUw
NDAsNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnRleFN1YkltYWdlMkRCYXNl
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbAogICAgIEFTU0VSVCh0ZXgtPmdldEhlaWdo
dCh0YXJnZXQsIGxldmVsKSA+PSAoeW9mZnNldCArIGhlaWdodCkpOwogICAgIGlmICghaXNXZWJH
TDIoKSkKICAgICAgICAgQVNTRVJUX1VOVVNFRChpbnRlcm5hbEZvcm1hdCwgdGV4LT5nZXRJbnRl
cm5hbEZvcm1hdCh0YXJnZXQsIGxldmVsKSA9PSBpbnRlcm5hbEZvcm1hdCk7Ci0gICAgbV9jb250
ZXh0LT50ZXhTdWJJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRo
LCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgcGl4ZWxzKTsKKyAgICBtX2NvbnRleHQtPnRleFN1Yklt
YWdlMkQodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdodCwgZm9y
bWF0LCB0eXBlLCBtYWtlR0NHTFNwYW4ocGl4ZWxzLCBieXRlTGVuZ3RoKSk7CiAjZW5kaWYKIH0K
IApAQCAtNTgyNiwxMDAgKzU4MjYsMTI1IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZTo6dW5pZm9ybTRpKGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwKIAogdm9p
ZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtMWZ2KGNvbnN0IFdlYkdMVW5pZm9y
bUxvY2F0aW9uKiBsb2NhdGlvbiwgRmxvYXQzMkxpc3QmJiB2KQogewotICAgIGlmIChpc0NvbnRl
eHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMoInVuaWZvcm0x
ZnYiLCBsb2NhdGlvbiwgdiwgMSwgMCwgdi5sZW5ndGgoKSkpCisgICAgaWYgKGlzQ29udGV4dExv
c3RPclBlbmRpbmcoKSkKICAgICAgICAgcmV0dXJuOwotCi0gICAgbV9jb250ZXh0LT51bmlmb3Jt
MWZ2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCB2Lmxlbmd0aCgpLCB2LmRhdGEoKSk7CisgICAgYXV0
byBkYXRhID0gdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycygidW5pZm9ybTFmdiIsIGxvY2F0aW9u
LCB2LCAxKTsKKyAgICBpZiAoIWRhdGEpCisgICAgICAgIHJldHVybjsKKyAgICBtX2NvbnRleHQt
PnVuaWZvcm0xZnYobG9jYXRpb24tPmxvY2F0aW9uKCksIGRhdGEudmFsdWUoKSk7CiB9CiAKIHZv
aWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybTJmdihjb25zdCBXZWJHTFVuaWZv
cm1Mb2NhdGlvbiogbG9jYXRpb24sIEZsb2F0MzJMaXN0JiYgdikKIHsKLSAgICBpZiAoaXNDb250
ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKCJ1bmlmb3Jt
MmZ2IiwgbG9jYXRpb24sIHYsIDIsIDAsIHYubGVuZ3RoKCkpKQorICAgIGlmIChpc0NvbnRleHRM
b3N0T3JQZW5kaW5nKCkpCiAgICAgICAgIHJldHVybjsKLQotICAgIG1fY29udGV4dC0+dW5pZm9y
bTJmdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgdi5sZW5ndGgoKSAvIDIsIHYuZGF0YSgpKTsKKyAg
ICBhdXRvIGRhdGEgPSB2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKCJ1bmlmb3JtMmZ2IiwgbG9j
YXRpb24sIHYsIDIpOworICAgIGlmICghZGF0YSkKKyAgICAgICAgcmV0dXJuOworICAgIG1fY29u
dGV4dC0+dW5pZm9ybTJmdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgZGF0YS52YWx1ZSgpKTsKIH0K
IAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtM2Z2KGNvbnN0IFdlYkdM
VW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgRmxvYXQzMkxpc3QmJiB2KQogewotICAgIGlmIChp
c0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMoInVu
aWZvcm0zZnYiLCBsb2NhdGlvbiwgdiwgMywgMCwgdi5sZW5ndGgoKSkpCisgICAgaWYgKGlzQ29u
dGV4dExvc3RPclBlbmRpbmcoKSkKICAgICAgICAgcmV0dXJuOwotCi0gICAgbV9jb250ZXh0LT51
bmlmb3JtM2Z2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCB2Lmxlbmd0aCgpIC8gMywgdi5kYXRhKCkp
OworICAgIGF1dG8gZGF0YSA9IHZhbGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMoInVuaWZvcm0zZnYi
LCBsb2NhdGlvbiwgdiwgMyk7CisgICAgaWYgKCFkYXRhKQorICAgICAgICByZXR1cm47CisgICAg
bV9jb250ZXh0LT51bmlmb3JtM2Z2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCBkYXRhLnZhbHVlKCkp
OwogfQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm00ZnYoY29uc3Qg
V2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBGbG9hdDMyTGlzdCYmIHYpCiB7Ci0gICAg
aWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVy
cygidW5pZm9ybTRmdiIsIGxvY2F0aW9uLCB2LCA0LCAwLCB2Lmxlbmd0aCgpKSkKKyAgICBpZiAo
aXNDb250ZXh0TG9zdE9yUGVuZGluZygpKQogICAgICAgICByZXR1cm47Ci0KLSAgICBtX2NvbnRl
eHQtPnVuaWZvcm00ZnYobG9jYXRpb24tPmxvY2F0aW9uKCksIHYubGVuZ3RoKCkgLyA0LCB2LmRh
dGEoKSk7CisgICAgYXV0byBkYXRhID0gdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycygidW5pZm9y
bTRmdiIsIGxvY2F0aW9uLCB2LCA0KTsKKyAgICBpZiAoIWRhdGEpCisgICAgICAgIHJldHVybjsK
KyAgICBtX2NvbnRleHQtPnVuaWZvcm00ZnYobG9jYXRpb24tPmxvY2F0aW9uKCksIGRhdGEudmFs
dWUoKSk7CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybTFpdihj
b25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEludDMyTGlzdCYmIHYpCiB7Ci0g
ICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVVbmlmb3JtUGFyYW1l
dGVycygidW5pZm9ybTFpdiIsIGxvY2F0aW9uLCB2LCAxLCAwLCB2Lmxlbmd0aCgpKSkKKyAgICBp
ZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpKQorICAgICAgICByZXR1cm47CisgICAgYXV0byBy
ZXN1bHQgPSB2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKCJ1bmlmb3JtMWl2IiwgbG9jYXRpb24s
IHYsIDEpOworICAgIGlmICghcmVzdWx0KQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIGRh
dGEgPSB2LmRhdGEoKTsKLSAgICBhdXRvIGxlbmd0aCA9IHYubGVuZ3RoKCk7CisgICAgYXV0byBk
YXRhID0gcmVzdWx0LnZhbHVlKCk7CiAKICAgICBpZiAobG9jYXRpb24tPnR5cGUoKSA9PSBHcmFw
aGljc0NvbnRleHRHTDo6U0FNUExFUl8yRCB8fCBsb2NhdGlvbi0+dHlwZSgpID09IEdyYXBoaWNz
Q29udGV4dEdMOjpTQU1QTEVSX0NVQkUpIHsKLSAgICAgICAgZm9yIChhdXRvIGkgPSAwOyBpIDwg
bGVuZ3RoOyArK2kpIHsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBkYXRhLmJ1ZlNp
emU7ICsraSkgewogICAgICAgICAgICAgaWYgKGRhdGFbaV0gPj0gc3RhdGljX2Nhc3Q8aW50Piht
X3RleHR1cmVVbml0cy5zaXplKCkpKSB7Ci0gICAgICAgICAgICAgICAgTE9HKFdlYkdMLCAiVGV4
dHVyZSB1bml0IHNpemU9JXp1LCB2WyVkXT0lZC4gTG9jYXRpb24gdHlwZSA9ICUwNFguIiwgbV90
ZXh0dXJlVW5pdHMuc2l6ZSgpLCBpLCBkYXRhW2ldLCBsb2NhdGlvbi0+dHlwZSgpKTsKKyAgICAg
ICAgICAgICAgICBMT0coV2ViR0wsICJUZXh0dXJlIHVuaXQgc2l6ZT0lenUsIHZbJXp1XT0lZC4g
TG9jYXRpb24gdHlwZSA9ICUwNFguIiwgbV90ZXh0dXJlVW5pdHMuc2l6ZSgpLCBpLCBkYXRhW2ld
LCBsb2NhdGlvbi0+dHlwZSgpKTsKICAgICAgICAgICAgICAgICBzeW50aGVzaXplR0xFcnJvcihH
cmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9WQUxVRSwgInVuaWZvcm0xaXYiLCAiaW52YWxpZCB0
ZXh0dXJlIHVuaXQiKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAg
ICAgICAgIH0KICAgICB9CiAKLSAgICBtX2NvbnRleHQtPnVuaWZvcm0xaXYobG9jYXRpb24tPmxv
Y2F0aW9uKCksIGxlbmd0aCwgZGF0YSk7CisgICAgbV9jb250ZXh0LT51bmlmb3JtMWl2KGxvY2F0
aW9uLT5sb2NhdGlvbigpLCBkYXRhKTsKIH0KIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlOjp1bmlmb3JtMml2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgSW50
MzJMaXN0JiYgdikKIHsKLSAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxp
ZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKCJ1bmlmb3JtMml2IiwgbG9jYXRpb24sIHYsIDIsIDAsIHYu
bGVuZ3RoKCkpKQorICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCiAgICAgICAgIHJl
dHVybjsKLQotICAgIG1fY29udGV4dC0+dW5pZm9ybTJpdihsb2NhdGlvbi0+bG9jYXRpb24oKSwg
di5sZW5ndGgoKSAvIDIsIHYuZGF0YSgpKTsKKyAgICBhdXRvIGRhdGEgPSB2YWxpZGF0ZVVuaWZv
cm1QYXJhbWV0ZXJzKCJ1bmlmb3JtMml2IiwgbG9jYXRpb24sIHYsIDIpOworICAgIGlmICghZGF0
YSkKKyAgICAgICAgcmV0dXJuOworICAgIG1fY29udGV4dC0+dW5pZm9ybTJpdihsb2NhdGlvbi0+
bG9jYXRpb24oKSwgZGF0YS52YWx1ZSgpKTsKIH0KIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlOjp1bmlmb3JtM2l2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwg
SW50MzJMaXN0JiYgdikKIHsKLSAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2
YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKCJ1bmlmb3JtM2l2IiwgbG9jYXRpb24sIHYsIDMsIDAs
IHYubGVuZ3RoKCkpKQorICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCiAgICAgICAg
IHJldHVybjsKLQotICAgIG1fY29udGV4dC0+dW5pZm9ybTNpdihsb2NhdGlvbi0+bG9jYXRpb24o
KSwgdi5sZW5ndGgoKSAvIDMsIHYuZGF0YSgpKTsKKyAgICBhdXRvIGRhdGEgPSB2YWxpZGF0ZVVu
aWZvcm1QYXJhbWV0ZXJzKCJ1bmlmb3JtM2l2IiwgbG9jYXRpb24sIHYsIDMpOworICAgIGlmICgh
ZGF0YSkKKyAgICAgICAgcmV0dXJuOworICAgIG1fY29udGV4dC0+dW5pZm9ybTNpdihsb2NhdGlv
bi0+bG9jYXRpb24oKSwgZGF0YS52YWx1ZSgpKTsKIH0KIAogdm9pZCBXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlOjp1bmlmb3JtNGl2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlv
biwgSW50MzJMaXN0JiYgdikKIHsKLSAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8
ICF2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKCJ1bmlmb3JtNGl2IiwgbG9jYXRpb24sIHYsIDQs
IDAsIHYubGVuZ3RoKCkpKQorICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCiAgICAg
ICAgIHJldHVybjsKLQotICAgIG1fY29udGV4dC0+dW5pZm9ybTRpdihsb2NhdGlvbi0+bG9jYXRp
b24oKSwgdi5sZW5ndGgoKSAvIDQsIHYuZGF0YSgpKTsKKyAgICBhdXRvIGRhdGEgPSB2YWxpZGF0
ZVVuaWZvcm1QYXJhbWV0ZXJzKCJ1bmlmb3JtNGl2IiwgbG9jYXRpb24sIHYsIDQpOworICAgIGlm
ICghZGF0YSkKKyAgICAgICAgcmV0dXJuOworICAgIG1fY29udGV4dC0+dW5pZm9ybTRpdihsb2Nh
dGlvbi0+bG9jYXRpb24oKSwgZGF0YS52YWx1ZSgpKTsKIH0KIAogdm9pZCBXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlOjp1bmlmb3JtTWF0cml4MmZ2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9u
KiBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBGbG9hdDMyTGlzdCYmIHYpCiB7Ci0g
ICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVVbmlmb3JtTWF0cml4
UGFyYW1ldGVycygidW5pZm9ybU1hdHJpeDJmdiIsIGxvY2F0aW9uLCB0cmFuc3Bvc2UsIHYsIDQs
IDAsIHYubGVuZ3RoKCkpKQorICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCisgICAg
ICAgIHJldHVybjsKKyAgICBhdXRvIGRhdGEgPSB2YWxpZGF0ZVVuaWZvcm1NYXRyaXhQYXJhbWV0
ZXJzKCJ1bmlmb3JtTWF0cml4MmZ2IiwgbG9jYXRpb24sIHRyYW5zcG9zZSwgdiwgNCk7CisgICAg
aWYgKCFkYXRhKQogICAgICAgICByZXR1cm47Ci0gICAgbV9jb250ZXh0LT51bmlmb3JtTWF0cml4
MmZ2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCB2Lmxlbmd0aCgpIC8gNCwgdHJhbnNwb3NlLCB2LmRh
dGEoKSk7CisgICAgbV9jb250ZXh0LT51bmlmb3JtTWF0cml4MmZ2KGxvY2F0aW9uLT5sb2NhdGlv
bigpLCB0cmFuc3Bvc2UsIGRhdGEudmFsdWUoKSk7CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6dW5pZm9ybU1hdHJpeDNmdihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiog
bG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgRmxvYXQzMkxpc3QmJiB2KQogewotICAg
IGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlVW5pZm9ybU1hdHJpeFBh
cmFtZXRlcnMoInVuaWZvcm1NYXRyaXgzZnYiLCBsb2NhdGlvbiwgdHJhbnNwb3NlLCB2LCA5LCAw
LCB2Lmxlbmd0aCgpKSkKKyAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpKQorICAgICAg
ICByZXR1cm47CisgICAgYXV0byBkYXRhID0gdmFsaWRhdGVVbmlmb3JtTWF0cml4UGFyYW1ldGVy
cygidW5pZm9ybU1hdHJpeDNmdiIsIGxvY2F0aW9uLCB0cmFuc3Bvc2UsIHYsIDkpOworICAgIGlm
ICghZGF0YSkKICAgICAgICAgcmV0dXJuOwotICAgIG1fY29udGV4dC0+dW5pZm9ybU1hdHJpeDNm
dihsb2NhdGlvbi0+bG9jYXRpb24oKSwgdi5sZW5ndGgoKSAvIDksIHRyYW5zcG9zZSwgdi5kYXRh
KCkpOworICAgIG1fY29udGV4dC0+dW5pZm9ybU1hdHJpeDNmdihsb2NhdGlvbi0+bG9jYXRpb24o
KSwgdHJhbnNwb3NlLCBkYXRhLnZhbHVlKCkpOwogfQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OnVuaWZvcm1NYXRyaXg0ZnYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxv
Y2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEZsb2F0MzJMaXN0JiYgdikKIHsKLSAgICBp
ZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVVuaWZvcm1NYXRyaXhQYXJh
bWV0ZXJzKCJ1bmlmb3JtTWF0cml4NGZ2IiwgbG9jYXRpb24sIHRyYW5zcG9zZSwgdiwgMTYsIDAs
IHYubGVuZ3RoKCkpKQorICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCisgICAgICAg
IHJldHVybjsKKyAgICBhdXRvIGRhdGEgPSB2YWxpZGF0ZVVuaWZvcm1NYXRyaXhQYXJhbWV0ZXJz
KCJ1bmlmb3JtTWF0cml4NGZ2IiwgbG9jYXRpb24sIHRyYW5zcG9zZSwgdiwgMTYpOworICAgIGlm
ICghZGF0YSkKICAgICAgICAgcmV0dXJuOwotICAgIG1fY29udGV4dC0+dW5pZm9ybU1hdHJpeDRm
dihsb2NhdGlvbi0+bG9jYXRpb24oKSwgdi5sZW5ndGgoKSAvIDE2LCB0cmFuc3Bvc2UsIHYuZGF0
YSgpKTsKKyAgICBtX2NvbnRleHQtPnVuaWZvcm1NYXRyaXg0ZnYobG9jYXRpb24tPmxvY2F0aW9u
KCksIHRyYW5zcG9zZSwgZGF0YS52YWx1ZSgpKTsKIH0KIAogdm9pZCBXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlOjp1c2VQcm9ncmFtKFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSkKQEAgLTcwNDcsNjIg
KzcwNzIsNDggQEAgYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZUNhcGFi
aWxpdHkoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBHQ0cKICAgICB9CiB9CiAKLWJvb2wgV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycyhjb25zdCBj
aGFyKiBmdW5jdGlvbk5hbWUsIGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwg
Y29uc3QgRmxvYXQzMkxpc3QmIHYsIEdDR0xzaXplaSByZXF1aXJlZE1pblNpemUsIEdDR0x1aW50
IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQotewotICAgIHJldHVybiB2YWxpZGF0ZVVu
aWZvcm1NYXRyaXhQYXJhbWV0ZXJzKGZ1bmN0aW9uTmFtZSwgbG9jYXRpb24sIGZhbHNlLCB2LmRh
dGEoKSwgdi5sZW5ndGgoKSwgcmVxdWlyZWRNaW5TaXplLCBzcmNPZmZzZXQsIHNyY0xlbmd0aCk7
Ci19Ci0KLWJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmFsaWRhdGVVbmlmb3JtUGFy
YW1ldGVycyhjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0
aW9uKiBsb2NhdGlvbiwgY29uc3QgSW50MzJMaXN0JiB2LCBHQ0dMc2l6ZWkgcmVxdWlyZWRNaW5T
aXplLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKLXsKLSAgICByZXR1
cm4gdmFsaWRhdGVVbmlmb3JtTWF0cml4UGFyYW1ldGVycyhmdW5jdGlvbk5hbWUsIGxvY2F0aW9u
LCBmYWxzZSwgdi5kYXRhKCksIHYubGVuZ3RoKCksIHJlcXVpcmVkTWluU2l6ZSwgc3JjT2Zmc2V0
LCBzcmNMZW5ndGgpOwotfQogCi1ib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlk
YXRlVW5pZm9ybVBhcmFtZXRlcnMoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBjb25zdCBXZWJH
TFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIGNvbnN0IFVpbnQzMkxpc3QmIHYsIEdDR0xzaXpl
aSByZXF1aXJlZE1pblNpemUsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3Ro
KQotewotICAgIHJldHVybiB2YWxpZGF0ZVVuaWZvcm1NYXRyaXhQYXJhbWV0ZXJzKGZ1bmN0aW9u
TmFtZSwgbG9jYXRpb24sIGZhbHNlLCB2LmRhdGEoKSwgdi5sZW5ndGgoKSwgcmVxdWlyZWRNaW5T
aXplLCBzcmNPZmZzZXQsIHNyY0xlbmd0aCk7Ci19Ci0KLWJvb2wgV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZTo6dmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycyhjb25zdCBjaGFyKiBmdW5jdGlvbk5h
bWUsIGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgdm9pZCogdiwgR0NHTHNp
emVpIHNpemUsIEdDR0xzaXplaSByZXF1aXJlZE1pblNpemUsIEdDR0x1aW50IHNyY09mZnNldCwg
R0NHTHVpbnQgc3JjTGVuZ3RoKQotewotICAgIHJldHVybiB2YWxpZGF0ZVVuaWZvcm1NYXRyaXhQ
YXJhbWV0ZXJzKGZ1bmN0aW9uTmFtZSwgbG9jYXRpb24sIGZhbHNlLCB2LCBzaXplLCByZXF1aXJl
ZE1pblNpemUsIHNyY09mZnNldCwgc3JjTGVuZ3RoKTsKLX0KLQotYm9vbCBXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlOjp2YWxpZGF0ZVVuaWZvcm1NYXRyaXhQYXJhbWV0ZXJzKGNvbnN0IGNoYXIq
IGZ1bmN0aW9uTmFtZSwgY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBHQ0dM
Ym9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEZsb2F0MzJMaXN0JiB2LCBHQ0dMc2l6ZWkgcmVxdWly
ZWRNaW5TaXplLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKLXsKLSAg
ICByZXR1cm4gdmFsaWRhdGVVbmlmb3JtTWF0cml4UGFyYW1ldGVycyhmdW5jdGlvbk5hbWUsIGxv
Y2F0aW9uLCB0cmFuc3Bvc2UsIHYuZGF0YSgpLCB2Lmxlbmd0aCgpLCByZXF1aXJlZE1pblNpemUs
IHNyY09mZnNldCwgc3JjTGVuZ3RoKTsKLX0KLQotYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlOjp2YWxpZGF0ZVVuaWZvcm1NYXRyaXhQYXJhbWV0ZXJzKGNvbnN0IGNoYXIqIGZ1bmN0aW9u
TmFtZSwgY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0
cmFuc3Bvc2UsIGNvbnN0IHZvaWQqIHYsIEdDR0xzaXplaSBzaXplLCBHQ0dMc2l6ZWkgcmVxdWly
ZWRNaW5TaXplLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKK3RlbXBs
YXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFR5cGVkTGlzdFR5cGU+CitPcHRpb25hbDxHQ0dMU3Bh
bjxjb25zdCBUPj4gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmFsaWRhdGVVbmlmb3JtTWF0
cml4UGFyYW1ldGVycyhjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIGNvbnN0IFdlYkdMVW5pZm9y
bUxvY2F0aW9uKiBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBUeXBlZExp
c3Q8VHlwZWRMaXN0VHlwZSwgVD4mIHZhbHVlcywgR0NHTHNpemVpIHJlcXVpcmVkTWluU2l6ZSwg
R0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCiB7CiAgICAgaWYgKCF2YWxp
ZGF0ZVVuaWZvcm1Mb2NhdGlvbihmdW5jdGlvbk5hbWUsIGxvY2F0aW9uKSkKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIGlmICghdikgeworICAgICAgICByZXR1cm4geyB9OworICAgIGlmICgh
dmFsdWVzLmRhdGEoKSkgewogICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRl
eHRHTDo6SU5WQUxJRF9WQUxVRSwgZnVuY3Rpb25OYW1lLCAibm8gYXJyYXkiKTsKLSAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4geyB9OwogICAgIH0KICAgICBpZiAodHJhbnNw
b3NlICYmICFpc1dlYkdMMigpKSB7CiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNz
Q29udGV4dEdMOjpJTlZBTElEX1ZBTFVFLCBmdW5jdGlvbk5hbWUsICJ0cmFuc3Bvc2Ugbm90IEZB
TFNFIik7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9
Ci0gICAgaWYgKHNyY09mZnNldCA+PSBzdGF0aWNfY2FzdDxHQ0dMdWludD4oc2l6ZSkpIHsKKyAg
ICBpZiAoc3JjT2Zmc2V0ID49IHN0YXRpY19jYXN0PEdDR0x1aW50Pih2YWx1ZXMubGVuZ3RoKCkp
KSB7CiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElE
X1ZBTFVFLCBmdW5jdGlvbk5hbWUsICJpbnZhbGlkIHNyY09mZnNldCIpOwotICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgIHJldHVybiB7IH07CiAgICAgfQotICAgIEdDR0xzaXplaSBhY3R1
YWxTaXplID0gc2l6ZSAtIHNyY09mZnNldDsKKyAgICBHQ0dMc2l6ZWkgYWN0dWFsU2l6ZSA9IHZh
bHVlcy5sZW5ndGgoKSAtIHNyY09mZnNldDsKICAgICBpZiAoc3JjTGVuZ3RoID4gMCkgewogICAg
ICAgICBpZiAoc3JjTGVuZ3RoID4gc3RhdGljX2Nhc3Q8R0NHTHVpbnQ+KGFjdHVhbFNpemUpKSB7
CiAgICAgICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJ
RF9WQUxVRSwgZnVuY3Rpb25OYW1lLCAiaW52YWxpZCBzcmNPZmZzZXQgKyBzcmNMZW5ndGgiKTsK
LSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIHJldHVybiB7IH07CiAgICAg
ICAgIH0KICAgICAgICAgYWN0dWFsU2l6ZSA9IHNyY0xlbmd0aDsKICAgICB9CiAgICAgaWYgKGFj
dHVhbFNpemUgPCByZXF1aXJlZE1pblNpemUgfHwgKGFjdHVhbFNpemUgJSByZXF1aXJlZE1pblNp
emUpKSB7CiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZB
TElEX1ZBTFVFLCBmdW5jdGlvbk5hbWUsICJpbnZhbGlkIHNpemUiKTsKLSAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICByZXR1cm4geyB9OwogICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsKKyAg
ICByZXR1cm4gbWFrZUdDR0xTcGFuKHZhbHVlcy5kYXRhKCkgKyBzcmNPZmZzZXQsIGFjdHVhbFNp
emUpOwogfQogCit0ZW1wbGF0ZQorT3B0aW9uYWw8R0NHTFNwYW48Y29uc3QgR0NHTHVpbnQ+PiBX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZVVuaWZvcm1NYXRyaXhQYXJhbWV0ZXJz
PEdDR0x1aW50LCBVaW50MzJBcnJheT4oY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBjb25zdCBX
ZWJHTFVuaWZvcm1Mb2NhdGlvbiosIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgVHlwZWRM
aXN0PFVpbnQzMkFycmF5LCB1aW50MzJfdD4mIHZhbHVlcywgR0NHTHNpemVpIHJlcXVpcmVkTWlu
U2l6ZSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpOworCit0ZW1wbGF0
ZQorT3B0aW9uYWw8R0NHTFNwYW48Y29uc3QgR0NHTGludD4+IFdlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2U6OnZhbGlkYXRlVW5pZm9ybU1hdHJpeFBhcmFtZXRlcnM8R0NHTGludCwgSW50MzJBcnJh
eT4oY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbios
IEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgVHlwZWRMaXN0PEludDMyQXJyYXksIGludDMy
X3Q+JiB2YWx1ZXMsIEdDR0xzaXplaSByZXF1aXJlZE1pblNpemUsIEdDR0x1aW50IHNyY09mZnNl
dCwgR0NHTHVpbnQgc3JjTGVuZ3RoKTsKKwordGVtcGxhdGUKK09wdGlvbmFsPEdDR0xTcGFuPGNv
bnN0IEdDR0xmbG9hdD4+IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlVW5pZm9y
bU1hdHJpeFBhcmFtZXRlcnM8R0NHTGZsb2F0LCBGbG9hdDMyQXJyYXk+KGNvbnN0IGNoYXIqIGZ1
bmN0aW9uTmFtZSwgY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qLCBHQ0dMYm9vbGVhbiB0cmFu
c3Bvc2UsIGNvbnN0IFR5cGVkTGlzdDxGbG9hdDMyQXJyYXksIGZsb2F0PiYgdmFsdWVzLCBHQ0dM
c2l6ZWkgcmVxdWlyZWRNaW5TaXplLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xl
bmd0aCk7CisKIFdlYkdMQnVmZmVyKiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0
ZUJ1ZmZlckRhdGFQYXJhbWV0ZXJzKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMZW51bSB1c2FnZSkKIHsKICAgICBXZWJHTEJ1ZmZlciogYnVmZmVyID0gdmFs
aWRhdGVCdWZmZXJEYXRhVGFyZ2V0KGZ1bmN0aW9uTmFtZSwgdGFyZ2V0KTsKQEAgLTcyNDYsMTYg
KzcyNTcsMTYgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2ZXJ0ZXhBdHRyaWJm
dkltcGwoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBHQ0cKICAgICB7CiAgICAgICAgIHN3aXRj
aCAoZXhwZWN0ZWRTaXplKSB7CiAgICAgICAgIGNhc2UgMToKLSAgICAgICAgICAgIG1fY29udGV4
dC0+dmVydGV4QXR0cmliMWZ2KGluZGV4LCBkYXRhKTsKKyAgICAgICAgICAgIG1fY29udGV4dC0+
dmVydGV4QXR0cmliMWZ2KGluZGV4LCBtYWtlR0NHTFNwYW48MT4oZGF0YSkpOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIGNhc2UgMjoKLSAgICAgICAgICAgIG1fY29udGV4dC0+dmVydGV4
QXR0cmliMmZ2KGluZGV4LCBkYXRhKTsKKyAgICAgICAgICAgIG1fY29udGV4dC0+dmVydGV4QXR0
cmliMmZ2KGluZGV4LCBtYWtlR0NHTFNwYW48Mj4oZGF0YSkpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGNhc2UgMzoKLSAgICAgICAgICAgIG1fY29udGV4dC0+dmVydGV4QXR0cmliM2Z2
KGluZGV4LCBkYXRhKTsKKyAgICAgICAgICAgIG1fY29udGV4dC0+dmVydGV4QXR0cmliM2Z2KGlu
ZGV4LCBtYWtlR0NHTFNwYW48Mz4oZGF0YSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IGNhc2UgNDoKLSAgICAgICAgICAgIG1fY29udGV4dC0+dmVydGV4QXR0cmliNGZ2KGluZGV4LCBk
YXRhKTsKKyAgICAgICAgICAgIG1fY29udGV4dC0+dmVydGV4QXR0cmliNGZ2KGluZGV4LCBtYWtl
R0NHTFNwYW48ND4oZGF0YSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9
CkBAIC03MzMwLDcgKzczNDEsNyBAQCBPcHRpb25hbDxib29sPiBXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlOjpzaW11bGF0ZVZlcnRleEF0dHJpYjAoR0NHTHVpbnQgbnVtVmVydAogCiAgICAgaWYg
KGJ1ZmZlckRhdGFTaXplID4gbV92ZXJ0ZXhBdHRyaWIwQnVmZmVyU2l6ZSkgewogICAgICAgICBt
X2NvbnRleHQtPm1vdmVFcnJvcnNUb1N5bnRoZXRpY0Vycm9yTGlzdCgpOwotICAgICAgICBtX2Nv
bnRleHQtPmJ1ZmZlckRhdGEoR3JhcGhpY3NDb250ZXh0R0w6OkFSUkFZX0JVRkZFUiwgYnVmZmVy
RGF0YVNpemUsIDAsIEdyYXBoaWNzQ29udGV4dEdMOjpEWU5BTUlDX0RSQVcpOworICAgICAgICBt
X2NvbnRleHQtPmJ1ZmZlckRhdGEoR3JhcGhpY3NDb250ZXh0R0w6OkFSUkFZX0JVRkZFUiwgYnVm
ZmVyRGF0YVNpemUsIEdyYXBoaWNzQ29udGV4dEdMOjpEWU5BTUlDX0RSQVcpOwogICAgICAgICBp
ZiAobV9jb250ZXh0LT5nZXRFcnJvcigpICE9IEdyYXBoaWNzQ29udGV4dEdMOjpOT19FUlJPUikg
ewogICAgICAgICAgICAgLy8gV2Ugd2VyZSB1bmFibGUgdG8gY3JlYXRlIGEgYnVmZmVyLgogICAg
ICAgICAgICAgbV92ZXJ0ZXhBdHRyaWIwVXNlZEJlZm9yZSA9IGZhbHNlOwpAQCAtNzM2NSw3ICs3
Mzc2LDcgQEAgT3B0aW9uYWw8Ym9vbD4gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6c2ltdWxh
dGVWZXJ0ZXhBdHRyaWIwKEdDR0x1aW50IG51bVZlcnQKICAgICAgICAgbV92ZXJ0ZXhBdHRyaWIw
QnVmZmVyVmFsdWVbMl0gPSBhdHRyaWJWYWx1ZS5mVmFsdWVbMl07CiAgICAgICAgIG1fdmVydGV4
QXR0cmliMEJ1ZmZlclZhbHVlWzNdID0gYXR0cmliVmFsdWUuZlZhbHVlWzNdOwogICAgICAgICBt
X2ZvcmNlQXR0cmliMEJ1ZmZlclJlZmlsbCA9IGZhbHNlOwotICAgICAgICBtX2NvbnRleHQtPmJ1
ZmZlclN1YkRhdGEoR3JhcGhpY3NDb250ZXh0R0w6OkFSUkFZX0JVRkZFUiwgMCwgYnVmZmVyRGF0
YVNpemUsIGJ1ZmZlckRhdGEuZ2V0KCkpOworICAgICAgICBtX2NvbnRleHQtPmJ1ZmZlclN1YkRh
dGEoR3JhcGhpY3NDb250ZXh0R0w6OkFSUkFZX0JVRkZFUiwgMCwgbWFrZUdDR0xTcGFuKGJ1ZmZl
ckRhdGEuZ2V0KCksIGJ1ZmZlckRhdGFTaXplKSk7CiAgICAgfQogICAgIG1fY29udGV4dC0+dmVy
dGV4QXR0cmliUG9pbnRlcigwLCA0LCBHcmFwaGljc0NvbnRleHRHTDo6RkxPQVQsIDAsIDAsIDAp
OwogICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oCmluZGV4IGE3MWQwMzZhYTBkZWE1MmI0NTc5
MDlmYmZmZGMzYWRmODBmNTEwY2MuLjAwNzgyOGY3ZmQ1NzNlYTUwMDU5NDBlZDU2ZTQzOTc1MTU3
NDNlNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlLmgKQEAgLTEwMDUsMTIgKzEwMDUsMTMgQEAgcHJvdGVjdGVkOgog
CiAgICAgLy8gSGVscGVyIGZ1bmN0aW9uIHRvIHZhbGlkYXRlIGlucHV0IHBhcmFtZXRlcnMgZm9y
IHVuaWZvcm0gZnVuY3Rpb25zLgogICAgIGJvb2wgdmFsaWRhdGVVbmlmb3JtTG9jYXRpb24oY29u
c3QgY2hhciogZnVuY3Rpb25OYW1lLCBjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiopOwotICAg
IGJvb2wgdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycyhjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUs
IGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiwgY29uc3QgRmxvYXQzMkxpc3QmLCBHQ0dMc2l6
ZWkgcmVxdWlyZWRNaW5TaXplLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0
aCk7Ci0gICAgYm9vbCB2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKGNvbnN0IGNoYXIqIGZ1bmN0
aW9uTmFtZSwgY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qLCBjb25zdCBJbnQzMkxpc3QmLCBH
Q0dMc2l6ZWkgcmVxdWlyZWRNaW5TaXplLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNy
Y0xlbmd0aCk7Ci0gICAgYm9vbCB2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKGNvbnN0IGNoYXIq
IGZ1bmN0aW9uTmFtZSwgY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qLCBjb25zdCBVaW50MzJM
aXN0JiwgR0NHTHNpemVpIHJlcXVpcmVkTWluU2l6ZSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dM
dWludCBzcmNMZW5ndGgpOwotICAgIGJvb2wgdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycyhjb25z
dCBjaGFyKiBmdW5jdGlvbk5hbWUsIGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiwgdm9pZCos
IEdDR0xzaXplaSwgR0NHTHNpemVpIHJlcXVpcmVkTWluU2l6ZSwgR0NHTHVpbnQgc3JjT2Zmc2V0
LCBHQ0dMdWludCBzcmNMZW5ndGgpOwotICAgIGJvb2wgdmFsaWRhdGVVbmlmb3JtTWF0cml4UGFy
YW1ldGVycyhjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0
aW9uKiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBGbG9hdDMyTGlzdCYsIEdDR0xzaXpl
aSByZXF1aXJlZE1pblNpemUsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3Ro
KTsKLSAgICBib29sIHZhbGlkYXRlVW5pZm9ybU1hdHJpeFBhcmFtZXRlcnMoY29uc3QgY2hhciog
ZnVuY3Rpb25OYW1lLCBjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiosIEdDR0xib29sZWFuIHRy
YW5zcG9zZSwgY29uc3Qgdm9pZCosIEdDR0xzaXplaSwgR0NHTHNpemVpIHJlcXVpcmVkTWluU2l6
ZSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpOworICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFQsIHR5cGVuYW1lIFR5cGVkTGlzdFR5cGU+CisgICAgT3B0aW9uYWw8R0NHTFNw
YW48Y29uc3QgVD4+IHZhbGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMoY29uc3QgY2hhciogZnVuY3Rp
b25OYW1lLCBjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIGNvbnN0IFR5cGVk
TGlzdDxUeXBlZExpc3RUeXBlLCBUPiYgdmFsdWVzLCBHQ0dMc2l6ZWkgcmVxdWlyZWRNaW5TaXpl
LCBHQ0dMdWludCBzcmNPZmZzZXQgPSAwLCBHQ0dMdWludCBzcmNMZW5ndGggPSAwKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIHZhbGlkYXRlVW5pZm9ybU1hdHJpeFBhcmFtZXRlcnMoZnVuY3Rpb25O
YW1lLCBsb2NhdGlvbiwgZmFsc2UsIHZhbHVlcywgcmVxdWlyZWRNaW5TaXplLCBzcmNPZmZzZXQs
IHNyY0xlbmd0aCk7CisgICAgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFR5
cGVkTGlzdFR5cGU+CisgICAgT3B0aW9uYWw8R0NHTFNwYW48Y29uc3QgVD4+IHZhbGlkYXRlVW5p
Zm9ybU1hdHJpeFBhcmFtZXRlcnMoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBjb25zdCBXZWJH
TFVuaWZvcm1Mb2NhdGlvbiosIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgVHlwZWRMaXN0
PFR5cGVkTGlzdFR5cGUsIFQ+JiwgR0NHTHNpemVpIHJlcXVpcmVkTWluU2l6ZSwgR0NHTHVpbnQg
c3JjT2Zmc2V0ID0gMCwgR0NHTHVpbnQgc3JjTGVuZ3RoID0gMCk7CiAKICAgICAvLyBIZWxwZXIg
ZnVuY3Rpb24gdG8gdmFsaWRhdGUgcGFyYW1ldGVycyBmb3IgYnVmZmVyRGF0YS4KICAgICAvLyBS
ZXR1cm4gdGhlIGN1cnJlbnQgYm91bmQgYnVmZmVyIHRvIHRhcmdldCwgb3IgMCBpZiBwYXJhbWV0
ZXJzIGFyZSBpbnZhbGlkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRXh0ZW5zaW9uc0dMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9F
eHRlbnNpb25zR0wuaAppbmRleCBiYTg2NWIzMzA4ZTZjOTQ1ODIyMTIyMzc3OTZkNmZkNTc3NDg0
N2Y4Li5kMTdiYWRiMWUzMWQ2ZDU2NDBiODcyOTZjZTU5ZDI4MzMyODM1ZmIwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNpb25zR0wuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNpb25zR0wuaApAQCAtMjk4LDcg
KzI5OCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcG9wR3JvdXBNYXJrZXJFWFQodm9p
ZCkgPSAwOwogCiAgICAgLy8gR0xfQVJCX2RyYXdfYnVmZmVycyAvIEdMX0VYVF9kcmF3X2J1ZmZl
cnMKLSAgICB2aXJ0dWFsIHZvaWQgZHJhd0J1ZmZlcnNFWFQoR0NHTHNpemVpIG4sIGNvbnN0IEdD
R0xlbnVtKiBidWZzKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRyYXdCdWZmZXJzRVhUKEdDR0xT
cGFuPGNvbnN0IEdDR0xlbnVtPiBidWZzKSA9IDA7CiAKICAgICAvLyBHTF9BTkdMRV9pbnN0YW5j
ZWRfYXJyYXlzCiAgICAgdmlydHVhbCB2b2lkIGRyYXdBcnJheXNJbnN0YW5jZWQoR0NHTGVudW0g
bW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHNpemVpIGNvdW50LCBHQ0dMc2l6ZWkgcHJpbWNvdW50
KSA9IDA7CkBAIC0zMDcsMTcgKzMwNyw5IEBAIHB1YmxpYzoKIAogICAgIC8vIEdMX0FOR0xFX3Jv
YnVzdF9jbGllbnRfbWVtb3J5CiAgICAgdmlydHVhbCB2b2lkIHJlYWRQaXhlbHNSb2J1c3RBTkdM
RShHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0
LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dM
c2l6ZWkqIGxlbmd0aCwgR0NHTHNpemVpKiBjb2x1bW5zLCBHQ0dMc2l6ZWkqIHJvd3MsIEdDR0x2
b2lkKiBwaXhlbHMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdGV4SW1hZ2UyRFJvYnVzdEFOR0xF
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCBpbnRlcm5hbGZvcm1hdCwg
R0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTGVu
dW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTHZv
aWQqIHBpeGVscykgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB0ZXhQYXJhbWV0ZXJmdlJvYnVzdEFO
R0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBj
b25zdCBHQ0dMZmxvYXQqIHBhcmFtcykgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB0ZXhQYXJhbWV0
ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXpl
aSBidWZTaXplLCBjb25zdCBHQ0dMaW50KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQg
dGV4U3ViSW1hZ2UyRFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwg
R0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNp
emVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgY29uc3QgR0NHTHZvaWQqIHBpeGVscykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBjb21w
cmVzc2VkVGV4SW1hZ2UyRFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZl
bCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhl
aWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xzaXplaSBidWZT
aXplLCBjb25zdCBHQ0dMdm9pZCogZGF0YSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBjb21wcmVz
c2VkVGV4U3ViSW1hZ2UyRFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZl
bCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NH
THNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTHZvaWQqIGRhdGEpID0gMDsKLSAgICB2aXJ0dWFsIHZv
aWQgY29tcHJlc3NlZFRleEltYWdlM0RSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xp
bnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xz
aXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGludCBib3JkZXIsIEdDR0xzaXplaSBp
bWFnZVNpemUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMdm9pZCogZGF0YSkgPSAwOwot
ICAgIHZpcnR1YWwgdm9pZCBjb21wcmVzc2VkVGV4U3ViSW1hZ2UzRFJvYnVzdEFOR0xFKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZz
ZXQsIEdDR0xpbnQgem9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBH
Q0dMc2l6ZWkgZGVwdGgsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NH
THNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0x2b2lkKiBkYXRhKSA9IDA7Ci0KLSAgICB2aXJ0dWFs
IHZvaWQgdGV4SW1hZ2UzRFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZl
bCwgR0NHTGludCBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVp
Z2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdD
R0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMdm9pZCogcGl4ZWxzKSA9
IDA7Ci0gICAgdmlydHVhbCB2b2lkIHRleFN1YkltYWdlM0RSb2J1c3RBTkdMRShHQ0dMZW51bSB0
YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBH
Q0dMaW50IHpvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNp
emVpIGRlcHRoLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZT
aXplLCBjb25zdCBHQ0dMdm9pZCogcGl4ZWxzKSA9IDA7CisKICAgICB2aXJ0dWFsIHZvaWQgZ2V0
UXVlcnlpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIGdldFF1ZXJ5T2JqZWN0dWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQs
IEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdD
R0x1aW50KiBwYXJhbXMpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0QnVmZmVyUG9pbnRlcnZS
b2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x2b2lkKiogcGFyYW1zKSA9IDA7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaApp
bmRleCAwYTcxNTQwY2U4MDIwZmQ5ZjU4MTY4NjAzZjY3NjliOTQ0NTIyNDE1Li5jNThiZThhOTdk
MjM3ZGFiMmM2MGQ4NmIxOTM4NGFlOTJmZmJlYjNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmgKQEAgLTEwNjMsNDkgKzEw
NjMsNTUgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB0ZXhQYXJhbWV0ZXJpKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQgcGFyYW0pID0gMDsKIAogICAgIHZpcnR1
YWwgdm9pZCB1bmlmb3JtMWYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGZsb2F0IHgpID0gMDsKLSAg
ICB2aXJ0dWFsIHZvaWQgdW5pZm9ybTFmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWksIGNv
bnN0IEdDR0xmbG9hdCogdikgPSAwOworICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtMWZ2KEdDR0xp
bnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gdikgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCB1bmlmb3JtMWkoR0NHTGludCBsb2NhdGlvbiwgR0NHTGludCB4KSA9IDA7Ci0gICAg
dmlydHVhbCB2b2lkIHVuaWZvcm0xaXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpLCBjb25z
dCBHQ0dMaW50KiB2KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVuaWZvcm0xaXYoR0NHTGludCBs
b2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gdikgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCB1bmlmb3JtMmYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGZsb2F0IHgsIEdDR0xmbG9hdCB5KSA9
IDA7Ci0gICAgdmlydHVhbCB2b2lkIHVuaWZvcm0yZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTHNp
emVpLCBjb25zdCBHQ0dMZmxvYXQqIHYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybTJm
dihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IHYpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgdW5pZm9ybTJpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xpbnQgeCwgR0NH
TGludCB5KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHVuaWZvcm0yaXYoR0NHTGludCBsb2NhdGlv
biwgR0NHTHNpemVpLCBjb25zdCBHQ0dMaW50KiB2KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVu
aWZvcm0yaXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gdikgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtM2YoR0NHTGludCBsb2NhdGlvbiwgR0NHTGZsb2F0
IHgsIEdDR0xmbG9hdCB5LCBHQ0dMZmxvYXQgeikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB1bmlm
b3JtM2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSwgY29uc3QgR0NHTGZsb2F0KiB2KSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIHVuaWZvcm0zZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNw
YW48Y29uc3QgR0NHTGZsb2F0PiB2KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHVuaWZvcm0zaShH
Q0dMaW50IGxvY2F0aW9uLCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTGludCB6KSA9IDA7Ci0g
ICAgdmlydHVhbCB2b2lkIHVuaWZvcm0zaXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpLCBj
b25zdCBHQ0dMaW50KiB2KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVuaWZvcm0zaXYoR0NHTGlu
dCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gdikgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCB1bmlmb3JtNGYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGZsb2F0IHgsIEdDR0xmbG9hdCB5
LCBHQ0dMZmxvYXQgeiwgR0NHTGZsb2F0IHcpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdW5pZm9y
bTRmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWksIGNvbnN0IEdDR0xmbG9hdCogdikgPSAw
OworICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtNGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFu
PGNvbnN0IEdDR0xmbG9hdD4gdikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtNGkoR0NH
TGludCBsb2NhdGlvbiwgR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xpbnQgeiwgR0NHTGludCB3
KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHVuaWZvcm00aXYoR0NHTGludCBsb2NhdGlvbiwgR0NH
THNpemVpLCBjb25zdCBHQ0dMaW50KiB2KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHVuaWZvcm1N
YXRyaXgyZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpLCBHQ0dMYm9vbGVhbiB0cmFuc3Bv
c2UsIGNvbnN0IEdDR0xmbG9hdCogdmFsdWUpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdW5pZm9y
bU1hdHJpeDNmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWksIEdDR0xib29sZWFuIHRyYW5z
cG9zZSwgY29uc3QgR0NHTGZsb2F0KiB2YWx1ZSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB1bmlm
b3JtTWF0cml4NGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSwgR0NHTGJvb2xlYW4gdHJh
bnNwb3NlLCBjb25zdCBHQ0dMZmxvYXQqIHZhbHVlKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVu
aWZvcm00aXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gdikgPSAw
OworICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtTWF0cml4MmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdD
R0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiB2YWx1ZSkgPSAw
OworICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtTWF0cml4M2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdD
R0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiB2YWx1ZSkgPSAw
OworICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtTWF0cml4NGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdD
R0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiB2YWx1ZSkgPSAw
OwogCiAgICAgdmlydHVhbCB2b2lkIHVzZVByb2dyYW0oUGxhdGZvcm1HTE9iamVjdCkgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCB2YWxpZGF0ZVByb2dyYW0oUGxhdGZvcm1HTE9iamVjdCkgPSAwOwog
CiAgICAgdmlydHVhbCB2b2lkIHZlcnRleEF0dHJpYjFmKEdDR0x1aW50IGluZGV4LCBHQ0dMZmxv
YXQgeCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB2ZXJ0ZXhBdHRyaWIxZnYoR0NHTHVpbnQgaW5k
ZXgsIGNvbnN0IEdDR0xmbG9hdCogdmFsdWVzKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHZlcnRl
eEF0dHJpYjFmdihHQ0dMdWludCBpbmRleCwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0LCAxPiB2
YWx1ZXMpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdmVydGV4QXR0cmliMmYoR0NHTHVpbnQgaW5k
ZXgsIEdDR0xmbG9hdCB4LCBHQ0dMZmxvYXQgeSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB2ZXJ0
ZXhBdHRyaWIyZnYoR0NHTHVpbnQgaW5kZXgsIGNvbnN0IEdDR0xmbG9hdCogdmFsdWVzKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIHZlcnRleEF0dHJpYjJmdihHQ0dMdWludCBpbmRleCwgR0NHTFNw
YW48Y29uc3QgR0NHTGZsb2F0LCAyPiB2YWx1ZXMpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdmVy
dGV4QXR0cmliM2YoR0NHTHVpbnQgaW5kZXgsIEdDR0xmbG9hdCB4LCBHQ0dMZmxvYXQgeSwgR0NH
TGZsb2F0IHopID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdmVydGV4QXR0cmliM2Z2KEdDR0x1aW50
IGluZGV4LCBjb25zdCBHQ0dMZmxvYXQqIHZhbHVlcykgPSAwOworICAgIHZpcnR1YWwgdm9pZCB2
ZXJ0ZXhBdHRyaWIzZnYoR0NHTHVpbnQgaW5kZXgsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdCwg
Mz4gdmFsdWVzKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHZlcnRleEF0dHJpYjRmKEdDR0x1aW50
IGluZGV4LCBHQ0dMZmxvYXQgeCwgR0NHTGZsb2F0IHksIEdDR0xmbG9hdCB6LCBHQ0dMZmxvYXQg
dykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB2ZXJ0ZXhBdHRyaWI0ZnYoR0NHTHVpbnQgaW5kZXgs
IGNvbnN0IEdDR0xmbG9hdCogdmFsdWVzKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHZlcnRleEF0
dHJpYjRmdihHQ0dMdWludCBpbmRleCwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0LCA0PiB2YWx1
ZXMpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCB2ZXJ0ZXhBdHRyaWJQb2ludGVyKEdDR0x1aW50
IGluZGV4LCBHQ0dMaW50IHNpemUsIEdDR0xlbnVtIHR5cGUsIEdDR0xib29sZWFuIG5vcm1hbGl6
ZWQsIEdDR0xzaXplaSBzdHJpZGUsIEdDR0xpbnRwdHIgb2Zmc2V0KSA9IDA7CiAKICAgICB2aXJ0
dWFsIHZvaWQgdmlld3BvcnQoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwg
R0NHTHNpemVpIGhlaWdodCkgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIGJ1ZmZlckRhdGEoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWlwdHIsIEdDR0xlbnVtIHVzYWdlKSA9IDA7Ci0gICAgdmly
dHVhbCB2b2lkIGJ1ZmZlckRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWlwdHIsIGNvbnN0
IEdDR0x2b2lkKiBkYXRhLCBHQ0dMZW51bSB1c2FnZSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBi
dWZmZXJTdWJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludHB0ciBvZmZzZXQsIEdDR0xzaXpl
aXB0ciwgY29uc3QgR0NHTHZvaWQqIGRhdGEpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgYnVmZmVy
RGF0YShHQ0dMZW51bSB0YXJnZXQsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRhLCBHQ0dM
ZW51bSB1c2FnZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBidWZmZXJTdWJEYXRhKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGludHB0ciBvZmZzZXQsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRh
KSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgcmVhZFBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQg
eSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdD
R0xlbnVtIHR5cGUsIEdDR0x2b2lkKiBkYXRhKSA9IDA7CiAKLSAgICB2aXJ0dWFsIGJvb2wgdGV4
SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFs
Zm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVy
LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIGNvbnN0IEdDR0x2b2lkKiBwaXhlbHMp
ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdD
R0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkg
d2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwg
Y29uc3QgR0NHTHZvaWQqIHBpeGVscykgPSAwOworICAgIHZpcnR1YWwgdm9pZCB0ZXhJbWFnZTJE
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQs
IEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xl
bnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBwaXhl
bHMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdD
R0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdD
R0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVt
IHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHRleFN1Yklt
YWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdD
R0xpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51
bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBwaXhlbHMp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdD
R0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkg
d2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwg
R0NHTGludHB0ciBvZmZzZXQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY29tcHJlc3NlZFRleElt
YWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZv
cm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwg
R0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgY29tcHJlc3NlZFRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBH
Q0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NH
TGludHB0ciBvZmZzZXQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY29tcHJlc3NlZFRleFN1Yklt
YWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdD
R0xpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51
bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBk
YXRhKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZz
ZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBH
Q0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMaW50cHRyIG9mZnNldCkgPSAwOwogCiAgICAgdmlydHVh
bCB2b2lkIGRyYXdBcnJheXNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwg
R0NHTHNpemVpIGNvdW50LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIGRyYXdFbGVtZW50c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQs
IEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSA9
IDA7CkBAIC0xMTI1LDggKzExMzEsOCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgYmxp
dEZyYW1lYnVmZmVyKEdDR0xpbnQgc3JjWDAsIEdDR0xpbnQgc3JjWTAsIEdDR0xpbnQgc3JjWDEs
IEdDR0xpbnQgc3JjWTEsIEdDR0xpbnQgZHN0WDAsIEdDR0xpbnQgZHN0WTAsIEdDR0xpbnQgZHN0
WDEsIEdDR0xpbnQgZHN0WTEsIEdDR0xiaXRmaWVsZCBtYXNrLCBHQ0dMZW51bSBmaWx0ZXIpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgZnJhbWVidWZmZXJUZXh0dXJlTGF5ZXIoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMZW51bSBhdHRhY2htZW50LCBQbGF0Zm9ybUdMT2JqZWN0IHRleHR1cmUsIEdDR0xp
bnQgbGV2ZWwsIEdDR0xpbnQgbGF5ZXIpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0
ZUZyYW1lYnVmZmVyKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpIG51bUF0dGFjaG1lbnRzLCBj
b25zdCBHQ0dMZW51bSogYXR0YWNobWVudHMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgaW52YWxp
ZGF0ZVN1YkZyYW1lYnVmZmVyKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpIG51bUF0dGFjaG1l
bnRzLCBjb25zdCBHQ0dMZW51bSogYXR0YWNobWVudHMsIEdDR0xpbnQgeCwgR0NHTGludCB5LCBH
Q0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
aW52YWxpZGF0ZUZyYW1lYnVmZmVyKEdDR0xlbnVtIHRhcmdldCwgR0NHTFNwYW48Y29uc3QgR0NH
TGVudW0+IGF0dGFjaG1lbnRzKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGVTdWJG
cmFtZWJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQsIEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVtPiBhdHRh
Y2htZW50cywgR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVp
IGhlaWdodCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCByZWFkQnVmZmVyKEdDR0xlbnVtIHNyYykg
PSAwOwogCiAgICAgLy8gZ2V0SW50ZXJuYWxGb3JtYXRQYXJhbWV0ZXIKQEAgLTExMzYsMTEgKzEx
NDIsMTUgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB0ZXhTdG9yYWdlMkQoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMc2l6ZWkgbGV2ZWxzLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNp
emVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHRleFN0
b3JhZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaSBsZXZlbHMsIEdDR0xlbnVtIGludGVy
bmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBk
ZXB0aCkgPSAwOwogCi0gICAgLy8gdGV4e1N1Yn1JbWFnZTNEIGFyZSBzdXBwb3J0ZWQgb25seSB2
aWEgQU5HTEVfcm9idXN0X2NsaWVudF9tZW1vcnkuCi0KKyAgICB2aXJ0dWFsIHZvaWQgdGV4SW1h
Z2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgaW50ZXJuYWxmb3Jt
YXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBH
Q0dMaW50IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bhbjxj
b25zdCBHQ0dMdm9pZD4gcGl4ZWxzKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHRleEltYWdlM0Qo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IGludGVybmFsZm9ybWF0LCBH
Q0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGlu
dCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZz
ZXQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdGV4U3ViSW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQs
IEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMaW50
IHpvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRl
cHRoLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2
b2lkPiBwaXhlbHMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdGV4U3ViSW1hZ2UzRChHQ0dMZW51
bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0
LCBHQ0dMaW50IHpvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NH
THNpemVpIGRlcHRoLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIg
b2Zmc2V0KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGNvcHlUZXhTdWJJbWFnZTNEKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQs
IEdDR0xpbnQgem9mZnNldCwgR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwg
R0NHTHNpemVpIGhlaWdodCkgPSAwOwotCi0gICAgLy8gY29tcHJlc3NlZFRleHtTdWJ9SW1hZ2Uz
RCBhcmUgc3VwcG9ydGVkIG9ubHkgdmlhIEFOR0xFX3JvYnVzdF9jbGllbnRfbWVtb3J5LgorICAg
IHZpcnR1YWwgdm9pZCBjb21wcmVzc2VkVGV4SW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xp
bnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xz
aXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGludCBib3JkZXIsIEdDR0xzaXplaSBp
bWFnZVNpemUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRhKSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIGNvbXByZXNzZWRUZXhJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZl
bCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhl
aWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMaW50IGJvcmRlciwgR0NHTHNpemVpIGltYWdlU2l6
ZSwgR0NHTGludHB0ciBvZmZzZXQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY29tcHJlc3NlZFRl
eFN1YkltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZz
ZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTGludCB6b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdD
R0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMc2l6
ZWkgaW1hZ2VTaXplLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gZGF0YSkgPSAwOworICAgIHZp
cnR1YWwgdm9pZCBjb21wcmVzc2VkVGV4U3ViSW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xp
bnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMaW50IHpvZmZz
ZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBH
Q0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xpbnRwdHIgb2Zmc2V0KSA9
IDA7CiAKICAgICB2aXJ0dWFsIEdDR0xpbnQgZ2V0RnJhZ0RhdGFMb2NhdGlvbihQbGF0Zm9ybUdM
T2JqZWN0IHByb2dyYW0sIGNvbnN0IFN0cmluZyYgbmFtZSkgPSAwOwogCkBAIC0xMTQ4LDI4ICsx
MTU4LDI4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybTJ1aShHQ0dMaW50IGxv
Y2F0aW9uLCBHQ0dMdWludCB2MCwgR0NHTHVpbnQgdjEpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
dW5pZm9ybTN1aShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMdWludCB2MCwgR0NHTHVpbnQgdjEsIEdD
R0x1aW50IHYyKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHVuaWZvcm00dWkoR0NHTGludCBsb2Nh
dGlvbiwgR0NHTHVpbnQgdjAsIEdDR0x1aW50IHYxLCBHQ0dMdWludCB2MiwgR0NHTHVpbnQgdjMp
ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybTF1aXYoR0NHTGludCBsb2NhdGlvbiwgY29u
c3QgR0NHTHVpbnQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3Ro
KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHVuaWZvcm0ydWl2KEdDR0xpbnQgbG9jYXRpb24sIGNv
bnN0IEdDR0x1aW50KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0
aCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtM3VpdihHQ0dMaW50IGxvY2F0aW9uLCBj
b25zdCBHQ0dMdWludCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5n
dGgpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybTR1aXYoR0NHTGludCBsb2NhdGlvbiwg
Y29uc3QgR0NHTHVpbnQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVu
Z3RoKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHVuaWZvcm1NYXRyaXgyeDNmdihHQ0dMaW50IGxv
Y2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NH
THVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpID0gMDsKLSAgICB2aXJ0dWFsIHZv
aWQgdW5pZm9ybU1hdHJpeDN4MmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5z
cG9zZSwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50
IHNyY0xlbmd0aCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtTWF0cml4Mng0ZnYoR0NH
TGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHQ0dMZmxvYXQqIGRh
dGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKSA9IDA7Ci0gICAgdmly
dHVhbCB2b2lkIHVuaWZvcm1NYXRyaXg0eDJmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVh
biB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBH
Q0dMdWludCBzcmNMZW5ndGgpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybU1hdHJpeDN4
NGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZs
b2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkgPSAwOwot
ICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtTWF0cml4NHgzZnYoR0NHTGludCBsb2NhdGlvbiwgR0NH
TGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNyY09m
ZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVuaWZvcm0x
dWl2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0x1aW50PiBkYXRhKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIHVuaWZvcm0ydWl2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFu
PGNvbnN0IEdDR0x1aW50PiBkYXRhKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVuaWZvcm0zdWl2
KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0x1aW50PiBkYXRhKSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIHVuaWZvcm00dWl2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNv
bnN0IEdDR0x1aW50PiBkYXRhKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVuaWZvcm1NYXRyaXgy
eDNmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNv
bnN0IEdDR0xmbG9hdD4gZGF0YSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtTWF0cml4
M3gyZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxj
b25zdCBHQ0dMZmxvYXQ+IGRhdGEpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybU1hdHJp
eDJ4NGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48
Y29uc3QgR0NHTGZsb2F0PiBkYXRhKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVuaWZvcm1NYXRy
aXg0eDJmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFu
PGNvbnN0IEdDR0xmbG9hdD4gZGF0YSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtTWF0
cml4M3g0ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bh
bjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybU1h
dHJpeDR4M2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNw
YW48Y29uc3QgR0NHTGZsb2F0PiBkYXRhKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHZlcnRleEF0
dHJpYkk0aShHQ0dMdWludCBpbmRleCwgR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xpbnQgeiwg
R0NHTGludCB3KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHZlcnRleEF0dHJpYkk0aXYoR0NHTHVp
bnQgaW5kZXgsIGNvbnN0IEdDR0xpbnQqIHZhbHVlcykgPSAwOworICAgIHZpcnR1YWwgdm9pZCB2
ZXJ0ZXhBdHRyaWJJNGl2KEdDR0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50LCA0
PiB2YWx1ZXMpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdmVydGV4QXR0cmliSTR1aShHQ0dMdWlu
dCBpbmRleCwgR0NHTHVpbnQgeCwgR0NHTHVpbnQgeSwgR0NHTHVpbnQgeiwgR0NHTHVpbnQgdykg
PSAwOwotICAgIHZpcnR1YWwgdm9pZCB2ZXJ0ZXhBdHRyaWJJNHVpdihHQ0dMdWludCBpbmRleCwg
Y29uc3QgR0NHTHVpbnQqIHZhbHVlcykgPSAwOworICAgIHZpcnR1YWwgdm9pZCB2ZXJ0ZXhBdHRy
aWJJNHVpdihHQ0dMdWludCBpbmRleCwgR0NHTFNwYW48Y29uc3QgR0NHTHVpbnQsIDQ+IHZhbHVl
cykgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB2ZXJ0ZXhBdHRyaWJJUG9pbnRlcihHQ0dMdWludCBp
bmRleCwgR0NHTGludCBzaXplLCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgc3RyaWRlLCBHQ0dM
aW50cHRyIG9mZnNldCkgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIGRyYXdSYW5nZUVsZW1lbnRz
KEdDR0xlbnVtIG1vZGUsIEdDR0x1aW50IHN0YXJ0LCBHQ0dMdWludCBlbmQsIEdDR0xzaXplaSBj
b3VudCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpID0gMDsKIAotICAgIHZpcnR1
YWwgdm9pZCBkcmF3QnVmZmVycyhHQ0dMc2l6ZWkgbiwgY29uc3QgR0NHTGVudW0qIGJ1ZnMpID0g
MDsKLSAgICB2aXJ0dWFsIHZvaWQgY2xlYXJCdWZmZXJpdihHQ0dMZW51bSBidWZmZXIsIEdDR0xp
bnQgZHJhd2J1ZmZlciwgY29uc3QgR0NHTGludCogdmFsdWVzLCBHQ0dMdWludCBzcmNPZmZzZXQp
ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgY2xlYXJCdWZmZXJ1aXYoR0NHTGVudW0gYnVmZmVyLCBH
Q0dMaW50IGRyYXdidWZmZXIsIGNvbnN0IEdDR0x1aW50KiB2YWx1ZXMsIEdDR0x1aW50IHNyY09m
ZnNldCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBjbGVhckJ1ZmZlcmZ2KEdDR0xlbnVtIGJ1ZmZl
ciwgR0NHTGludCBkcmF3YnVmZmVyLCBjb25zdCBHQ0dMZmxvYXQqIHZhbHVlcywgR0NHTHVpbnQg
c3JjT2Zmc2V0KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRyYXdCdWZmZXJzKEdDR0xTcGFuPGNv
bnN0IEdDR0xlbnVtPiBidWZzKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNsZWFyQnVmZmVyaXYo
R0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50IGRyYXdidWZmZXIsIEdDR0xTcGFuPGNvbnN0IEdDR0xp
bnQ+IHZhbHVlcykgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjbGVhckJ1ZmZlcnVpdihHQ0dMZW51
bSBidWZmZXIsIEdDR0xpbnQgZHJhd2J1ZmZlciwgR0NHTFNwYW48Y29uc3QgR0NHTHVpbnQ+IHZh
bHVlcykgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjbGVhckJ1ZmZlcmZ2KEdDR0xlbnVtIGJ1ZmZl
ciwgR0NHTGludCBkcmF3YnVmZmVyLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IHZhbHVlcykg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBjbGVhckJ1ZmZlcmZpKEdDR0xlbnVtIGJ1ZmZlciwgR0NH
TGludCBkcmF3YnVmZmVyLCBHQ0dMZmxvYXQgZGVwdGgsIEdDR0xpbnQgc3RlbmNpbCkgPSAwOwog
CiAgICAgdmlydHVhbCBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZVF1ZXJ5KCkgPSAwOwpAQCAtMTIy
MSwyMCArMTIzMSw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFN0cmluZyBnZXRBY3RpdmVVbmlm
b3JtQmxvY2tOYW1lKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTHVpbnQgdW5pZm9ybUJs
b2NrSW5kZXgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybUJsb2NrQmluZGluZyhQbGF0
Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1aW50IHVuaWZvcm1CbG9ja0luZGV4LCBHQ0dMdWlu
dCB1bmlmb3JtQmxvY2tCaW5kaW5nKSA9IDA7CiAKLSAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybTFm
dihHQ0dMaW50IGxvY2F0aW9uLCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNyY09m
ZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHVuaWZvcm0y
ZnYoR0NHTGludCBsb2NhdGlvbiwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNP
ZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB1bmlmb3Jt
M2Z2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3Jj
T2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdW5pZm9y
bTRmdihHQ0dMaW50IGxvY2F0aW9uLCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNy
Y09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKSA9IDA7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgdW5p
Zm9ybTFpdihHQ0dMaW50IGxvY2F0aW9uLCBjb25zdCBHQ0dMaW50KiBkYXRhLCBHQ0dMdWludCBz
cmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB1bmlm
b3JtMml2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0xpbnQqIGRhdGEsIEdDR0x1aW50IHNy
Y09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHVuaWZv
cm0zaXYoR0NHTGludCBsb2NhdGlvbiwgY29uc3QgR0NHTGludCogZGF0YSwgR0NHTHVpbnQgc3Jj
T2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdW5pZm9y
bTRpdihHQ0dMaW50IGxvY2F0aW9uLCBjb25zdCBHQ0dMaW50KiBkYXRhLCBHQ0dMdWludCBzcmNP
ZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkgPSAwOwotCi0gICAgdmlydHVhbCB2b2lkIHVuaWZv
cm1NYXRyaXgyZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25z
dCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3Ro
KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHVuaWZvcm1NYXRyaXgzZnYoR0NHTGludCBsb2NhdGlv
biwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50
IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHVu
aWZvcm1NYXRyaXg0ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBj
b25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVu
Z3RoKSA9IDA7Ci0KICAgICB2aXJ0dWFsIHZvaWQgZ2V0QWN0aXZlVW5pZm9ybUJsb2NraXYoR0NH
THVpbnQgcHJvZ3JhbSwgR0NHTHVpbnQgdW5pZm9ybUJsb2NrSW5kZXgsIEdDR0xlbnVtIHBuYW1l
LCBHQ0dMU3BhbjxHQ0dMaW50PiBwYXJhbXMpID0gMDsKIAogICAgIC8vIE90aGVyIGZ1bmN0aW9u
cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
VHlwZXNHTC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBl
c0dMLmgKaW5kZXggZTdjNjliMjhkY2U0NjU4MjU3NTc3MzMzMjViOGY0NGRmMjcyMDdiOS4uOTg1
ZmI3OTQ1MTM0NTA4OTNkODIwZDZlOTU1NTNkMmEzZjg5ZDE0ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlc0dMLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlc0dMLmgKQEAgLTY4LDYgKzY4
LDEwIEBAIHN0cnVjdCBHQ0dMU3BhbiB7CiAgICAgR0NHTFNwYW4oVCAoJmFycmF5KVtFeHRlbnRd
KQogICAgICAgICA6IGRhdGEoYXJyYXkpCiAgICAgeyB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUg
VT4KKyAgICBHQ0dMU3Bhbihjb25zdCBHQ0dMU3BhbjxVLCBFeHRlbnQ+JiBvdGhlciwgc3RkOjpl
bmFibGVfaWZfdDxzdGQ6OmlzX2NvbnZlcnRpYmxlX3Y8VSgqKVtdLCBUKCopW10+LCBudWxscHRy
X3Q+ID0gbnVsbHB0cikKKyAgICAgICAgOiBkYXRhKG90aGVyLmRhdGEpCisgICAgeyB9CiAgICAg
VCYgb3BlcmF0b3JbXShzaXplX3QgaSkgeyBSRUxFQVNFX0FTU0VSVChkYXRhICYmIGkgPCBidWZT
aXplKTsgcmV0dXJuIGRhdGFbaV07IH0KICAgICBUJiBvcGVyYXRvciooKSB7IFJFTEVBU0VfQVNT
RVJUKGRhdGEgJiYgYnVmU2l6ZSk7IHJldHVybiAqZGF0YTsgfQogICAgIFQqIGRhdGE7CkBAIC04
MCwxMSArODQsMTggQEAgc3RydWN0IEdDR0xTcGFuPFQsIHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6
ZV90Pjo6bWF4KCk+IHsKICAgICAgICAgOiBkYXRhKGFycmF5KQogICAgICAgICAsIGJ1ZlNpemUo
YnVmU2l6ZV8pCiAgICAgeyB9Ci0gICAgdGVtcGxhdGU8c2l6ZV90IFN6PiBHQ0dMU3BhbihUICgm
YXJyYXkpW1N6XSkKKyAgICB0ZW1wbGF0ZTxzaXplX3QgU3o+CisgICAgR0NHTFNwYW4oVCAoJmFy
cmF5KVtTel0pCiAgICAgICAgIDogZGF0YShhcnJheSkKICAgICAgICAgLCBidWZTaXplKFN6KQog
ICAgIHsgfQotICAgIEdDR0xTcGFuKFdURjo6VmVjdG9yPFQ+JiBhcnJheSkKKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBVLCBzaXplX3QgVUV4dGVudD4KKyAgICBHQ0dMU3Bhbihjb25zdCBHQ0dMU3Bh
bjxVLCBVRXh0ZW50PiYgb3RoZXIsIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19jb252ZXJ0aWJs
ZV92PFUoKilbXSwgVCgqKVtdPiwgbnVsbHB0cl90PiA9IG51bGxwdHIpCisgICAgICAgIDogZGF0
YShvdGhlci5kYXRhKQorICAgICAgICAsIGJ1ZlNpemUob3RoZXIuYnVmU2l6ZSkKKyAgICB7IH0K
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVLCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+CisgICAgR0NH
TFNwYW4oV1RGOjpWZWN0b3I8VSwgaW5saW5lQ2FwYWNpdHk+JiBhcnJheSwgc3RkOjplbmFibGVf
aWZfdDxzdGQ6OmlzX2NvbnZlcnRpYmxlX3Y8VSgqKVtdLCBUKCopW10+LCBudWxscHRyX3Q+ID0g
bnVsbHB0cikKICAgICAgICAgOiBkYXRhKGFycmF5LmRhdGEoKSkKICAgICAgICAgLCBidWZTaXpl
KGFycmF5LnNpemUoKSkKICAgICB7IH0KQEAgLTk0LDYgKzEwNSw1MCBAQCBzdHJ1Y3QgR0NHTFNw
YW48VCwgc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKT4gewogICAgIGNvbnN0IHNp
emVfdCBidWZTaXplOwogfTsKIAordGVtcGxhdGU8Pgorc3RydWN0IEdDR0xTcGFuPEdDR0x2b2lk
PiB7CisgICAgR0NHTFNwYW4oR0NHTHZvaWQqIGFycmF5LCBzaXplX3QgYnVmU2l6ZV8pCisgICAg
ICAgIDogZGF0YShhcnJheSkKKyAgICAgICAgLCBidWZTaXplKGJ1ZlNpemVfKQorICAgIHsgfQor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUsIHNpemVfdCBTej4KKyAgICBHQ0dMU3BhbihVICgmYXJy
YXkpW1N6XSkKKyAgICAgICAgOiBkYXRhKGFycmF5KQorICAgICAgICAsIGJ1ZlNpemUoU3ogKiBz
aXplb2YoVSkpCisgICAgeyB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVSwgc2l6ZV90IFVFeHRl
bnQ+CisgICAgR0NHTFNwYW4oY29uc3QgR0NHTFNwYW48VSwgVUV4dGVudD4mIG90aGVyKQorICAg
ICAgICA6IGRhdGEob3RoZXIuZGF0YSkKKyAgICAgICAgLCBidWZTaXplKG90aGVyLmJ1ZlNpemUg
KiBzaXplb2YoVSkpCisgICAgeyB9CisgICAgR0NHTHZvaWQqIGRhdGE7CisgICAgY29uc3Qgc2l6
ZV90IGJ1ZlNpemU7Cit9OworCit0ZW1wbGF0ZTw+CitzdHJ1Y3QgR0NHTFNwYW48Y29uc3QgR0NH
THZvaWQ+IHsKKyAgICBHQ0dMU3Bhbihjb25zdCBHQ0dMdm9pZCogYXJyYXksIHNpemVfdCBidWZT
aXplXykKKyAgICAgICAgOiBkYXRhKGFycmF5KQorICAgICAgICAsIGJ1ZlNpemUoYnVmU2l6ZV8p
CisgICAgeyB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVSwgc2l6ZV90IFN6PgorICAgIEdDR0xT
cGFuKFUgKCZhcnJheSlbU3pdKQorICAgICAgICA6IGRhdGEoYXJyYXkpCisgICAgICAgICwgYnVm
U2l6ZShTeiAqIHNpemVvZihVKSkKKyAgICB7IH0KKyAgICBHQ0dMU3Bhbihjb25zdCBHQ0dMU3Bh
bjxHQ0dMdm9pZD4mIG90aGVyKQorICAgICAgICA6IGRhdGEob3RoZXIuZGF0YSkKKyAgICAgICAg
LCBidWZTaXplKG90aGVyLmJ1ZlNpemUpCisgICAgeyB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUg
VSwgc2l6ZV90IFVFeHRlbnQ+CisgICAgR0NHTFNwYW4oY29uc3QgR0NHTFNwYW48VSwgVUV4dGVu
dD4mIG90aGVyKQorICAgICAgICA6IGRhdGEob3RoZXIuZGF0YSkKKyAgICAgICAgLCBidWZTaXpl
KG90aGVyLmJ1ZlNpemUgKiBzaXplb2YoVSkpCisgICAgeyB9CisgICAgY29uc3QgR0NHTHZvaWQq
IGRhdGE7CisgICAgY29uc3Qgc2l6ZV90IGJ1ZlNpemU7Cit9OworCiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBULCBzaXplX3QgTj4KIEdDR0xTcGFuKFQgKCYpW05dKSAtPiBHQ0dMU3BhbjxULCBOPjsKIApA
QCAtMTA1LDMgKzE2MCw5IEBAIEdDR0xTcGFuPFQ+IG1ha2VHQ0dMU3BhbihUKiBkYXRhLCBzaXpl
X3QgY291bnQpCiB7CiAgICAgcmV0dXJuIEdDR0xTcGFuPFQ+IHsgZGF0YSwgY291bnQgfTsKIH0K
KwordGVtcGxhdGU8c2l6ZV90IEV4dGVudCwgdHlwZW5hbWUgVD4KK0dDR0xTcGFuPFQsIEV4dGVu
dD4gbWFrZUdDR0xTcGFuKFQqIGRhdGEpCit7CisgICAgcmV0dXJuIEdDR0xTcGFuPFQsIEV4dGVu
dD4geyBkYXRhIH07Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5jcHAKaW5kZXggNGQwMjViOTkzNDIy
Nzc2YjliNWY0YWFiYzM5YTBjNzg5MTk0MGE5OS4uMjgzZGE4MmM2YTYwMmVhNGI1NTdjNjg2Y2Zk
ODIzZDA4MWM1NWU0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmNwcApAQCAtMjI3LDEyICsyMjcs
MTIgQEAgYm9vbCBFeHRlbnNpb25zR0xBTkdMRTo6c3VwcG9ydHNFeHRlbnNpb24oY29uc3QgU3Ry
aW5nJiBuYW1lKQogICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMobmFt
ZSkgfHwgbV9yZXF1ZXN0YWJsZUV4dGVuc2lvbnMuY29udGFpbnMobmFtZSk7CiB9CiAKLXZvaWQg
RXh0ZW5zaW9uc0dMQU5HTEU6OmRyYXdCdWZmZXJzRVhUKEdDR0xzaXplaSBuLCBjb25zdCBHQ0dM
ZW51bSogYnVmcykKK3ZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmRyYXdCdWZmZXJzRVhUKEdDR0xT
cGFuPGNvbnN0IEdDR0xlbnVtPiBidWZzKQogewogICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29u
dGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZ2w6OkRyYXdCdWZmZXJzRVhU
KG4sIGJ1ZnMpOworICAgIGdsOjpEcmF3QnVmZmVyc0VYVChidWZzLmJ1ZlNpemUsIGJ1ZnMuZGF0
YSk7CiB9CiAKIHZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmRyYXdBcnJheXNJbnN0YW5jZWQoR0NH
TGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHNpemVpIGNvdW50LCBHQ0dMc2l6ZWkgcHJp
bWNvdW50KQpAQCAtMjg2LDE2ICsyODYsNiBAQCB2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpyZWFk
UGl4ZWxzUm9idXN0QU5HTEUoaW50IHgsIGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDRwogICAg
IGdsOjpSZWFkUGl4ZWxzUm9idXN0QU5HTEUoeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0
eXBlLCBidWZTaXplLCBsZW5ndGgsIGNvbHVtbnMsIHJvd3MsIHBpeGVscyk7CiB9CiAKLXZvaWQg
RXh0ZW5zaW9uc0dMQU5HTEU6OnRleEltYWdlMkRSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQs
IGludCBsZXZlbCwgaW50IGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXpl
aSBoZWlnaHQsIGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NH
THNpemVpIGJ1ZlNpemUsIGNvbnN0IHZvaWQgKnBpeGVscykKLXsKLSAgICBpZiAoIW1fY29udGV4
dC0+bV9pc0ZvcldlYkdMMikKLSAgICAgICAgaW50ZXJuYWxmb3JtYXQgPSBhZGp1c3RXZWJHTDFU
ZXh0dXJlSW50ZXJuYWxGb3JtYXQoaW50ZXJuYWxmb3JtYXQsIGZvcm1hdCwgdHlwZSk7Ci0gICAg
aWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBnbDo6VGV4SW1hZ2UyRFJvYnVzdEFOR0xFKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9y
bWF0LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIsIGZvcm1hdCwgdHlwZSwgYnVmU2l6ZSwgcGl4ZWxz
KTsKLX0KLQogdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6dGV4UGFyYW1ldGVyZnZSb2J1c3RBTkdM
RShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29u
c3QgR0NHTGZsb2F0ICpwYXJhbXMpCiB7CiAgICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0
Q3VycmVudCgpKQpAQCAtMzEyLDY2ICszMDIsNiBAQCB2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjp0
ZXhQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbQog
ICAgIGdsOjpUZXhQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKHRhcmdldCwgcG5hbWUsIGJ1ZlNpemUs
IHBhcmFtcyk7CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OnRleFN1YkltYWdlMkRSb2J1
c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIGludCBsZXZlbCwgaW50IHhvZmZzZXQsIGludCB5b2Zm
c2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwg
R0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IHZvaWQgKnBpeGVscykKLXsK
LSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIGdsOjpUZXhTdWJJbWFnZTJEUm9idXN0QU5HTEUodGFyZ2V0LCBsZXZlbCwgeG9m
ZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBidWZTaXplLCBwaXhl
bHMpOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpjb21wcmVzc2VkVGV4SW1hZ2UyRFJv
YnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZv
cm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBpbnQgYm9yZGVyLCBHQ0dM
c2l6ZWkgaW1hZ2VTaXplLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3Qgdm9pZCogZGF0YSkKLXsK
LSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIGdsOjpDb21wcmVzc2VkVGV4SW1hZ2UyRFJvYnVzdEFOR0xFKHRhcmdldCwgbGV2
ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIsIGltYWdlU2l6ZSwgYnVm
U2l6ZSwgZGF0YSk7Ci0gICAgbV9jb250ZXh0LT5tX3N0YXRlLnRleHR1cmVTZWVkQ291bnQuYWRk
KG1fY29udGV4dC0+bV9zdGF0ZS5jdXJyZW50Qm91bmRUZXh0dXJlKCkpOwotCi19Ci0KLXZvaWQg
RXh0ZW5zaW9uc0dMQU5HTEU6OmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEUm9idXN0QU5HTEUoR0NH
TGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWwsIGludCB4b2Zmc2V0LCBpbnQgeW9mZnNldCwgR0NHTHNp
emVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBp
bWFnZVNpemUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCB2b2lkKiBkYXRhKQotewotICAgIGlm
ICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgZ2w6OkNvbXByZXNzZWRUZXhTdWJJbWFnZTJEUm9idXN0QU5HTEUodGFyZ2V0LCBsZXZlbCwg
eG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCBpbWFnZVNpemUsIGJ1ZlNp
emUsIGRhdGEpOwotICAgIG1fY29udGV4dC0+bV9zdGF0ZS50ZXh0dXJlU2VlZENvdW50LmFkZCht
X2NvbnRleHQtPm1fc3RhdGUuY3VycmVudEJvdW5kVGV4dHVyZSgpKTsKLX0KLQotdm9pZCBFeHRl
bnNpb25zR0xBTkdMRTo6Y29tcHJlc3NlZFRleEltYWdlM0RSb2J1c3RBTkdMRShHQ0dMZW51bSB0
YXJnZXQsIGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0
aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBpbnQgYm9yZGVyLCBHQ0dMc2l6
ZWkgaW1hZ2VTaXplLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3Qgdm9pZCogZGF0YSkKLXsKLSAg
ICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsK
LQotICAgIGdsOjpDb21wcmVzc2VkVGV4SW1hZ2UzRFJvYnVzdEFOR0xFKHRhcmdldCwgbGV2ZWws
IGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgYm9yZGVyLCBpbWFnZVNpemUs
IGJ1ZlNpemUsIGRhdGEpOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpjb21wcmVzc2Vk
VGV4U3ViSW1hZ2UzRFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgaW50IGxldmVsLCBpbnQg
eG9mZnNldCwgaW50IHlvZmZzZXQsIGludCB6b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xz
aXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMc2l6ZWkg
aW1hZ2VTaXplLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3Qgdm9pZCogZGF0YSkKLXsKLSAgICBp
ZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIGdsOjpDb21wcmVzc2VkVGV4U3ViSW1hZ2UzRFJvYnVzdEFOR0xFKHRhcmdldCwgbGV2ZWws
IHhvZmZzZXQsIHlvZmZzZXQsIHpvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBmb3JtYXQs
IGltYWdlU2l6ZSwgYnVmU2l6ZSwgZGF0YSk7Ci19Ci0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdM
RTo6dGV4SW1hZ2UzRFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgaW50IGxldmVsLCBpbnQg
aW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNp
emVpIGRlcHRoLCBpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdD
R0xzaXplaSBidWZTaXplLCBjb25zdCB2b2lkICpwaXhlbHMpCi17Ci0gICAgaWYgKCFtX2NvbnRl
eHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6VGV4
SW1hZ2UzRFJvYnVzdEFOR0xFKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwg
aGVpZ2h0LCBkZXB0aCwgYm9yZGVyLCBmb3JtYXQsIHR5cGUsIGJ1ZlNpemUsIHBpeGVscyk7Ci19
Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OnRleFN1YkltYWdlM0RSb2J1c3RBTkdMRShHQ0dM
ZW51bSB0YXJnZXQsIGludCBsZXZlbCwgaW50IHhvZmZzZXQsIGludCB5b2Zmc2V0LCBpbnQgem9m
ZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgs
IEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0
IHZvaWQgKnBpeGVscykKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50
KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpUZXhTdWJJbWFnZTNEUm9idXN0QU5HTEUo
dGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgem9mZnNldCwgd2lkdGgsIGhlaWdodCwg
ZGVwdGgsIGZvcm1hdCwgdHlwZSwgYnVmU2l6ZSwgcGl4ZWxzKTsKLX0KLQogdm9pZCBFeHRlbnNp
b25zR0xBTkdMRTo6Z2V0UXVlcnlpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVu
dW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAq
cGFyYW1zKQogewogICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lv
bnNHTEFOR0xFLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRl
bnNpb25zR0xBTkdMRS5oCmluZGV4IDU3YmI5M2JjODRjMzM1OTBmYmNmNGIzZjdhMWViNWE1NWM1
OTI1NmMuLmE3NzMxZGZkMjBjNWYwM2EzMzU5MDNmYWE2ZTM4ZmY3MmY0YjIzMjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFO
R0xFLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5z
aW9uc0dMQU5HTEUuaApAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBpbnNlcnRF
dmVudE1hcmtlckVYVChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKICAgICB2b2lkIHB1c2hHcm91
cE1hcmtlckVYVChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKICAgICB2b2lkIHBvcEdyb3VwTWFy
a2VyRVhUKHZvaWQpIG92ZXJyaWRlOwotICAgIHZvaWQgZHJhd0J1ZmZlcnNFWFQoR0NHTHNpemVp
LCBjb25zdCBHQ0dMZW51bSopIG92ZXJyaWRlOworICAgIHZvaWQgZHJhd0J1ZmZlcnNFWFQoR0NH
TFNwYW48Y29uc3QgR0NHTGVudW0+KSBvdmVycmlkZTsKIAogICAgIFN0cmluZyBnZXRUcmFuc2xh
dGVkU2hhZGVyU291cmNlQU5HTEUoUGxhdGZvcm1HTE9iamVjdCkgb3ZlcnJpZGU7CiAKQEAgLTc0
LDE3ICs3NCw4IEBAIHB1YmxpYzoKIAogICAgIC8vIEdMX0FOR0xFX3JvYnVzdF9jbGllbnRfbWVt
b3J5CiAgICAgdm9pZCByZWFkUGl4ZWxzUm9idXN0QU5HTEUoR0NHTGludCB4LCBHQ0dMaW50IHks
IEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dM
ZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xzaXpl
aSAqY29sdW1ucywgR0NHTHNpemVpICpyb3dzLCB2b2lkICpwaXhlbHMpIG92ZXJyaWRlOwotICAg
IHZvaWQgdGV4SW1hZ2UyRFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZl
bCwgR0NHTGludCBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVp
Z2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgY29uc3Qgdm9pZCAqcGl4ZWxzKSBvdmVycmlkZTsKICAgICB2b2lkIHRl
eFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwg
R0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xmbG9hdCAqcGFyYW1zKSBvdmVycmlkZTsKICAg
ICB2b2lkIHRleFBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51
bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCB0ZXhTdWJJbWFnZTJEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTHNpemVp
IHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUs
IEdDR0xzaXplaSBidWZTaXplLCBjb25zdCB2b2lkICpwaXhlbHMpIG92ZXJyaWRlOwotICAgIHZv
aWQgY29tcHJlc3NlZFRleEltYWdlMkRSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xp
bnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xz
aXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTHZvaWQqIGRhdGEpIG92ZXJyaWRlOwotICAgIHZvaWQgY29t
cHJlc3NlZFRleFN1YkltYWdlMkRSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQg
bGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgs
IEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTHNpemVpIGltYWdlU2l6ZSwg
R0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0x2b2lkKiBkYXRhKSBvdmVycmlkZTsKLSAgICB2
b2lkIGNvbXByZXNzZWRUZXhJbWFnZTNEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
aW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dM
c2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMc2l6ZWkg
aW1hZ2VTaXplLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTHZvaWQqIGRhdGEpIG92ZXJy
aWRlOwotICAgIHZvaWQgY29tcHJlc3NlZFRleFN1YkltYWdlM0RSb2J1c3RBTkdMRShHQ0dMZW51
bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0
LCBHQ0dMaW50IHpvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NH
THNpemVpIGRlcHRoLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xz
aXplaSBidWZTaXplLCBjb25zdCBHQ0dMdm9pZCogZGF0YSkgb3ZlcnJpZGU7Ci0KLSAgICB2b2lk
IHRleEltYWdlM0RSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdD
R0xpbnQgaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwg
R0NHTHNpemVpIGRlcHRoLCBHQ0dMaW50IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51
bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3Qgdm9pZCAqcGl4ZWxzKSBvdmVycmlkZTsK
LSAgICB2b2lkIHRleFN1YkltYWdlM0RSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xp
bnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMaW50IHpvZmZz
ZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBH
Q0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCB2
b2lkICpwaXhlbHMpIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0UXVlcnlpdlJvYnVzdEFOR0xFKEdD
R0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6
ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKICAgICB2b2lkIGdldFF1ZXJ5
T2JqZWN0dWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMpIG92ZXJyaWRl
OwogICAgIHZvaWQgZ2V0QnVmZmVyUG9pbnRlcnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQs
IEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIHZv
aWQgKipwYXJhbXMpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcApp
bmRleCBmZWIwYmViZWYzMTVmMGUxMzhiYTk5ZDYyZWI2Y2ZjZWQ1MTkzNjdhLi4xMjdhM2I4ZGJh
M2MzZjQ0Y2Q3NjVkZDhmYzcxMWNkZDg3OGRlOWE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRH
TEFOR0xFLmNwcApAQCAtMzYyLDE1ICszNjIsNjIgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6Z2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0KEdDR0xlbnVtIHNoYWRlclR5cGUsIEdDR0wK
ICAgICBnbDo6R2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0KHNoYWRlclR5cGUsIHByZWNpc2lvblR5
cGUsIHJhbmdlLmRhdGEsIHByZWNpc2lvbik7CiB9CiAKLWJvb2wgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OnRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51
bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dM
aW50IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBjb25zdCB2b2lkKiBw
aXhlbHMpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp0ZXhJbWFnZTJEKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXpl
aSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1h
dCwgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IHBpeGVscykKIHsKLSAg
ICBpZiAod2lkdGggJiYgaGVpZ2h0ICYmICFwaXhlbHMpIHsKLSAgICAgICAgc3ludGhlc2l6ZUdM
RXJyb3IoSU5WQUxJRF9WQUxVRSk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIW1f
aXNGb3JXZWJHTDIpCisgICAgICAgIGludGVybmFsZm9ybWF0ID0gc3RhdGljX2Nhc3Q8RXh0ZW5z
aW9uc0dMQU5HTEUmPihnZXRFeHRlbnNpb25zKCkpLmFkanVzdFdlYkdMMVRleHR1cmVJbnRlcm5h
bEZvcm1hdChpbnRlcm5hbGZvcm1hdCwgZm9ybWF0LCB0eXBlKTsKKyAgICBpZiAoIW1ha2VDb250
ZXh0Q3VycmVudCgpKQorICAgICAgICByZXR1cm47CisgICAgZ2w6OlRleEltYWdlMkRSb2J1c3RB
TkdMRSh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgYm9yZGVy
LCBmb3JtYXQsIHR5cGUsIHBpeGVscy5idWZTaXplLCBwaXhlbHMuZGF0YSk7CisgICAgbV9zdGF0
ZS50ZXh0dXJlU2VlZENvdW50LmFkZChtX3N0YXRlLmN1cnJlbnRCb3VuZFRleHR1cmUoKSk7CiAg
ICAgfQogCi0gICAgdGV4SW1hZ2UyRERpcmVjdCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1h
dCwgd2lkdGgsIGhlaWdodCwgYm9yZGVyLCBmb3JtYXQsIHR5cGUsIHBpeGVscyk7Ci0gICAgcmV0
dXJuIHRydWU7Cit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp0ZXhJbWFnZTJEKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xz
aXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xlbnVtIGZv
cm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpCit7CisgICAgdGV4SW1hZ2Uy
RCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgYm9yZGVyLCBm
b3JtYXQsIHR5cGUsIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0x2b2lk
Kj4ob2Zmc2V0KSwgMCkpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp0ZXhT
dWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2ZmLCBH
Q0dMaW50IHlvZmYsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0g
Zm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gcGl4ZWxzKQor
eworICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCisgICAgICAgIHJldHVybjsKKworICAg
IC8vIEZJWE1FOiB3ZSB3aWxsIG5lZWQgdG8gZGVhbCB3aXRoIFBpeGVsU3RvcmUgcGFyYW1zIHdo
ZW4gZGVhbGluZyB3aXRoIGltYWdlIGJ1ZmZlcnMgdGhhdCBkaWZmZXIgZnJvbSB0aGUgc3ViaW1h
Z2Ugc2l6ZS4KKyAgICBnbDo6VGV4U3ViSW1hZ2UyRFJvYnVzdEFOR0xFKHRhcmdldCwgbGV2ZWws
IHhvZmYsIHlvZmYsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgcGl4ZWxzLmJ1ZlNpemUs
IHBpeGVscy5kYXRhKTsKKyAgICBtX3N0YXRlLnRleHR1cmVTZWVkQ291bnQuYWRkKG1fc3RhdGUu
Y3VycmVudEJvdW5kVGV4dHVyZSgpKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6dGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQg
eG9mZiwgR0NHTGludCB5b2ZmLCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdD
R0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpCit7CisgICAg
dGV4U3ViSW1hZ2UyRCh0YXJnZXQsIGxldmVsLCB4b2ZmLCB5b2ZmLCB3aWR0aCwgaGVpZ2h0LCBm
b3JtYXQsIHR5cGUsIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0x2b2lk
Kj4ob2Zmc2V0KSwgMCkpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjb21w
cmVzc2VkVGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIGludCBsZXZlbCwgR0NHTGVudW0gaW50
ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgaW50IGJvcmRl
ciwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEpCit7
CisgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
Z2w6OkNvbXByZXNzZWRUZXhJbWFnZTJEUm9idXN0QU5HTEUodGFyZ2V0LCBsZXZlbCwgaW50ZXJu
YWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGJvcmRlciwgaW1hZ2VTaXplLCBkYXRhLmJ1ZlNpemUs
IGRhdGEuZGF0YSk7CisgICAgbV9zdGF0ZS50ZXh0dXJlU2VlZENvdW50LmFkZChtX3N0YXRlLmN1
cnJlbnRCb3VuZFRleHR1cmUoKSk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OmNvbXByZXNzZWRUZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgaW50IGxldmVsLCBHQ0dMZW51
bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBpbnQg
Ym9yZGVyLCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMaW50cHRyIG9mZnNldCkKK3sKKyAgICBj
b21wcmVzc2VkVGV4SW1hZ2UyRCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgs
IGhlaWdodCwgYm9yZGVyLCBpbWFnZVNpemUsIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0
PGNvbnN0IEdDR0x2b2lkKj4ob2Zmc2V0KSwgMCkpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIGludCBs
ZXZlbCwgaW50IHhvZmZzZXQsIGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXpl
aSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTFNwYW48
Y29uc3QgR0NHTHZvaWQ+IGRhdGEpCit7CisgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgZ2w6OkNvbXByZXNzZWRUZXhTdWJJbWFnZTJEUm9idXN0
QU5HTEUodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdodCwgZm9y
bWF0LCBpbWFnZVNpemUsIGRhdGEuYnVmU2l6ZSwgZGF0YS5kYXRhKTsKKyAgICBtX3N0YXRlLnRl
eHR1cmVTZWVkQ291bnQuYWRkKG1fc3RhdGUuY3VycmVudEJvdW5kVGV4dHVyZSgpKTsKK30KKwor
dm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y29tcHJlc3NlZFRleFN1YkltYWdlMkQoR0NH
TGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWwsIGludCB4b2Zmc2V0LCBpbnQgeW9mZnNldCwgR0NHTHNp
emVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBp
bWFnZVNpemUsIEdDR0xpbnRwdHIgb2Zmc2V0KQoreworICAgIGNvbXByZXNzZWRUZXhTdWJJbWFn
ZTJEKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGZvcm1h
dCwgaW1hZ2VTaXplLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMdm9p
ZCo+KG9mZnNldCksIDApKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6ZGVw
dGhSYW5nZShHQ0dMY2xhbXBmIHpOZWFyLCBHQ0dMY2xhbXBmIHpGYXIpCkBAIC04MzUsMjAgKzg4
MiwyMCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpidWZmZXJEYXRhKEdDR0xlbnVt
IHRhcmdldCwgR0NHTHNpemVpcHRyIHNpemUsIEdDRwogICAgIGdsOjpCdWZmZXJEYXRhKHRhcmdl
dCwgc2l6ZSwgMCwgdXNhZ2UpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpi
dWZmZXJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpcHRyIHNpemUsIGNvbnN0IHZvaWQq
IGRhdGEsIEdDR0xlbnVtIHVzYWdlKQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6YnVm
ZmVyRGF0YShHQ0dMZW51bSB0YXJnZXQsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRhLCBH
Q0dMZW51bSB1c2FnZSkKIHsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBnbDo6QnVmZmVyRGF0YSh0YXJnZXQsIHNpemUsIGRhdGEsIHVzYWdl
KTsKKyAgICBnbDo6QnVmZmVyRGF0YSh0YXJnZXQsIGRhdGEuYnVmU2l6ZSwgZGF0YS5kYXRhLCB1
c2FnZSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmJ1ZmZlclN1YkRhdGEo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50cHRyIG9mZnNldCwgR0NHTHNpemVpcHRyIHNpemUsIGNv
bnN0IHZvaWQqIGRhdGEpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpidWZmZXJTdWJE
YXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludHB0ciBvZmZzZXQsIEdDR0xTcGFuPGNvbnN0IEdD
R0x2b2lkPiBkYXRhKQogewogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIGdsOjpCdWZmZXJTdWJEYXRhKHRhcmdldCwgb2Zmc2V0LCBzaXplLCBk
YXRhKTsKKyAgICBnbDo6QnVmZmVyU3ViRGF0YSh0YXJnZXQsIG9mZnNldCwgZGF0YS5idWZTaXpl
LCBkYXRhLmRhdGEpOwogfQogCiB2b2lkKiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6bWFwQnVm
ZmVyUmFuZ2UoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50cHRyIG9mZnNldCwgR0NHTHNpemVpcHRy
IGxlbmd0aCwgR0NHTGJpdGZpZWxkIGFjY2VzcykKQEAgLTkwOSw2ICs5NTYsNTggQEAgdm9pZCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dGV4U3RvcmFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NH
THNpemVpIGxldmVscywgR0MKICAgICBtX3N0YXRlLnRleHR1cmVTZWVkQ291bnQuYWRkKG1fc3Rh
dGUuY3VycmVudEJvdW5kVGV4dHVyZSgpKTsKIH0KIAordm9pZCBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6dGV4SW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIGludCBsZXZlbCwgaW50IGludGVybmFs
Zm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0
aCwgaW50IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bhbjxj
b25zdCBHQ0dMdm9pZD4gcGl4ZWxzKQoreworICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkp
CisgICAgICAgIHJldHVybjsKKworICAgIGdsOjpUZXhJbWFnZTNEUm9idXN0QU5HTEUodGFyZ2V0
LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBib3JkZXIsIGZv
cm1hdCwgdHlwZSwgcGl4ZWxzLmJ1ZlNpemUsIHBpeGVscy5kYXRhKTsKK30KKwordm9pZCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6dGV4SW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIGludCBsZXZl
bCwgaW50IGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQs
IEdDR0xzaXplaSBkZXB0aCwgaW50IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0
eXBlLCBHQ0dMaW50cHRyIG9mZnNldCkKK3sKKyAgICB0ZXhJbWFnZTNEKHRhcmdldCwgbGV2ZWws
IGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgYm9yZGVyLCBmb3JtYXQsIHR5
cGUsIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0x2b2lkKj4ob2Zmc2V0
KSwgMCkpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp0ZXhTdWJJbWFnZTNE
KEdDR0xlbnVtIHRhcmdldCwgaW50IGxldmVsLCBpbnQgeG9mZnNldCwgaW50IHlvZmZzZXQsIGlu
dCB6b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBk
ZXB0aCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dM
dm9pZD4gcGl4ZWxzKQoreworICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCisgICAgICAg
IHJldHVybjsKKworICAgIGdsOjpUZXhTdWJJbWFnZTNEUm9idXN0QU5HTEUodGFyZ2V0LCBsZXZl
bCwgeG9mZnNldCwgeW9mZnNldCwgem9mZnNldCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGZvcm1h
dCwgdHlwZSwgcGl4ZWxzLmJ1ZlNpemUsIHBpeGVscy5kYXRhKTsKK30KKwordm9pZCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6dGV4U3ViSW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIGludCBsZXZl
bCwgaW50IHhvZmZzZXQsIGludCB5b2Zmc2V0LCBpbnQgem9mZnNldCwgR0NHTHNpemVpIHdpZHRo
LCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xlbnVtIGZvcm1hdCwgR0NH
TGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpCit7CisgICAgdGV4U3ViSW1hZ2UzRCh0YXJn
ZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB6b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0
aCwgZm9ybWF0LCB0eXBlLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dM
dm9pZCo+KG9mZnNldCksIDApKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
Y29tcHJlc3NlZFRleEltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWwsIEdDR0xlbnVt
IGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xz
aXplaSBkZXB0aCwgaW50IGJvcmRlciwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTFNwYW48Y29u
c3QgR0NHTHZvaWQ+IGRhdGEpCit7CisgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgZ2w6OkNvbXByZXNzZWRUZXhJbWFnZTNEUm9idXN0QU5HTEUo
dGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBib3Jk
ZXIsIGltYWdlU2l6ZSwgZGF0YS5idWZTaXplLCBkYXRhLmRhdGEpOworfQorCit2b2lkIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpjb21wcmVzc2VkVGV4SW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQs
IGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NH
THNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBpbnQgYm9yZGVyLCBHQ0dMc2l6ZWkgaW1h
Z2VTaXplLCBHQ0dMaW50cHRyIG9mZnNldCkKK3sKKyAgICBjb21wcmVzc2VkVGV4SW1hZ2UzRCh0
YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGJvcmRl
ciwgaW1hZ2VTaXplLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMdm9p
ZCo+KG9mZnNldCksIDApKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y29t
cHJlc3NlZFRleFN1YkltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWwsIGludCB4b2Zm
c2V0LCBpbnQgeW9mZnNldCwgaW50IHpvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVp
IGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFn
ZVNpemUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRhKQoreworICAgIGlmICghbWFrZUNv
bnRleHRDdXJyZW50KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGdsOjpDb21wcmVzc2VkVGV4
U3ViSW1hZ2UzRFJvYnVzdEFOR0xFKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHpv
ZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBmb3JtYXQsIGltYWdlU2l6ZSwgZGF0YS5idWZT
aXplLCBkYXRhLmRhdGEpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjb21w
cmVzc2VkVGV4U3ViSW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIGludCBsZXZlbCwgaW50IHhvZmZz
ZXQsIGludCB5b2Zmc2V0LCBpbnQgem9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkg
aGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTHNpemVpIGltYWdl
U2l6ZSwgR0NHTGludHB0ciBvZmZzZXQpCit7CisgICAgY29tcHJlc3NlZFRleFN1YkltYWdlM0Qo
dGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgem9mZnNldCwgd2lkdGgsIGhlaWdodCwg
ZGVwdGgsIGZvcm1hdCwgaW1hZ2VTaXplLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxj
b25zdCBHQ0dMdm9pZCo+KG9mZnNldCksIDApKTsKK30KKwogdm9pZCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6Z2V0QWN0aXZlVW5pZm9ybXMoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBjb25z
dCBWZWN0b3I8R0NHTHVpbnQ+JiB1bmlmb3JtSW5kaWNlcywgR0NHTGVudW0gcG5hbWUsIFZlY3Rv
cjxHQ0dMaW50PiYgcGFyYW1zKQogewogICAgIEFTU0VSVChwcm9ncmFtKTsKQEAgLTE1MDEsMTIg
KzE2MDAsMTIgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTFmKEdDR0xp
bnQgbG9jYXRpb24sIEdDR0xmbG9hdCB2MCkKICAgICBnbDo6VW5pZm9ybTFmKGxvY2F0aW9uLCB2
MCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0xZnYoR0NHTGlu
dCBsb2NhdGlvbiwgR0NHTHNpemVpIHNpemUsIGNvbnN0IEdDR0xmbG9hdCogYXJyYXkpCit2b2lk
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMWZ2KEdDR0xpbnQgbG9jYXRpb24sIEdD
R0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gYXJyYXkpCiB7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1
cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZ2w6OlVuaWZvcm0xZnYobG9jYXRpb24s
IHNpemUsIGFycmF5KTsKKyAgICBnbDo6VW5pZm9ybTFmdihsb2NhdGlvbiwgYXJyYXkuYnVmU2l6
ZSwgYXJyYXkuZGF0YSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZv
cm0yZihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMZmxvYXQgdjAsIEdDR0xmbG9hdCB2MSkKQEAgLTE1
MTcsMTMgKzE2MTYsMTMgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTJm
KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xmbG9hdCB2MCwgR0NHTGZsb2EKICAgICBnbDo6VW5pZm9y
bTJmKGxvY2F0aW9uLCB2MCwgdjEpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
Ojp1bmlmb3JtMmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBzaXplLCBjb25zdCBHQ0dM
ZmxvYXQqIGFycmF5KQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTJmdihH
Q0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGFycmF5KQogewotICAg
IC8vIEZJWE1FOiBsZW5ndGggbmVlZHMgdG8gYmUgYSBtdWx0aXBsZSBvZiAyLgorICAgIEFTU0VS
VCghKGFycmF5LmJ1ZlNpemUgJSAyKSk7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgZ2w6OlVuaWZvcm0yZnYobG9jYXRpb24sIHNpemUsIGFy
cmF5KTsKKyAgICBnbDo6VW5pZm9ybTJmdihsb2NhdGlvbiwgYXJyYXkuYnVmU2l6ZSAvIDIsIGFy
cmF5LmRhdGEpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtM2Yo
R0NHTGludCBsb2NhdGlvbiwgR0NHTGZsb2F0IHYwLCBHQ0dMZmxvYXQgdjEsIEdDR0xmbG9hdCB2
MikKQEAgLTE1MzQsMTMgKzE2MzMsMTMgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
dW5pZm9ybTNmKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xmbG9hdCB2MCwgR0NHTGZsb2EKICAgICBn
bDo6VW5pZm9ybTNmKGxvY2F0aW9uLCB2MCwgdjEsIHYyKTsKIH0KIAotdm9pZCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6dW5pZm9ybTNmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgc2l6
ZSwgY29uc3QgR0NHTGZsb2F0KiBhcnJheSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OnVuaWZvcm0zZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiBh
cnJheSkKIHsKLSAgICAvLyBGSVhNRTogbGVuZ3RoIG5lZWRzIHRvIGJlIGEgbXVsdGlwbGUgb2Yg
My4KKyAgICBBU1NFUlQoIShhcnJheS5idWZTaXplICUgMykpOwogICAgIGlmICghbWFrZUNvbnRl
eHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGdsOjpVbmlmb3JtM2Z2KGxvY2F0
aW9uLCBzaXplLCBhcnJheSk7CisgICAgZ2w6OlVuaWZvcm0zZnYobG9jYXRpb24sIGFycmF5LmJ1
ZlNpemUgLyAzLCBhcnJheS5kYXRhKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6dW5pZm9ybTRmKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xmbG9hdCB2MCwgR0NHTGZsb2F0IHYx
LCBHQ0dMZmxvYXQgdjIsIEdDR0xmbG9hdCB2MykKQEAgLTE1NTEsMTMgKzE2NTAsMTMgQEAgdm9p
ZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTRmKEdDR0xpbnQgbG9jYXRpb24sIEdD
R0xmbG9hdCB2MCwgR0NHTGZsb2EKICAgICBnbDo6VW5pZm9ybTRmKGxvY2F0aW9uLCB2MCwgdjEs
IHYyLCB2Myk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm00ZnYo
R0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIHNpemUsIGNvbnN0IEdDR0xmbG9hdCogYXJyYXkp
Cit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtNGZ2KEdDR0xpbnQgbG9jYXRp
b24sIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gYXJyYXkpCiB7Ci0gICAgLy8gRklYTUU6IGxl
bmd0aCBuZWVkcyB0byBiZSBhIG11bHRpcGxlIG9mIDQuCisgICAgQVNTRVJUKCEoYXJyYXkuYnVm
U2l6ZSAlIDQpKTsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1
cm47CiAKLSAgICBnbDo6VW5pZm9ybTRmdihsb2NhdGlvbiwgc2l6ZSwgYXJyYXkpOworICAgIGds
OjpVbmlmb3JtNGZ2KGxvY2F0aW9uLCBhcnJheS5idWZTaXplIC8gNCwgYXJyYXkuZGF0YSk7CiB9
CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0xaShHQ0dMaW50IGxvY2F0
aW9uLCBHQ0dMaW50IHYwKQpAQCAtMTU2OCwxMiArMTY2NywxMiBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjp1bmlmb3JtMWkoR0NHTGludCBsb2NhdGlvbiwgR0NHTGludCB2MCkKICAg
ICBnbDo6VW5pZm9ybTFpKGxvY2F0aW9uLCB2MCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OnVuaWZvcm0xaXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIHNpemUsIGNv
bnN0IEdDR0xpbnQqIGFycmF5KQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9y
bTFpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50PiBhcnJheSkKIHsK
ICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBn
bDo6VW5pZm9ybTFpdihsb2NhdGlvbiwgc2l6ZSwgYXJyYXkpOworICAgIGdsOjpVbmlmb3JtMWl2
KGxvY2F0aW9uLCBhcnJheS5idWZTaXplLCBhcnJheS5kYXRhKTsKIH0KIAogdm9pZCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTJpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xpbnQgdjAs
IEdDR0xpbnQgdjEpCkBAIC0xNTg0LDEzICsxNjgzLDEzIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OnVuaWZvcm0yaShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMaW50IHYwLCBHQ0dMaW50
IHYxCiAgICAgZ2w6OlVuaWZvcm0yaShsb2NhdGlvbiwgdjAsIHYxKTsKIH0KIAotdm9pZCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTJpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6
ZWkgc2l6ZSwgY29uc3QgR0NHTGludCogYXJyYXkpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjp1bmlmb3JtMml2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+
IGFycmF5KQogewotICAgIC8vIEZJWE1FOiBsZW5ndGggbmVlZHMgdG8gYmUgYSBtdWx0aXBsZSBv
ZiAyLgorICAgIEFTU0VSVCghKGFycmF5LmJ1ZlNpemUgJSAyKSk7CiAgICAgaWYgKCFtYWtlQ29u
dGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZ2w6OlVuaWZvcm0yaXYobG9j
YXRpb24sIHNpemUsIGFycmF5KTsKKyAgICBnbDo6VW5pZm9ybTJpdihsb2NhdGlvbiwgYXJyYXku
YnVmU2l6ZSAvIDIsIGFycmF5LmRhdGEpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjp1bmlmb3JtM2koR0NHTGludCBsb2NhdGlvbiwgR0NHTGludCB2MCwgR0NHTGludCB2MSwg
R0NHTGludCB2MikKQEAgLTE2MDEsMTMgKzE3MDAsMTMgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6dW5pZm9ybTNpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xpbnQgdjAsIEdDR0xpbnQg
djEKICAgICBnbDo6VW5pZm9ybTNpKGxvY2F0aW9uLCB2MCwgdjEsIHYyKTsKIH0KIAotdm9pZCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTNpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dM
c2l6ZWkgc2l6ZSwgY29uc3QgR0NHTGludCogYXJyYXkpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjp1bmlmb3JtM2l2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xp
bnQ+IGFycmF5KQogewotICAgIC8vIEZJWE1FOiBsZW5ndGggbmVlZHMgdG8gYmUgYSBtdWx0aXBs
ZSBvZiAzLgorICAgIEFTU0VSVCghKGFycmF5LmJ1ZlNpemUgJSAzKSk7CiAgICAgaWYgKCFtYWtl
Q29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZ2w6OlVuaWZvcm0zaXYo
bG9jYXRpb24sIHNpemUsIGFycmF5KTsKKyAgICBnbDo6VW5pZm9ybTNpdihsb2NhdGlvbiwgYXJy
YXkuYnVmU2l6ZSAvIDMsIGFycmF5LmRhdGEpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjp1bmlmb3JtNGkoR0NHTGludCBsb2NhdGlvbiwgR0NHTGludCB2MCwgR0NHTGludCB2
MSwgR0NHTGludCB2MiwgR0NHTGludCB2MykKQEAgLTE2MTgsNDAgKzE3MTcsMzkgQEAgdm9pZCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTRpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xp
bnQgdjAsIEdDR0xpbnQgdjEKICAgICBnbDo6VW5pZm9ybTRpKGxvY2F0aW9uLCB2MCwgdjEsIHYy
LCB2Myk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm00aXYoR0NH
TGludCBsb2NhdGlvbiwgR0NHTHNpemVpIHNpemUsIGNvbnN0IEdDR0xpbnQqIGFycmF5KQordm9p
ZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTRpdihHQ0dMaW50IGxvY2F0aW9uLCBH
Q0dMU3Bhbjxjb25zdCBHQ0dMaW50PiBhcnJheSkKIHsKLSAgICAvLyBGSVhNRTogbGVuZ3RoIG5l
ZWRzIHRvIGJlIGEgbXVsdGlwbGUgb2YgNC4KKyAgICBBU1NFUlQoIShhcnJheS5idWZTaXplICUg
NCkpOwogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIGdsOjpVbmlmb3JtNGl2KGxvY2F0aW9uLCBzaXplLCBhcnJheSk7CisgICAgZ2w6OlVuaWZv
cm00aXYobG9jYXRpb24sIGFycmF5LmJ1ZlNpemUgLyA0LCBhcnJheS5kYXRhKTsKIH0KIAotdm9p
ZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybU1hdHJpeDJmdihHQ0dMaW50IGxvY2F0
aW9uLCBHQ0dMc2l6ZWkgc2l6ZSwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHQ0dMZmxv
YXQqIGFycmF5KQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybU1hdHJpeDJm
dihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0
IEdDR0xmbG9hdD4gYXJyYXkpCiB7Ci0gICAgLy8gRklYTUU6IGxlbmd0aCBuZWVkcyB0byBiZSBh
IG11bHRpcGxlIG9mIDQuCiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgZ2w6OlVuaWZvcm1NYXRyaXgyZnYobG9jYXRpb24sIHNpemUsIHRyYW5z
cG9zZSwgYXJyYXkpOworICAgIGdsOjpVbmlmb3JtTWF0cml4MmZ2KGxvY2F0aW9uLCBhcnJheS5i
dWZTaXplIC8gNCwgdHJhbnNwb3NlLCBhcnJheS5kYXRhKTsKIH0KIAotdm9pZCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6dW5pZm9ybU1hdHJpeDNmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6
ZWkgc2l6ZSwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHQ0dMZmxvYXQqIGFycmF5KQor
dm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybU1hdHJpeDNmdihHQ0dMaW50IGxv
Y2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4g
YXJyYXkpCiB7Ci0gICAgLy8gRklYTUU6IGxlbmd0aCBuZWVkcyB0byBiZSBhIG11bHRpcGxlIG9m
IDkuCisgICAgQVNTRVJUKCEoYXJyYXkuYnVmU2l6ZSAlIDkpKTsKICAgICBpZiAoIW1ha2VDb250
ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBnbDo6VW5pZm9ybU1hdHJpeDNm
dihsb2NhdGlvbiwgc2l6ZSwgdHJhbnNwb3NlLCBhcnJheSk7CisgICAgZ2w6OlVuaWZvcm1NYXRy
aXgzZnYobG9jYXRpb24sIGFycmF5LmJ1ZlNpemUgLyA5LCB0cmFuc3Bvc2UsIGFycmF5LmRhdGEp
OwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4NGZ2KEdD
R0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBzaXplLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNv
bnN0IEdDR0xmbG9hdCogYXJyYXkpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlm
b3JtTWF0cml4NGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NH
TFNwYW48Y29uc3QgR0NHTGZsb2F0PiBhcnJheSkKIHsKLSAgICAvLyBGSVhNRTogbGVuZ3RoIG5l
ZWRzIHRvIGJlIGEgbXVsdGlwbGUgb2YgMTYuCisgICAgQVNTRVJUKCEoYXJyYXkuYnVmU2l6ZSAl
IDE2KSk7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgZ2w6OlVuaWZvcm1NYXRyaXg0ZnYobG9jYXRpb24sIHNpemUsIHRyYW5zcG9zZSwgYXJy
YXkpOworICAgIGdsOjpVbmlmb3JtTWF0cml4NGZ2KGxvY2F0aW9uLCBhcnJheS5idWZTaXplIC8g
MTYsIHRyYW5zcG9zZSwgYXJyYXkuZGF0YSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OnVzZVByb2dyYW0oUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtKQpAQCAtMTY4MCwxMiAr
MTc3OCwxMiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2ZXJ0ZXhBdHRyaWIxZihH
Q0dMdWludCBpbmRleCwgR0NHTGZsb2F0IHYwKQogICAgIGdsOjpWZXJ0ZXhBdHRyaWIxZihpbmRl
eCwgdjApOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2ZXJ0ZXhBdHRyaWIx
ZnYoR0NHTHVpbnQgaW5kZXgsIGNvbnN0IEdDR0xmbG9hdCogYXJyYXkpCit2b2lkIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjp2ZXJ0ZXhBdHRyaWIxZnYoR0NHTHVpbnQgaW5kZXgsIEdDR0xTcGFu
PGNvbnN0IEdDR0xmbG9hdCwgMT4gYXJyYXkpCiB7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJl
bnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZ2w6OlZlcnRleEF0dHJpYjFmdihpbmRleCwg
YXJyYXkpOworICAgIGdsOjpWZXJ0ZXhBdHRyaWIxZnYoaW5kZXgsIGFycmF5LmRhdGEpOwogfQog
CiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2ZXJ0ZXhBdHRyaWIyZihHQ0dMdWludCBp
bmRleCwgR0NHTGZsb2F0IHYwLCBHQ0dMZmxvYXQgdjEpCkBAIC0xNjk2LDEyICsxNzk0LDEyIEBA
IHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYjJmKEdDR0x1aW50IGlu
ZGV4LCBHQ0dMZmxvYXQgdjAsIEdDR0xmCiAgICAgZ2w6OlZlcnRleEF0dHJpYjJmKGluZGV4LCB2
MCwgdjEpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2ZXJ0ZXhBdHRyaWIy
ZnYoR0NHTHVpbnQgaW5kZXgsIGNvbnN0IEdDR0xmbG9hdCogYXJyYXkpCit2b2lkIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjp2ZXJ0ZXhBdHRyaWIyZnYoR0NHTHVpbnQgaW5kZXgsIEdDR0xTcGFu
PGNvbnN0IEdDR0xmbG9hdCwgMj4gYXJyYXkpCiB7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJl
bnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZ2w6OlZlcnRleEF0dHJpYjJmdihpbmRleCwg
YXJyYXkpOworICAgIGdsOjpWZXJ0ZXhBdHRyaWIyZnYoaW5kZXgsIGFycmF5LmRhdGEpOwogfQog
CiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2ZXJ0ZXhBdHRyaWIzZihHQ0dMdWludCBp
bmRleCwgR0NHTGZsb2F0IHYwLCBHQ0dMZmxvYXQgdjEsIEdDR0xmbG9hdCB2MikKQEAgLTE3MTIs
MTIgKzE4MTAsMTIgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmli
M2YoR0NHTHVpbnQgaW5kZXgsIEdDR0xmbG9hdCB2MCwgR0NHTGYKICAgICBnbDo6VmVydGV4QXR0
cmliM2YoaW5kZXgsIHYwLCB2MSwgdjIpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjp2ZXJ0ZXhBdHRyaWIzZnYoR0NHTHVpbnQgaW5kZXgsIGNvbnN0IEdDR0xmbG9hdCogYXJy
YXkpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2ZXJ0ZXhBdHRyaWIzZnYoR0NHTHVp
bnQgaW5kZXgsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdCwgMz4gYXJyYXkpCiB7CiAgICAgaWYg
KCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZ2w6OlZlcnRl
eEF0dHJpYjNmdihpbmRleCwgYXJyYXkpOworICAgIGdsOjpWZXJ0ZXhBdHRyaWIzZnYoaW5kZXgs
IGFycmF5LmRhdGEpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2ZXJ0ZXhB
dHRyaWI0ZihHQ0dMdWludCBpbmRleCwgR0NHTGZsb2F0IHYwLCBHQ0dMZmxvYXQgdjEsIEdDR0xm
bG9hdCB2MiwgR0NHTGZsb2F0IHYzKQpAQCAtMTcyOCwxMiArMTgyNiwxMiBAQCB2b2lkIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjp2ZXJ0ZXhBdHRyaWI0ZihHQ0dMdWludCBpbmRleCwgR0NHTGZs
b2F0IHYwLCBHQ0dMZgogICAgIGdsOjpWZXJ0ZXhBdHRyaWI0ZihpbmRleCwgdjAsIHYxLCB2Miwg
djMpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2ZXJ0ZXhBdHRyaWI0ZnYo
R0NHTHVpbnQgaW5kZXgsIGNvbnN0IEdDR0xmbG9hdCogYXJyYXkpCit2b2lkIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjp2ZXJ0ZXhBdHRyaWI0ZnYoR0NHTHVpbnQgaW5kZXgsIEdDR0xTcGFuPGNv
bnN0IEdDR0xmbG9hdCwgND4gYXJyYXkpCiB7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQo
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZ2w6OlZlcnRleEF0dHJpYjRmdihpbmRleCwgYXJy
YXkpOworICAgIGdsOjpWZXJ0ZXhBdHRyaWI0ZnYoaW5kZXgsIGFycmF5LmRhdGEpOwogfQogCiB2
b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2ZXJ0ZXhBdHRyaWJQb2ludGVyKEdDR0x1aW50
IGluZGV4LCBHQ0dMaW50IHNpemUsIEdDR0xlbnVtIHR5cGUsIEdDR0xib29sZWFuIG5vcm1hbGl6
ZWQsIEdDR0xzaXplaSBzdHJpZGUsIEdDR0xpbnRwdHIgb2Zmc2V0KQpAQCAtMjAyOSwxNiArMjEy
Nyw2IEBAIEdDR0xzaXplaXB0ciBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VmVydGV4QXR0
cmliT2Zmc2V0KEdDR0x1aW50IGluZGV4LCBHQ0dMCiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdD
R0xzaXplaXB0cj4ocmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4ocG9pbnRlcikpOwogfQogCi12
b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp0ZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2ZmLCBHQ0dMaW50IHlvZmYsIEdDR0xzaXplaSB3
aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBj
b25zdCB2b2lkKiBwaXhlbHMpCi17Ci0gICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgLy8gRklYTUU6IHdlIHdpbGwgbmVlZCB0byBkZWFsIHdpdGgg
UGl4ZWxTdG9yZSBwYXJhbXMgd2hlbiBkZWFsaW5nIHdpdGggaW1hZ2UgYnVmZmVycyB0aGF0IGRp
ZmZlciBmcm9tIHRoZSBzdWJpbWFnZSBzaXplLgotICAgIGdsOjpUZXhTdWJJbWFnZTJEKHRhcmdl
dCwgbGV2ZWwsIHhvZmYsIHlvZmYsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgcGl4ZWxz
KTsKLSAgICBtX3N0YXRlLnRleHR1cmVTZWVkQ291bnQuYWRkKG1fc3RhdGUuY3VycmVudEJvdW5k
VGV4dHVyZSgpKTsKLX0KLQogUGxhdGZvcm1HTE9iamVjdCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6Y3JlYXRlQnVmZmVyKCkKIHsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQpAQCAt
MjIwMywxNyArMjI5MSw2IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmRpc3BhdGNo
Q29udGV4dENoYW5nZWROb3RpZmljYXRpb24oKQogICAgICAgICBjbGllbnQtPmRpc3BhdGNoQ29u
dGV4dENoYW5nZWROb3RpZmljYXRpb24oKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6dGV4SW1hZ2UyRERpcmVjdChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdD
R0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQs
IEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIGNvbnN0IHZv
aWQqIHBpeGVscykKLXsKLSAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBpZiAoIW1faXNGb3JXZWJHTDIgJiYgbV9leHRlbnNpb25zKQotICAgICAg
ICBpbnRlcm5hbGZvcm1hdCA9IG1fZXh0ZW5zaW9ucy0+YWRqdXN0V2ViR0wxVGV4dHVyZUludGVy
bmFsRm9ybWF0KGludGVybmFsZm9ybWF0LCBmb3JtYXQsIHR5cGUpOwotICAgIGdsOjpUZXhJbWFn
ZTJEKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIs
IGZvcm1hdCwgdHlwZSwgcGl4ZWxzKTsKLSAgICBtX3N0YXRlLnRleHR1cmVTZWVkQ291bnQuYWRk
KG1fc3RhdGUuY3VycmVudEJvdW5kVGV4dHVyZSgpKTsKLX0KLQogdm9pZCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6ZHJhd0FycmF5c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMaW50IGZp
cnN0LCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xzaXplaSBwcmltY291bnQpCiB7CiAgICAgaWYgKCFt
YWtlQ29udGV4dEN1cnJlbnQoKSkKQEAgLTI0MzYsMjAgKzI1MTMsMjAgQEAgdm9pZCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6ZnJhbWVidWZmZXJUZXh0dXJlTGF5ZXIoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMZW51bQogICAgIGdsOjpGcmFtZWJ1ZmZlclRleHR1cmVMYXllcih0YXJnZXQsIGF0dGFj
aG1lbnQsIHRleHR1cmUsIGxldmVsLCBsYXllcik7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmludmFsaWRhdGVGcmFtZWJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXpl
aSBudW1BdHRhY2htZW50cywgY29uc3QgR0NHTGVudW0qIGF0dGFjaG1lbnRzKQordm9pZCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6aW52YWxpZGF0ZUZyYW1lYnVmZmVyKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+IGF0dGFjaG1lbnRzKQogewogICAgIGlmICghbWFr
ZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGdsOjpJbnZhbGlkYXRl
RnJhbWVidWZmZXIodGFyZ2V0LCBudW1BdHRhY2htZW50cywgYXR0YWNobWVudHMpOworICAgIGds
OjpJbnZhbGlkYXRlRnJhbWVidWZmZXIodGFyZ2V0LCBhdHRhY2htZW50cy5idWZTaXplLCBhdHRh
Y2htZW50cy5kYXRhKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6aW52YWxp
ZGF0ZVN1YkZyYW1lYnVmZmVyKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpIG51bUF0dGFjaG1l
bnRzLCBjb25zdCBHQ0dMZW51bSogYXR0YWNobWVudHMsIEdDR0xpbnQgeCwgR0NHTGludCB5LCBH
Q0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjppbnZhbGlkYXRlU3ViRnJhbWVidWZmZXIoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMU3Bh
bjxjb25zdCBHQ0dMZW51bT4gYXR0YWNobWVudHMsIEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dM
c2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpCiB7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1
cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZ2w6OkludmFsaWRhdGVTdWJGcmFtZWJ1
ZmZlcih0YXJnZXQsIG51bUF0dGFjaG1lbnRzLCBhdHRhY2htZW50cywgeCwgeSwgd2lkdGgsIGhl
aWdodCk7CisgICAgZ2w6OkludmFsaWRhdGVTdWJGcmFtZWJ1ZmZlcih0YXJnZXQsIGF0dGFjaG1l
bnRzLmJ1ZlNpemUsIGF0dGFjaG1lbnRzLmRhdGEsIHgsIHksIHdpZHRoLCBoZWlnaHQpOwogfQog
CiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkQnVmZmVyKEdDR0xlbnVtIHNyYykK
QEAgLTI1MTcsODQgKzI1OTQsOTMgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5p
Zm9ybTR1aShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMdWludCB2MCwgR0NHTHVpbnQKICAgICBnbDo6
VW5pZm9ybTR1aShsb2NhdGlvbiwgdjAsIHYxLCB2MiwgdjMpOwogfQogCi12b2lkIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMXVpdihHQ0dMaW50IGxvY2F0aW9uLCBjb25zdCBHQ0dM
dWludCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCit2b2lk
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMXVpdihHQ0dMaW50IGxvY2F0aW9uLCBH
Q0dMU3Bhbjxjb25zdCBHQ0dMdWludD4gZGF0YSkKIHsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3Vy
cmVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBnbDo6VW5pZm9ybTF1aXYobG9jYXRpb24s
IHNyY0xlbmd0aCwgZGF0YSArIHNyY09mZnNldCk7CisgICAgZ2w6OlVuaWZvcm0xdWl2KGxvY2F0
aW9uLCBkYXRhLmJ1ZlNpemUsIGRhdGEuZGF0YSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OnVuaWZvcm0ydWl2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0x1aW50KiBk
YXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKK3ZvaWQgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0ydWl2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFu
PGNvbnN0IEdDR0x1aW50PiBkYXRhKQogeworICAgIEFTU0VSVCghKGRhdGEuYnVmU2l6ZSAlIDIp
KTsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBnbDo6VW5pZm9ybTJ1aXYobG9jYXRpb24sIHNyY0xlbmd0aCwgZGF0YSArIHNyY09mZnNldCk7
CisgICAgZ2w6OlVuaWZvcm0ydWl2KGxvY2F0aW9uLCBkYXRhLmJ1ZlNpemUgLyAyLCBkYXRhLmRh
dGEpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtM3VpdihHQ0dM
aW50IGxvY2F0aW9uLCBjb25zdCBHQ0dMdWludCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBH
Q0dMdWludCBzcmNMZW5ndGgpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3Jt
M3VpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdWludD4gZGF0YSkKIHsK
KyAgICBBU1NFUlQoIShkYXRhLmJ1ZlNpemUgJSAzKSk7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1
cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZ2w6OlVuaWZvcm0zdWl2KGxvY2F0aW9u
LCBzcmNMZW5ndGgsIGRhdGEgKyBzcmNPZmZzZXQpOworICAgIGdsOjpVbmlmb3JtM3Vpdihsb2Nh
dGlvbiwgZGF0YS5idWZTaXplIC8gMywgZGF0YS5kYXRhKTsKIH0KIAotdm9pZCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6dW5pZm9ybTR1aXYoR0NHTGludCBsb2NhdGlvbiwgY29uc3QgR0NHTHVp
bnQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQordm9pZCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTR1aXYoR0NHTGludCBsb2NhdGlvbiwgR0NH
TFNwYW48Y29uc3QgR0NHTHVpbnQ+IGRhdGEpCiB7CisgICAgQVNTRVJUKCEoZGF0YS5idWZTaXpl
ICUgNCkpOwogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIGdsOjpVbmlmb3JtNHVpdihsb2NhdGlvbiwgc3JjTGVuZ3RoLCBkYXRhICsgc3JjT2Zm
c2V0KTsKKyAgICBnbDo6VW5pZm9ybTR1aXYobG9jYXRpb24sIGRhdGEuYnVmU2l6ZSAvIDQsIGRh
dGEuZGF0YSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRy
aXgyeDNmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdD
R0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCit2
b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4MngzZnYoR0NHTGludCBs
b2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+
IGRhdGEpCiB7CisgICAgQVNTRVJUKCEoZGF0YS5idWZTaXplICUgNikpOwogICAgIGlmICghbWFr
ZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGdsOjpVbmlmb3JtTWF0
cml4MngzZnYobG9jYXRpb24sIHNyY0xlbmd0aCwgdHJhbnNwb3NlLCBkYXRhICsgc3JjT2Zmc2V0
KTsKKyAgICBnbDo6VW5pZm9ybU1hdHJpeDJ4M2Z2KGxvY2F0aW9uLCBkYXRhLmJ1ZlNpemUgLyA2
LCB0cmFuc3Bvc2UsIGRhdGEuZGF0YSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OnVuaWZvcm1NYXRyaXgzeDJmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFu
c3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWlu
dCBzcmNMZW5ndGgpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4
M3gyZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxj
b25zdCBHQ0dMZmxvYXQ+IGRhdGEpCiB7CisgICAgQVNTRVJUKCEoZGF0YS5idWZTaXplICUgNikp
OwogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAg
IGdsOjpVbmlmb3JtTWF0cml4M3gyZnYobG9jYXRpb24sIHNyY0xlbmd0aCwgdHJhbnNwb3NlLCBk
YXRhICsgc3JjT2Zmc2V0KTsKKyAgICBnbDo6VW5pZm9ybU1hdHJpeDN4MmZ2KGxvY2F0aW9uLCBk
YXRhLmJ1ZlNpemUgLyA2LCB0cmFuc3Bvc2UsIGRhdGEuZGF0YSk7CiB9CiAKLXZvaWQgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXgyeDRmdihHQ0dMaW50IGxvY2F0aW9uLCBH
Q0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3Jj
T2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
Ojp1bmlmb3JtTWF0cml4Mng0ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNw
b3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEpCiB7CisgICAgQVNTRVJUKCEoZGF0
YS5idWZTaXplICUgOCkpOwogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIGdsOjpVbmlmb3JtTWF0cml4Mng0ZnYobG9jYXRpb24sIHNyY0xlbmd0
aCwgdHJhbnNwb3NlLCBkYXRhICsgc3JjT2Zmc2V0KTsKKyAgICBnbDo6VW5pZm9ybU1hdHJpeDJ4
NGZ2KGxvY2F0aW9uLCBkYXRhLmJ1ZlNpemUgLyA4LCB0cmFuc3Bvc2UsIGRhdGEuZGF0YSk7CiB9
CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXg0eDJmdihHQ0dM
aW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogZGF0
YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCit2b2lkIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4NHgyZnYoR0NHTGludCBsb2NhdGlvbiwgR0NH
TGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEpCiB7Cisg
ICAgQVNTRVJUKCEoZGF0YS5idWZTaXplICUgOCkpOwogICAgIGlmICghbWFrZUNvbnRleHRDdXJy
ZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGdsOjpVbmlmb3JtTWF0cml4NHgyZnYobG9j
YXRpb24sIHNyY0xlbmd0aCwgdHJhbnNwb3NlLCBkYXRhICsgc3JjT2Zmc2V0KTsKKyAgICBnbDo6
VW5pZm9ybU1hdHJpeDR4MmZ2KGxvY2F0aW9uLCBkYXRhLmJ1ZlNpemUgLyA4LCB0cmFuc3Bvc2Us
IGRhdGEuZGF0YSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1N
YXRyaXgzeDRmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0
IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgp
Cit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4M3g0ZnYoR0NHTGlu
dCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxv
YXQ+IGRhdGEpCiB7CisgICAgQVNTRVJUKCEoZGF0YS5idWZTaXplICUgMTIpKTsKICAgICBpZiAo
IW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBnbDo6VW5pZm9y
bU1hdHJpeDN4NGZ2KGxvY2F0aW9uLCBzcmNMZW5ndGgsIHRyYW5zcG9zZSwgZGF0YSArIHNyY09m
ZnNldCk7CisgICAgZ2w6OlVuaWZvcm1NYXRyaXgzeDRmdihsb2NhdGlvbiwgZGF0YS5idWZTaXpl
IC8gMTIsIHRyYW5zcG9zZSwgZGF0YS5kYXRhKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6dW5pZm9ybU1hdHJpeDR4M2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFu
IHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdD
R0x1aW50IHNyY0xlbmd0aCkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1N
YXRyaXg0eDNmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xT
cGFuPGNvbnN0IEdDR0xmbG9hdD4gZGF0YSkKIHsKKyAgICBBU1NFUlQoIShkYXRhLmJ1ZlNpemUg
JSAxMikpOwogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIGdsOjpVbmlmb3JtTWF0cml4NHgzZnYobG9jYXRpb24sIHNyY0xlbmd0aCwgdHJhbnNw
b3NlLCBkYXRhICsgc3JjT2Zmc2V0KTsKKyAgICBnbDo6VW5pZm9ybU1hdHJpeDR4M2Z2KGxvY2F0
aW9uLCBkYXRhLmJ1ZlNpemUgLyAxMiwgdHJhbnNwb3NlLCBkYXRhLmRhdGEpOwogfQogCiB2b2lk
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2ZXJ0ZXhBdHRyaWJJNGkoR0NHTHVpbnQgaW5kZXgs
IEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMaW50IHosIEdDR0xpbnQgdykKQEAgLTI2MDUsMTIg
KzI2OTEsMTIgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliSTRp
KEdDR0x1aW50IGluZGV4LCBHQ0dMaW50IHgsIEdDR0xpbnQKICAgICBnbDo6VmVydGV4QXR0cmli
STRpKGluZGV4LCB4LCB5LCB6LCB3KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6dmVydGV4QXR0cmliSTRpdihHQ0dMdWludCBpbmRleCwgY29uc3QgR0NHTGludCogdmFsdWVz
KQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliSTRpdihHQ0dMdWlu
dCBpbmRleCwgR0NHTFNwYW48Y29uc3QgR0NHTGludCwgND4gdmFsdWVzKQogewogICAgIGlmICgh
bWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGdsOjpWZXJ0ZXhB
dHRyaWJJNGl2KGluZGV4LCB2YWx1ZXMpOworICAgIGdsOjpWZXJ0ZXhBdHRyaWJJNGl2KGluZGV4
LCB2YWx1ZXMuZGF0YSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZlcnRl
eEF0dHJpYkk0dWkoR0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50IHgsIEdDR0x1aW50IHksIEdDR0x1
aW50IHosIEdDR0x1aW50IHcpCkBAIC0yNjIxLDEyICsyNzA3LDEyIEBAIHZvaWQgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYkk0dWkoR0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50
IHgsIEdDR0x1CiAgICAgZ2w6OlZlcnRleEF0dHJpYkk0dWkoaW5kZXgsIHgsIHksIHosIHcpOwog
fQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2ZXJ0ZXhBdHRyaWJJNHVpdihHQ0dM
dWludCBpbmRleCwgY29uc3QgR0NHTHVpbnQqIHZhbHVlcykKK3ZvaWQgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OnZlcnRleEF0dHJpYkk0dWl2KEdDR0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxjb25z
dCBHQ0dMdWludCwgND4gdmFsdWVzKQogewogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkp
CiAgICAgICAgIHJldHVybjsKIAotICAgIGdsOjpWZXJ0ZXhBdHRyaWJJNHVpdihpbmRleCwgdmFs
dWVzKTsKKyAgICBnbDo6VmVydGV4QXR0cmliSTR1aXYoaW5kZXgsIHZhbHVlcy5kYXRhKTsKIH0K
IAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6ZHJhd1JhbmdlRWxlbWVudHMoR0NHTGVu
dW0gbW9kZSwgR0NHTHVpbnQgc3RhcnQsIEdDR0x1aW50IGVuZCwgR0NHTHNpemVpIGNvdW50LCBH
Q0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCkKQEAgLTI2MzcsMzYgKzI3MjMsMzYgQEAg
dm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6ZHJhd1JhbmdlRWxlbWVudHMoR0NHTGVudW0g
bW9kZSwgR0NHTHVpbnQgc3RhcnQsIEcKICAgICBnbDo6RHJhd1JhbmdlRWxlbWVudHMobW9kZSwg
c3RhcnQsIGVuZCwgY291bnQsIHR5cGUsIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KG9mZnNldCkp
OwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpkcmF3QnVmZmVycyhHQ0dMc2l6
ZWkgbiwgY29uc3QgR0NHTGVudW0qIGJ1ZnMpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpkcmF3QnVmZmVycyhHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4gYnVmcykKIHsKICAgICBpZiAo
IW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBnbDo6RHJhd0J1
ZmZlcnMobiwgYnVmcyk7CisgICAgZ2w6OkRyYXdCdWZmZXJzKGJ1ZnMuYnVmU2l6ZSwgYnVmcy5k
YXRhKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y2xlYXJCdWZmZXJpdihH
Q0dMZW51bSBidWZmZXIsIEdDR0xpbnQgZHJhd2J1ZmZlciwgY29uc3QgR0NHTGludCogdmFsdWVz
LCBHQ0dMdWludCBzcmNPZmZzZXQpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjbGVh
ckJ1ZmZlcml2KEdDR0xlbnVtIGJ1ZmZlciwgR0NHTGludCBkcmF3YnVmZmVyLCBHQ0dMU3Bhbjxj
b25zdCBHQ0dMaW50PiB2YWx1ZXMpCiB7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgZ2w6OkNsZWFyQnVmZmVyaXYoYnVmZmVyLCBkcmF3YnVm
ZmVyLCB2YWx1ZXMgKyBzcmNPZmZzZXQpOworICAgIGdsOjpDbGVhckJ1ZmZlcml2KGJ1ZmZlciwg
ZHJhd2J1ZmZlciwgdmFsdWVzLmRhdGEpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpjbGVhckJ1ZmZlcnVpdihHQ0dMZW51bSBidWZmZXIsIEdDR0xpbnQgZHJhd2J1ZmZlciwg
Y29uc3QgR0NHTHVpbnQqIHZhbHVlcywgR0NHTHVpbnQgc3JjT2Zmc2V0KQordm9pZCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6Y2xlYXJCdWZmZXJ1aXYoR0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50
IGRyYXdidWZmZXIsIEdDR0xTcGFuPGNvbnN0IEdDR0x1aW50PiB2YWx1ZXMpCiB7CiAgICAgaWYg
KCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZ2w6OkNsZWFy
QnVmZmVydWl2KGJ1ZmZlciwgZHJhd2J1ZmZlciwgdmFsdWVzICsgc3JjT2Zmc2V0KTsKKyAgICBn
bDo6Q2xlYXJCdWZmZXJ1aXYoYnVmZmVyLCBkcmF3YnVmZmVyLCB2YWx1ZXMuZGF0YSk7CiB9CiAK
LXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNsZWFyQnVmZmVyZnYoR0NHTGVudW0gYnVm
ZmVyLCBHQ0dMaW50IGRyYXdidWZmZXIsIGNvbnN0IEdDR0xmbG9hdCogdmFsdWVzLCBHQ0dMdWlu
dCBzcmNPZmZzZXQpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjbGVhckJ1ZmZlcmZ2
KEdDR0xlbnVtIGJ1ZmZlciwgR0NHTGludCBkcmF3YnVmZmVyLCBHQ0dMU3Bhbjxjb25zdCBHQ0dM
ZmxvYXQ+IHZhbHVlcykKIHsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBnbDo6Q2xlYXJCdWZmZXJmdihidWZmZXIsIGRyYXdidWZmZXIsIHZh
bHVlcyArIHNyY09mZnNldCk7CisgICAgZ2w6OkNsZWFyQnVmZmVyZnYoYnVmZmVyLCBkcmF3YnVm
ZmVyLCB2YWx1ZXMuZGF0YSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNs
ZWFyQnVmZmVyZmkoR0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50IGRyYXdidWZmZXIsIEdDR0xmbG9h
dCBkZXB0aCwgR0NHTGludCBzdGVuY2lsKQpAQCAtMjg1NCw5NCArMjk0MCw2IEBAIFZlY3RvcjxH
Q0dMdWludD4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFVuaWZvcm1JbmRpY2VzKFBsYXRm
b3JtR0xPYmplY3QgcHJvCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotdm9pZCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6dW5pZm9ybTFmdihHQ0dMaW50IGxvY2F0aW9uLCBjb25zdCBHQ0dMZmxv
YXQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQotewotICAg
IGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpV
bmlmb3JtMWZ2KGxvY2F0aW9uLCBzcmNMZW5ndGgsIGRhdGEgKyBzcmNPZmZzZXQpOwotfQotCi12
b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMmZ2KEdDR0xpbnQgbG9jYXRpb24s
IGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNM
ZW5ndGgpCi17Ci0gICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgZ2w6OlVuaWZvcm0yZnYobG9jYXRpb24sIHNyY0xlbmd0aCwgZGF0YSArIHNyY09m
ZnNldCk7Ci19Ci0KLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0zZnYoR0NH
TGludCBsb2NhdGlvbiwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQs
IEdDR0x1aW50IHNyY0xlbmd0aCkKLXsKLSAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6VW5pZm9ybTNmdihsb2NhdGlvbiwgc3JjTGVuZ3Ro
LCBkYXRhICsgc3JjT2Zmc2V0KTsKLX0KLQotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
dW5pZm9ybTRmdihHQ0dMaW50IGxvY2F0aW9uLCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1
aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQotewotICAgIGlmICghbWFrZUNvbnRl
eHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpVbmlmb3JtNGZ2KGxvY2F0
aW9uLCBzcmNMZW5ndGgsIGRhdGEgKyBzcmNPZmZzZXQpOwotfQotCi12b2lkIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjp1bmlmb3JtMWl2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0xpbnQq
IGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQotewotICAgIGlm
ICghbWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpVbmlm
b3JtMWl2KGxvY2F0aW9uLCBzcmNMZW5ndGgsIGRhdGEgKyBzcmNPZmZzZXQpOwotfQotCi12b2lk
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMml2KEdDR0xpbnQgbG9jYXRpb24sIGNv
bnN0IEdDR0xpbnQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3Ro
KQotewotICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIGdsOjpVbmlmb3JtMml2KGxvY2F0aW9uLCBzcmNMZW5ndGgsIGRhdGEgKyBzcmNPZmZzZXQp
OwotfQotCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtM2l2KEdDR0xpbnQg
bG9jYXRpb24sIGNvbnN0IEdDR0xpbnQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVp
bnQgc3JjTGVuZ3RoKQotewotICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAg
IHJldHVybjsKLQotICAgIGdsOjpVbmlmb3JtM2l2KGxvY2F0aW9uLCBzcmNMZW5ndGgsIGRhdGEg
KyBzcmNPZmZzZXQpOwotfQotCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3Jt
NGl2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0xpbnQqIGRhdGEsIEdDR0x1aW50IHNyY09m
ZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQotewotICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50
KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpVbmlmb3JtNGl2KGxvY2F0aW9uLCBzcmNM
ZW5ndGgsIGRhdGEgKyBzcmNPZmZzZXQpOwotfQotCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjp1bmlmb3JtTWF0cml4MmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5z
cG9zZSwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50
IHNyY0xlbmd0aCkKLXsKLSAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBnbDo6VW5pZm9ybU1hdHJpeDJmdihsb2NhdGlvbiwgc3JjTGVuZ3RoLCB0
cmFuc3Bvc2UsIGRhdGEgKyBzcmNPZmZzZXQpOwotfQotCi12b2lkIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjp1bmlmb3JtTWF0cml4M2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRy
YW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1
aW50IHNyY0xlbmd0aCkKLXsKLSAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBnbDo6VW5pZm9ybU1hdHJpeDNmdihsb2NhdGlvbiwgc3JjTGVuZ3Ro
LCB0cmFuc3Bvc2UsIGRhdGEgKyBzcmNPZmZzZXQpOwotfQotCi12b2lkIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4NGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFu
IHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdD
R0x1aW50IHNyY0xlbmd0aCkKLXsKLSAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQotICAg
ICAgICByZXR1cm47Ci0KLSAgICBnbDo6VW5pZm9ybU1hdHJpeDRmdihsb2NhdGlvbiwgc3JjTGVu
Z3RoLCB0cmFuc3Bvc2UsIGRhdGEgKyBzcmNPZmZzZXQpOwotfQotCiB2b2lkIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpnZXRBY3RpdmVVbmlmb3JtQmxvY2tpdihHQ0dMdWludCBwcm9ncmFtLCBH
Q0dMdWludCB1bmlmb3JtQmxvY2tJbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xp
bnQ+IHBhcmFtcykKIHsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvR3JhcGhpY3NDb250ZXh0R0xD
VkFOR0xFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0dyYXBoaWNz
Q29udGV4dEdMQ1ZBTkdMRS5jcHAKaW5kZXggZjliZmNhM2M0OGNlMjhlYWIxOTQ0YTRmNWU4NTMw
YTQyNWY4NjJmZS4uMDM0ODA2YThiY2RhMjI5YmM2YTgwODc5MzRhMTAzMDMyNDYxZjEwNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvR3JhcGhpY3NDb250
ZXh0R0xDVkFOR0xFLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
di9HcmFwaGljc0NvbnRleHRHTENWQU5HTEUuY3BwCkBAIC0yMzUsMTggKzIzNSwxMyBAQCBzdHJ1
Y3QgR0xmbG9hdENvbG9ycyB7CiB9OwogCiBzdHJ1Y3QgWUNiQ3JNYXRyaXggewotICAgIHVuaW9u
IHsKICAgICAgICAgR0xmbG9hdCByb3dzWzRdWzRdOwotICAgICAgICBHTGZsb2F0IGRhdGFbMTZd
OwotICAgIH07CiAKICAgICBjb25zdGV4cHIgWUNiQ3JNYXRyaXgoUGl4ZWxSYW5nZSwgR0xmbG9h
dCBjYkNvZWZmaWNpZW50LCBHTGZsb2F0IGNyQ29lZmZpY2llbnQpOwogCi0gICAgb3BlcmF0b3Ig
VmVjdG9yPEdMZmxvYXQ+KCkgY29uc3QKKyAgICBvcGVyYXRvciBHQ0dMU3Bhbjxjb25zdCBHTGZs
b2F0LCAxNj4oKSBjb25zdAogICAgIHsKLSAgICAgICAgVmVjdG9yPEdMZmxvYXQ+IHZlY3RvcjsK
LSAgICAgICAgdmVjdG9yLmFwcGVuZChkYXRhLCAxNik7Ci0gICAgICAgIHJldHVybiB2ZWN0b3I7
CisgICAgICAgIHJldHVybiBtYWtlR0NHTFNwYW48MTY+KCZyb3dzWzBdWzBdKTsKICAgICB9CiAK
ICAgICBjb25zdGV4cHIgR0xmbG9hdENvbG9yIG9wZXJhdG9yKihjb25zdCBHTGZsb2F0Q29sb3Im
KSBjb25zdDsKQEAgLTMxOCwxMCArMzEzLDEwIEBAIGNvbnN0ZXhwciBHTGZsb2F0Q29sb3IgWUNi
Q3JNYXRyaXg6Om9wZXJhdG9yKihjb25zdCBHTGZsb2F0Q29sb3ImIGNvbG9yKSBjb25zdAogICAg
ICk7CiB9CiAKLXN0YXRpYyBjb25zdCBWZWN0b3I8R0xmbG9hdD4gWUNiQ3JUb1JHQk1hdHJpeEZv
clJhbmdlQW5kVHJhbnNmZXJGdW5jdGlvbihQaXhlbFJhbmdlIHJhbmdlLCBUcmFuc2ZlckZ1bmN0
aW9uQ1YgdHJhbnNmZXJGdW5jdGlvbikKK3N0YXRpYyBHQ0dMU3Bhbjxjb25zdCBHTGZsb2F0LCAx
Nj4gWUNiQ3JUb1JHQk1hdHJpeEZvclJhbmdlQW5kVHJhbnNmZXJGdW5jdGlvbihQaXhlbFJhbmdl
IHJhbmdlLCBUcmFuc2ZlckZ1bmN0aW9uQ1YgdHJhbnNmZXJGdW5jdGlvbikKIHsKICAgICB1c2lu
ZyBNYXBLZXkgPSBzdGQ6OnBhaXI8UGl4ZWxSYW5nZSwgVHJhbnNmZXJGdW5jdGlvbkNWPjsKLSAg
ICB1c2luZyBNYXRyaXhNYXAgPSBTdGRNYXA8TWFwS2V5LCBWZWN0b3I8R0xmbG9hdD4+OworICAg
IHVzaW5nIE1hdHJpeE1hcCA9IFN0ZE1hcDxNYXBLZXksIGNvbnN0IFlDYkNyTWF0cml4Jj47CiAK
ICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8TWF0cml4TWFwPiBtYXRyaWNlczsKICAgICBzdGF0
aWMgZGlzcGF0Y2hfb25jZV90IG9uY2VUb2tlbjsKQEAgLTUyNiw3ICs1MjEsNyBAQCBib29sIEdy
YXBoaWNzQ29udGV4dEdMQ1ZBTkdMRTo6aW5pdGlhbGl6ZVVWQ29udGV4dE9iamVjdHMoKQogICAg
IGZsb2F0IHZlcnRpY2VzWzEyXSA9IHsgLTEsIC0xLCAxLCAtMSwgMSwgMSwgMSwgMSwgLTEsIDEs
IC0xLCAtMSB9OwogCiAgICAgbV9jb250ZXh0LT5iaW5kQnVmZmVyKEdyYXBoaWNzQ29udGV4dEdM
OjpBUlJBWV9CVUZGRVIsIG1feXV2VmVydGV4QnVmZmVyKTsKLSAgICBtX2NvbnRleHQtPmJ1ZmZl
ckRhdGEoR3JhcGhpY3NDb250ZXh0R0w6OkFSUkFZX0JVRkZFUiwgc2l6ZW9mKHZlcnRpY2VzKSwg
dmVydGljZXMsIEdyYXBoaWNzQ29udGV4dEdMOjpTVEFUSUNfRFJBVyk7CisgICAgbV9jb250ZXh0
LT5idWZmZXJEYXRhKEdyYXBoaWNzQ29udGV4dEdMOjpBUlJBWV9CVUZGRVIsIEdDR0xTcGFuPGNv
bnN0IEdDR0x2b2lkPih2ZXJ0aWNlcywgc2l6ZW9mKHZlcnRpY2VzKSksIEdyYXBoaWNzQ29udGV4
dEdMOjpTVEFUSUNfRFJBVyk7CiAgICAgbV9jb250ZXh0LT5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJh
eShtX3l1dlBvc2l0aW9uQXR0cmlidXRlTG9jYXRpb24pOwogICAgIG1fY29udGV4dC0+dmVydGV4
QXR0cmliUG9pbnRlcihtX3l1dlBvc2l0aW9uQXR0cmlidXRlTG9jYXRpb24sIDIsIEdyYXBoaWNz
Q29udGV4dEdMOjpGTE9BVCwgZmFsc2UsIDAsIDApOwogCkBAIC02MjUsNyArNjIwLDcgQEAgYm9v
bCBHcmFwaGljc0NvbnRleHRHTENWQU5HTEU6OmNvcHlQaXhlbEJ1ZmZlclRvVGV4dHVyZShDVlBp
eGVsQnVmZmVyUmVmIGltYWdlLAogICAgIG1fY29udGV4dC0+dGV4UGFyYW1ldGVyaShHcmFwaGlj
c0NvbnRleHRHTDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0R0w6OlRFWFRVUkVfTUlOX0ZJ
TFRFUiwgR3JhcGhpY3NDb250ZXh0R0w6OkxJTkVBUik7CiAgICAgbV9jb250ZXh0LT50ZXhQYXJh
bWV0ZXJpKEdyYXBoaWNzQ29udGV4dEdMOjpURVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHRHTDo6
VEVYVFVSRV9XUkFQX1MsIEdyYXBoaWNzQ29udGV4dEdMOjpDTEFNUF9UT19FREdFKTsKICAgICBt
X2NvbnRleHQtPnRleFBhcmFtZXRlcmkoR3JhcGhpY3NDb250ZXh0R0w6OlRFWFRVUkVfMkQsIEdy
YXBoaWNzQ29udGV4dEdMOjpURVhUVVJFX1dSQVBfVCwgR3JhcGhpY3NDb250ZXh0R0w6OkNMQU1Q
X1RPX0VER0UpOwotICAgIG1fY29udGV4dC0+dGV4SW1hZ2UyRERpcmVjdChHcmFwaGljc0NvbnRl
eHRHTDo6VEVYVFVSRV8yRCwgbGV2ZWwsIGludGVybmFsRm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCAw
LCBmb3JtYXQsIHR5cGUsIG51bGxwdHIpOworICAgIGdsOjpUZXhJbWFnZTJEKEdMX1RFWFRVUkVf
MkQsIGxldmVsLCBpbnRlcm5hbEZvcm1hdCwgd2lkdGgsIGhlaWdodCwgMCwgZm9ybWF0LCB0eXBl
LCBudWxscHRyKTsKIAogICAgIG1fY29udGV4dC0+ZnJhbWVidWZmZXJUZXh0dXJlMkQoR3JhcGhp
Y3NDb250ZXh0R0w6OkZSQU1FQlVGRkVSLCBHcmFwaGljc0NvbnRleHRHTDo6Q09MT1JfQVRUQUNI
TUVOVDAsIEdyYXBoaWNzQ29udGV4dEdMOjpURVhUVVJFXzJELCBvdXRwdXRUZXh0dXJlLCBsZXZl
bCk7CiAgICAgR0NHTGVudW0gc3RhdHVzID0gbV9jb250ZXh0LT5jaGVja0ZyYW1lYnVmZmVyU3Rh
dHVzKEdyYXBoaWNzQ29udGV4dEdMOjpGUkFNRUJVRkZFUik7CkBAIC02ODIsOCArNjc3LDggQEAg
Ym9vbCBHcmFwaGljc0NvbnRleHRHTENWQU5HTEU6OmNvcHlQaXhlbEJ1ZmZlclRvVGV4dHVyZShD
VlBpeGVsQnVmZmVyUmVmIGltYWdlLAogCiAgICAgYXV0byByYW5nZSA9IHBpeGVsUmFuZ2VGcm9t
UGl4ZWxGb3JtYXQocGl4ZWxGb3JtYXQpOwogICAgIGF1dG8gdHJhbnNmZXJGdW5jdGlvbiA9IHRy
YW5zZmVyRnVuY3Rpb25Gcm9tU3RyaW5nKChDRlN0cmluZ1JlZilDVkJ1ZmZlckdldEF0dGFjaG1l
bnQoaW1hZ2UsIGtDVkltYWdlQnVmZmVyWUNiQ3JNYXRyaXhLZXksIG5pbCkpOwotICAgIGF1dG8m
IGNvbG9yTWF0cml4ID0gWUNiQ3JUb1JHQk1hdHJpeEZvclJhbmdlQW5kVHJhbnNmZXJGdW5jdGlv
bihyYW5nZSwgdHJhbnNmZXJGdW5jdGlvbik7Ci0gICAgbV9jb250ZXh0LT51bmlmb3JtTWF0cml4
NGZ2KG1fY29sb3JNYXRyaXhVbmlmb3JtTG9jYXRpb24sIDEsIEdMX0ZBTFNFLCBjb2xvck1hdHJp
eC5kYXRhKCkpOworICAgIGF1dG8gY29sb3JNYXRyaXggPSBZQ2JDclRvUkdCTWF0cml4Rm9yUmFu
Z2VBbmRUcmFuc2ZlckZ1bmN0aW9uKHJhbmdlLCB0cmFuc2ZlckZ1bmN0aW9uKTsKKyAgICBtX2Nv
bnRleHQtPnVuaWZvcm1NYXRyaXg0ZnYobV9jb2xvck1hdHJpeFVuaWZvcm1Mb2NhdGlvbiwgR0xf
RkFMU0UsIGNvbG9yTWF0cml4KTsKIAogICAgIC8vIERvIHRoZSBhY3R1YWwgZHJhd2luZy4KICAg
ICBtX2NvbnRleHQtPmRyYXdBcnJheXMoR3JhcGhpY3NDb250ZXh0R0w6OlRSSUFOR0xFUywgMCwg
Nik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wv
RXh0ZW5zaW9uc0dMT3BlbkdMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuY3BwCmluZGV4IDE3Nzg2YTY0YmE0ZTFkYTAwOTY0
ZWFlOTk3ZDI5Mjc2NGRhZDE4OTYuLjdlYzgxY2Y0YWU1NzcyY2FlOTcyODhiYzgwZTM2NTY0NmQ2
MjdjN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5n
bC9FeHRlbnNpb25zR0xPcGVuR0wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuY3BwCkBAIC0yMDgsMTQgKzIwOCwxNCBA
QCBib29sIEV4dGVuc2lvbnNHTE9wZW5HTDo6c3VwcG9ydHNFeHRlbnNpb24oY29uc3QgU3RyaW5n
JiBuYW1lKQogICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMobmFtZSk7
CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMOjpkcmF3QnVmZmVyc0VYVChHQ0dMc2l6ZWkg
biwgY29uc3QgR0NHTGVudW0qIGJ1ZnMpCit2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTDo6ZHJhd0J1
ZmZlcnNFWFQoR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+IGJ1ZnMpCiB7CiAgICAgaWYgKCFtX2Nv
bnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyAg
RklYTUU6IGltcGxlbWVudCBzdXBwb3J0IGZvciBvdGhlciBwbGF0Zm9ybXMuCiAjaWYgUExBVEZP
Uk0oR1RLKQotICAgIDo6Z2xEcmF3QnVmZmVycyhuLCBidWZzKTsKKyAgICA6OmdsRHJhd0J1ZmZl
cnMoYnVmcy5idWZTaXplLCBidWZzLmRhdGEpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0obik7
CiAgICAgVU5VU0VEX1BBUkFNKGJ1ZnMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5oCmluZGV4IGQz
YmU4Y2MyOGMxN2MyZGY1ZDNiNDg2NmJiM2M1Zjk0NGM0NTVmMjEuLjQ5NjI4OWNlYTBlNmEwOWQ2
ZGI3MzFmODY4YjU0OTkzYTQ0NDQ5YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmgKQEAgLTUw
LDcgKzUwLDcgQEAgcHVibGljOgogICAgIHZvaWQgaW5zZXJ0RXZlbnRNYXJrZXJFWFQoY29uc3Qg
U3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBwdXNoR3JvdXBNYXJrZXJFWFQoY29uc3QgU3Ry
aW5nJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBwb3BHcm91cE1hcmtlckVYVCh2b2lkKSBvdmVycmlk
ZTsKLSAgICB2b2lkIGRyYXdCdWZmZXJzRVhUKEdDR0xzaXplaSwgY29uc3QgR0NHTGVudW0qKSBv
dmVycmlkZTsKKyAgICB2b2lkIGRyYXdCdWZmZXJzRVhUKEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVt
Pikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGRyYXdBcnJheXNJbnN0YW5jZWQoR0NHTGVudW0gbW9k
ZSwgR0NHTGludCBmaXJzdCwgR0NHTHNpemVpIGNvdW50LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSBv
dmVycmlkZTsKICAgICB2b2lkIGRyYXdFbGVtZW50c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBH
Q0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIGxvbmcgbG9uZyBvZmZzZXQsIEdDR0xzaXpl
aSBwcmltY291bnQpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9u
LmNwcAppbmRleCA2ODZmMmQ1MTE0OGVmOWIxMmZlZjEwYjNjMmFjNzBiMmEzNWQyMTU3Li40M2I1
MTYxZmJhNzc4ZjhmYjQzODRiMWJjMmRiMzhlY2Y2YzQ4M2ViIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5z
aW9uc0dMT3BlbkdMQ29tbW9uLmNwcApAQCAtMjU5LDExICsyNTksNiBAQCB2b2lkIEV4dGVuc2lv
bnNHTE9wZW5HTENvbW1vbjo6cmVhZFBpeGVsc1JvYnVzdEFOR0xFKGludCwgaW50LCBHQ0dMc2l6
ZWksIEdDR0xzaQogICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9P
UEVSQVRJT04pOwogfQogCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6dGV4SW1hZ2Uy
RFJvYnVzdEFOR0xFKEdDR0xlbnVtLCBpbnQsIGludCwgR0NHTHNpemVpLCBHQ0dMc2l6ZWksIGlu
dCwgR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIGNvbnN0IHZvaWQgKikKLXsKLSAgICBt
X2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQog
dm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OnRleFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUo
R0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIGNvbnN0IEdDR0xmbG9hdCAqKQogewogICAg
IG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwpAQCAt
Mjc0LDQyICsyNjksNiBAQCB2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6dGV4UGFyYW1l
dGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSwgR0NHTGVudW0sIEdDRwogICAgIG1fY29udGV4dC0+
c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwogfQogCi12b2lkIEV4dGVu
c2lvbnNHTE9wZW5HTENvbW1vbjo6dGV4U3ViSW1hZ2UyRFJvYnVzdEFOR0xFKEdDR0xlbnVtLCBp
bnQsIGludCwgaW50LCBHQ0dMc2l6ZWksIEdDR0xzaXplaSwgR0NHTGVudW0sIEdDR0xlbnVtLCBH
Q0dMc2l6ZWksIGNvbnN0IHZvaWQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVy
cm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xD
b21tb246OmNvbXByZXNzZWRUZXhJbWFnZTJEUm9idXN0QU5HTEUoR0NHTGVudW0sIGludCwgR0NH
TGVudW0sIEdDR0xzaXplaSwgR0NHTHNpemVpLCBpbnQsIEdDR0xzaXplaSwgR0NHTHNpemVpLCBj
b25zdCB2b2lkKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFM
SURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmNvbXBy
ZXNzZWRUZXhTdWJJbWFnZTJEUm9idXN0QU5HTEUoR0NHTGVudW0sIGludCwgaW50LCBpbnQsIEdD
R0xzaXplaSwgR0NHTHNpemVpLCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWksIGNvbnN0
IHZvaWQqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9P
UEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Y29tcHJlc3Nl
ZFRleEltYWdlM0RSb2J1c3RBTkdMRShHQ0dMZW51bSwgaW50LCBHQ0dMZW51bSwgR0NHTHNpemVp
LCBHQ0dMc2l6ZWksIEdDR0xzaXplaSwgaW50LCBHQ0dMc2l6ZWksIEdDR0xzaXplaSwgY29uc3Qg
dm9pZCopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09Q
RVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpjb21wcmVzc2Vk
VGV4U3ViSW1hZ2UzRFJvYnVzdEFOR0xFKEdDR0xlbnVtLCBpbnQsIGludCwgaW50LCBpbnQsIEdD
R0xzaXplaSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWksIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xz
aXplaSwgY29uc3Qgdm9pZCopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihH
TF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21t
b246OnRleEltYWdlM0RSb2J1c3RBTkdMRShHQ0dMZW51bSwgaW50LCBpbnQsIEdDR0xzaXplaSwg
R0NHTHNpemVpLCBHQ0dMc2l6ZWksIGludCwgR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dMc2l6ZWks
IGNvbnN0IHZvaWQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lO
VkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OnRl
eFN1YkltYWdlM0RSb2J1c3RBTkdMRShHQ0dMZW51bSwgaW50LCBpbnQsIGludCwgaW50LCBHQ0dM
c2l6ZWksIEdDR0xzaXplaSwgR0NHTHNpemVpLCBHQ0dMZW51bSwgR0NHTGVudW0sIEdDR0xzaXpl
aSwgY29uc3Qgdm9pZCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xf
SU5WQUxJRF9PUEVSQVRJT04pOwotfQotCiB2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6
Z2V0UXVlcnlpdlJvYnVzdEFOR0xFKEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dM
c2l6ZWkgKiwgR0NHTGludCAqKQogewogICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3Io
R0xfSU5WQUxJRF9PUEVSQVRJT04pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5o
CmluZGV4IDk3ZWVkZmI3NDg1YzgzMmY3OTNjOGNmZjBmYTE3ZmJmZmJlNjU4OGQuLmJmZTQ1MjE1
NDNmZjRiMjcyMTM3ZjM0NGNlZTRhMjJkOGZiMjhjNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dM
T3BlbkdMQ29tbW9uLmgKQEAgLTUwLDcgKzUwLDcgQEAgcHVibGljOgogICAgIEdDR0xib29sZWFu
IGlzVmVydGV4QXJyYXlPRVMoUGxhdGZvcm1HTE9iamVjdCkgb3ZlcnJpZGUgPSAwOwogICAgIHZv
aWQgYmluZFZlcnRleEFycmF5T0VTKFBsYXRmb3JtR0xPYmplY3QpIG92ZXJyaWRlID0gMDsKIAot
ICAgIHZvaWQgZHJhd0J1ZmZlcnNFWFQoR0NHTHNpemVpLCBjb25zdCBHQ0dMZW51bSopIG92ZXJy
aWRlID0gMDsKKyAgICB2b2lkIGRyYXdCdWZmZXJzRVhUKEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVt
Pikgb3ZlcnJpZGUgPSAwOwogCiAgICAgU3RyaW5nIGdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VB
TkdMRShQbGF0Zm9ybUdMT2JqZWN0KSBvdmVycmlkZTsKIApAQCAtNzAsMTcgKzcwLDggQEAgcHVi
bGljOgogCiAgICAgLy8gR0xfQU5HTEVfcm9idXN0X2NsaWVudF9tZW1vcnkKICAgICB2b2lkIHJl
YWRQaXhlbHNSb2J1c3RBTkdMRShpbnQgeCwgaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNp
emVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xzaXplaSAqY29sdW1ucywgR0NHTHNpemVpICpy
b3dzLCB2b2lkICpwaXhlbHMpIG92ZXJyaWRlOwotICAgIHZvaWQgdGV4SW1hZ2UyRFJvYnVzdEFO
R0xFKEdDR0xlbnVtIHRhcmdldCwgaW50IGxldmVsLCBpbnQgaW50ZXJuYWxmb3JtYXQsIEdDR0xz
aXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgaW50IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0
LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3Qgdm9pZCAqcGl4ZWxzKSBv
dmVycmlkZTsKICAgICB2b2lkIHRleFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xmbG9hdCAq
cGFyYW1zKSBvdmVycmlkZTsKICAgICB2b2lkIHRleFBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdD
R0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCB0ZXhTdWJJbWFnZTJEUm9idXN0QU5H
TEUoR0NHTGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWwsIGludCB4b2Zmc2V0LCBpbnQgeW9mZnNldCwg
R0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xl
bnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCB2b2lkICpwaXhlbHMpIG92ZXJyaWRl
OwotICAgIHZvaWQgY29tcHJlc3NlZFRleEltYWdlMkRSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJn
ZXQsIGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwg
R0NHTHNpemVpIGhlaWdodCwgaW50IGJvcmRlciwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTHNp
emVpIGJ1ZlNpemUsIGNvbnN0IHZvaWQqIGRhdGEpIG92ZXJyaWRlOwotICAgIHZvaWQgY29tcHJl
c3NlZFRleFN1YkltYWdlMkRSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIGludCBsZXZlbCwg
aW50IHhvZmZzZXQsIGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWln
aHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTHNpemVpIGJ1ZlNp
emUsIGNvbnN0IHZvaWQqIGRhdGEpIG92ZXJyaWRlOwotICAgIHZvaWQgY29tcHJlc3NlZFRleElt
YWdlM0RSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIGludCBsZXZlbCwgR0NHTGVudW0gaW50
ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVp
IGRlcHRoLCBpbnQgYm9yZGVyLCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgY29uc3Qgdm9pZCogZGF0YSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBjb21wcmVzc2VkVGV4U3Vi
SW1hZ2UzRFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgaW50IGxldmVsLCBpbnQgeG9mZnNl
dCwgaW50IHlvZmZzZXQsIGludCB6b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBo
ZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMc2l6ZWkgaW1hZ2VT
aXplLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3Qgdm9pZCogZGF0YSkgb3ZlcnJpZGU7Ci0KLSAg
ICB2b2lkIHRleEltYWdlM0RSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIGludCBsZXZlbCwg
aW50IGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdD
R0xzaXplaSBkZXB0aCwgaW50IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBl
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3Qgdm9pZCAqcGl4ZWxzKSBvdmVycmlkZTsKLSAgICB2
b2lkIHRleFN1YkltYWdlM0RSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIGludCBsZXZlbCwg
aW50IHhvZmZzZXQsIGludCB5b2Zmc2V0LCBpbnQgem9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBH
Q0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVu
dW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IHZvaWQgKnBpeGVscykgb3ZlcnJpZGU7
CiAgICAgdm9pZCBnZXRRdWVyeWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51
bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpw
YXJhbXMpIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0UXVlcnlPYmplY3R1aXZSb2J1c3RBTkdMRShH
Q0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkg
Kmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFtcykgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRCdWZmZXJQ
b2ludGVydlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgdm9pZCAqKnBhcmFtcykgb3ZlcnJpZGU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0
ZW5zaW9uc0dMT3BlbkdMRVMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmNwcAppbmRleCBkMjhmNGEwMzFlYmRjNDgzODc1
ZDM5ODQ4N2Q1Nzg3NDhmZGU0N2U3Li4zNmMzZWYzOGY5OGI5OWFmMDExNTA2OTkxNDI3YmFjZWZj
YmI4YWMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5jcHAKQEAgLTE4MCw3ICsxODAs
NyBAQCB2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTEVTOjpiaW5kVmVydGV4QXJyYXlPRVMoUGxhdGZv
cm1HTE9iamVjdCBhcnJheSkKICAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihH
TF9JTlZBTElEX09QRVJBVElPTik7CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMRVM6OmRy
YXdCdWZmZXJzRVhUKEdDR0xzaXplaSAvKiBuICovLCBjb25zdCBHQ0dMZW51bSogLyogYnVmcyAq
LykKK3ZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMRVM6OmRyYXdCdWZmZXJzRVhUKEdDR0xTcGFuPGNv
bnN0IEdDR0xlbnVtPiAvKiBidWZzICovKQogewogICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQgdGhl
IHN1cHBvcnQuCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVT
LmgKaW5kZXggYzc0ODI1YzgxZWFkMGE3NDYwYWVhMWRhZjFjOWFlMTgzNzAyOTM5Ni4uMDE3YTQ1
YjczOThkMDk5MmVkMTQ3NjdmMDc2N2UwNGI0NjQxNjI4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9w
ZW5HTEVTLmgKQEAgLTg1LDcgKzg1LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGVsZXRlVmVydGV4
QXJyYXlPRVMoUGxhdGZvcm1HTE9iamVjdCkgb3ZlcnJpZGU7CiAgICAgR0NHTGJvb2xlYW4gaXNW
ZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybUdMT2JqZWN0KSBvdmVycmlkZTsKICAgICB2b2lkIGJpbmRW
ZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybUdMT2JqZWN0KSBvdmVycmlkZTsKLSAgICB2b2lkIGRyYXdC
dWZmZXJzRVhUKEdDR0xzaXplaSwgY29uc3QgR0NHTGVudW0qKSBvdmVycmlkZTsKKyAgICB2b2lk
IGRyYXdCdWZmZXJzRVhUKEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVtPikgb3ZlcnJpZGU7CiAKICAg
ICB2b2lkIGRyYXdBcnJheXNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwg
R0NHTHNpemVpIGNvdW50LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSBvdmVycmlkZTsKICAgICB2b2lk
IGRyYXdFbGVtZW50c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdD
R0xlbnVtIHR5cGUsIGxvbmcgbG9uZyBvZmZzZXQsIEdDR0xzaXplaSBwcmltY291bnQpIG92ZXJy
aWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Blbmds
L0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5jcHAKaW5kZXggZjE1YjdmMjk1
YTk1MWIyZDg5NGVjMGZhOTE5NTRlOTZmNDdhNGMxMy4uODQyYjZhYmY3YjY2YTUxODk5ZmVmMjky
ODNkOGI5ZGQ5ODcwNGRlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuY3Bw
CkBAIC03Niw4ICs3Niw4IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnRleEltYWdl
MkRSZXNvdXJjZVNhZmUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxlCiB7CiAgICAgQVNTRVJU
KHVucGFja0FsaWdubWVudCA9PSAxIHx8IHVucGFja0FsaWdubWVudCA9PSAyIHx8IHVucGFja0Fs
aWdubWVudCA9PSA0IHx8IHVucGFja0FsaWdubWVudCA9PSA4KTsKICAgICBVbmlxdWVBcnJheTx1
bnNpZ25lZCBjaGFyPiB6ZXJvOworICAgIHVuc2lnbmVkIHNpemUgPSAwOwogICAgIGlmICh3aWR0
aCA+IDAgJiYgaGVpZ2h0ID4gMCkgewotICAgICAgICB1bnNpZ25lZCBzaXplOwogICAgICAgICBQ
aXhlbFN0b3JlUGFyYW1zIHBhcmFtczsKICAgICAgICAgcGFyYW1zLmFsaWdubWVudCA9IHVucGFj
a0FsaWdubWVudDsKICAgICAgICAgR0NHTGVudW0gZXJyb3IgPSBjb21wdXRlSW1hZ2VTaXplSW5C
eXRlcyhmb3JtYXQsIHR5cGUsIHdpZHRoLCBoZWlnaHQsIDEsIHBhcmFtcywgJnNpemUsIG51bGxw
dHIsIG51bGxwdHIpOwpAQCAtOTIsNyArOTIsNyBAQCBib29sIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjp0ZXhJbWFnZTJEUmVzb3VyY2VTYWZlKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZQog
ICAgICAgICB9CiAgICAgICAgIG1lbXNldCh6ZXJvLmdldCgpLCAwLCBzaXplKTsKICAgICB9Ci0g
ICAgcmV0dXJuIHRleEltYWdlMkQodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRo
LCBoZWlnaHQsIGJvcmRlciwgZm9ybWF0LCB0eXBlLCB6ZXJvLmdldCgpKTsKKyAgICByZXR1cm4g
dGV4SW1hZ2UyRCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwg
Ym9yZGVyLCBmb3JtYXQsIHR5cGUsIG1ha2VHQ0dMU3Bhbih6ZXJvLmdldCgpLCBzaXplKSk7CiB9
CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaAppbmRleCAwOTkyNjc4
YjhkYzFlMTgzZDk4MjU5Yjc3MzE1YzM2MTIxNzAxMzBmLi5jMjU1YjBjMTJmNGZjYmZhNDZkYjAy
ZDU1YzgwYjRjYjc3ZDE3YjcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaApA
QCAtMTE5LDkgKzExOSw2IEBAIHB1YmxpYzoKICAgICAvLyBXaXRoIG11bHRpc2FtcGxpbmcgb24s
IGJsaXQgZnJvbSBtdWx0aXNhbXBsZUZCTyB0byByZWd1bGFyIEZCTy4KICAgICB2b2lkIHByZXBh
cmVUZXh0dXJlKCk7CiAKLSAgICAvLyBFcXVpdmFsZW50IHRvIDo6Z2xUZXhJbWFnZTJEKCkuIEFs
bG93cyBwaXhlbHM9PTAgd2l0aCBubyBhbGxvY2F0aW9uLgotICAgIHZvaWQgdGV4SW1hZ2UyRERp
cmVjdChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9y
bWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBH
Q0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIGNvbnN0IHZvaWQqIHBpeGVscyk7Ci0KICAg
ICAvLyBHZXQgYW4gYXR0cmlidXRlIGxvY2F0aW9uIHdpdGhvdXQgY2hlY2tpbmcgdGhlIG5hbWUg
LT4gbWFuZ2xlZG5hbWUgbWFwcGluZy4KICAgICBpbnQgZ2V0QXR0cmliTG9jYXRpb25EaXJlY3Qo
UGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBjb25zdCBTdHJpbmcmIG5hbWUpOwogCkBAIC0xMjks
NiArMTI2LDkgQEAgcHVibGljOgogICAgIHZvaWQgY29tcGlsZVNoYWRlckRpcmVjdChQbGF0Zm9y
bUdMT2JqZWN0KTsKIAogI2lmICFVU0UoQU5HTEUpCisgICAgLy8gRXF1aXZhbGVudCB0byA6Omds
VGV4SW1hZ2UyRCgpLiBBbGxvd3MgcGl4ZWxzPT0wIHdpdGggbm8gYWxsb2NhdGlvbi4KKyAgICB2
b2lkIHRleEltYWdlMkREaXJlY3QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dM
ZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBH
Q0dMaW50IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBjb25zdCB2b2lk
KiBwaXhlbHMpOworCiAgICAgLy8gSGVscGVyIHRvIHRleEltYWdlMkQgd2l0aCBwaXhlbD09MCBj
YXNlOiBwaXhlbHMgYXJlIGluaXRpYWxpemVkIHRvIDAuCiAgICAgLy8gUmV0dXJuIHRydWUgaWYg
bm8gR0wgZXJyb3IgaXMgc3ludGhlc2l6ZWQuCiAgICAgLy8gQnkgZGVmYXVsdCwgYWxpZ25tZW50
IGlzIDQsIHRoZSBPcGVuR0wgZGVmYXVsdCBzZXR0aW5nLgpAQCAtMTU1LDggKzE1NSw4IEBAIHB1
YmxpYzoKICAgICB2b2lkIGJsZW5kRnVuY1NlcGFyYXRlKEdDR0xlbnVtIHNyY1JHQiwgR0NHTGVu
dW0gZHN0UkdCLCBHQ0dMZW51bSBzcmNBbHBoYSwgR0NHTGVudW0gZHN0QWxwaGEpIGZpbmFsOwog
CiAgICAgdm9pZCBidWZmZXJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpcHRyIHNpemUs
IEdDR0xlbnVtIHVzYWdlKSBmaW5hbDsKLSAgICB2b2lkIGJ1ZmZlckRhdGEoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMc2l6ZWlwdHIgc2l6ZSwgY29uc3Qgdm9pZCogZGF0YSwgR0NHTGVudW0gdXNhZ2Up
IGZpbmFsOwotICAgIHZvaWQgYnVmZmVyU3ViRGF0YShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnRw
dHIgb2Zmc2V0LCBHQ0dMc2l6ZWlwdHIgc2l6ZSwgY29uc3Qgdm9pZCogZGF0YSkgZmluYWw7Cisg
ICAgdm9pZCBidWZmZXJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTFNwYW48Y29uc3QgR0NHTHZv
aWQ+IGRhdGEsIEdDR0xlbnVtIHVzYWdlKSBmaW5hbDsKKyAgICB2b2lkIGJ1ZmZlclN1YkRhdGEo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50cHRyIG9mZnNldCwgR0NHTFNwYW48Y29uc3QgR0NHTHZv
aWQ+IGRhdGEpIGZpbmFsOwogCiAgICAgR0NHTGVudW0gY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhH
Q0dMZW51bSB0YXJnZXQpIGZpbmFsOwogICAgIHZvaWQgY2xlYXIoR0NHTGJpdGZpZWxkIG1hc2sp
IGZpbmFsOwpAQCAtMTY2LDEwICsxNjYsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBjb2xvck1hc2so
R0NHTGJvb2xlYW4gcmVkLCBHQ0dMYm9vbGVhbiBncmVlbiwgR0NHTGJvb2xlYW4gYmx1ZSwgR0NH
TGJvb2xlYW4gYWxwaGEpIGZpbmFsOwogICAgIHZvaWQgY29tcGlsZVNoYWRlcihQbGF0Zm9ybUdM
T2JqZWN0KSBmaW5hbDsKIAotI2lmICFVU0UoQU5HTEUpCi0gICAgdm9pZCBjb21wcmVzc2VkVGV4
SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFs
Zm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVy
LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBjb25zdCB2b2lkKiBkYXRhKTsKLSAgICB2b2lkIGNvbXBy
ZXNzZWRUZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGlu
dCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhl
aWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBjb25zdCB2b2lkKiBk
YXRhKTsKLSNlbmRpZgogICAgIHZvaWQgY29weVRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTGludCB4LCBHQ0dMaW50
IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIpIGZp
bmFsOwogICAgIHZvaWQgY29weVRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50
IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTGludCB4LCBHQ0dM
aW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkgZmluYWw7CiAgICAgdm9p
ZCBjdWxsRmFjZShHQ0dMZW51bSBtb2RlKSBmaW5hbDsKQEAgLTI1MywzMCArMjQ5LDM3IEBAIHB1
YmxpYzoKICAgICB2b2lkIHN0ZW5jaWxPcChHQ0dMZW51bSBmYWlsLCBHQ0dMZW51bSB6ZmFpbCwg
R0NHTGVudW0genBhc3MpIGZpbmFsOwogICAgIHZvaWQgc3RlbmNpbE9wU2VwYXJhdGUoR0NHTGVu
dW0gZmFjZSwgR0NHTGVudW0gZmFpbCwgR0NHTGVudW0gemZhaWwsIEdDR0xlbnVtIHpwYXNzKSBm
aW5hbDsKIAotICAgIGJvb2wgdGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2
ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBo
ZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIGNv
bnN0IHZvaWQqIHBpeGVscykgZmluYWw7CisgICAgdm9pZCB0ZXhJbWFnZTJEKEdDR0xlbnVtIHRh
cmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3
aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwg
R0NHTGVudW0gdHlwZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IHBpeGVscykgZmluYWw7Cisg
ICAgdm9pZCB0ZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVu
dW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NH
TGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBv
ZmZzZXQpIGZpbmFsOworICAgIHZvaWQgdGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdD
R0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkg
d2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwg
R0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IHBpeGVscykgZmluYWw7CisgICAgdm9pZCB0ZXhTdWJJ
bWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBH
Q0dMaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVu
dW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCkgZmluYWw7CisgICAg
dm9pZCBjb21wcmVzc2VkVGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWws
IEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWln
aHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMU3Bhbjxjb25zdCBH
Q0dMdm9pZD4gZGF0YSkgZmluYWw7CisgICAgdm9pZCBjb21wcmVzc2VkVGV4SW1hZ2UyRChHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dM
c2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMc2l6ZWkg
aW1hZ2VTaXplLCBHQ0dMaW50cHRyIG9mZnNldCkgZmluYWw7IAorICAgIHZvaWQgY29tcHJlc3Nl
ZFRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhv
ZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0
LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xTcGFuPGNvbnN0IEdD
R0x2b2lkPiBkYXRhKSBmaW5hbDsKKyAgICB2b2lkIGNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKEdD
R0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlv
ZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0
LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMaW50cHRyIG9mZnNldCkgZmluYWw7CisKICAgICB2
b2lkIHRleFBhcmFtZXRlcmYoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGZs
b2F0IHBhcmFtKSBmaW5hbDsKICAgICB2b2lkIHRleFBhcmFtZXRlcmkoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCBwYXJhbSkgZmluYWw7Ci0gICAgdm9pZCB0ZXhTdWJJ
bWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBH
Q0dMaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVu
dW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBjb25zdCB2b2lkKiBwaXhlbHMpIGZpbmFsOwogCiAg
ICAgdm9pZCB1bmlmb3JtMWYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGZsb2F0IHgpIGZpbmFsOwot
ICAgIHZvaWQgdW5pZm9ybTFmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWksIGNvbnN0IEdD
R0xmbG9hdCogdikgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtMWZ2KEdDR0xpbnQgbG9jYXRpb24s
IEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gdikgZmluYWw7CiAgICAgdm9pZCB1bmlmb3JtMWko
R0NHTGludCBsb2NhdGlvbiwgR0NHTGludCB4KSBmaW5hbDsKLSAgICB2b2lkIHVuaWZvcm0xaXYo
R0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpLCBjb25zdCBHQ0dMaW50KiB2KSBmaW5hbDsKKyAg
ICB2b2lkIHVuaWZvcm0xaXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGlu
dD4gdikgZmluYWw7CiAgICAgdm9pZCB1bmlmb3JtMmYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGZs
b2F0IHgsIEdDR0xmbG9hdCB5KSBmaW5hbDsKLSAgICB2b2lkIHVuaWZvcm0yZnYoR0NHTGludCBs
b2NhdGlvbiwgR0NHTHNpemVpLCBjb25zdCBHQ0dMZmxvYXQqIHYpIGZpbmFsOworICAgIHZvaWQg
dW5pZm9ybTJmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IHYp
IGZpbmFsOwogICAgIHZvaWQgdW5pZm9ybTJpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xpbnQgeCwg
R0NHTGludCB5KSBmaW5hbDsKLSAgICB2b2lkIHVuaWZvcm0yaXYoR0NHTGludCBsb2NhdGlvbiwg
R0NHTHNpemVpLCBjb25zdCBHQ0dMaW50KiB2KSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm0yaXYo
R0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gdikgZmluYWw7CiAgICAg
dm9pZCB1bmlmb3JtM2YoR0NHTGludCBsb2NhdGlvbiwgR0NHTGZsb2F0IHgsIEdDR0xmbG9hdCB5
LCBHQ0dMZmxvYXQgeikgZmluYWw7Ci0gICAgdm9pZCB1bmlmb3JtM2Z2KEdDR0xpbnQgbG9jYXRp
b24sIEdDR0xzaXplaSwgY29uc3QgR0NHTGZsb2F0KiB2KSBmaW5hbDsKKyAgICB2b2lkIHVuaWZv
cm0zZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiB2KSBmaW5h
bDsKICAgICB2b2lkIHVuaWZvcm0zaShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMaW50IHgsIEdDR0xp
bnQgeSwgR0NHTGludCB6KSBmaW5hbDsKLSAgICB2b2lkIHVuaWZvcm0zaXYoR0NHTGludCBsb2Nh
dGlvbiwgR0NHTHNpemVpLCBjb25zdCBHQ0dMaW50KiB2KSBmaW5hbDsKKyAgICB2b2lkIHVuaWZv
cm0zaXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gdikgZmluYWw7
CiAgICAgdm9pZCB1bmlmb3JtNGYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGZsb2F0IHgsIEdDR0xm
bG9hdCB5LCBHQ0dMZmxvYXQgeiwgR0NHTGZsb2F0IHcpIGZpbmFsOwotICAgIHZvaWQgdW5pZm9y
bTRmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWksIGNvbnN0IEdDR0xmbG9hdCogdikgZmlu
YWw7CisgICAgdm9pZCB1bmlmb3JtNGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0
IEdDR0xmbG9hdD4gdikgZmluYWw7CiAgICAgdm9pZCB1bmlmb3JtNGkoR0NHTGludCBsb2NhdGlv
biwgR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xpbnQgeiwgR0NHTGludCB3KSBmaW5hbDsKLSAg
ICB2b2lkIHVuaWZvcm00aXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpLCBjb25zdCBHQ0dM
aW50KiB2KSBmaW5hbDsKLSAgICB2b2lkIHVuaWZvcm1NYXRyaXgyZnYoR0NHTGludCBsb2NhdGlv
biwgR0NHTHNpemVpLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogdmFs
dWUpIGZpbmFsOwotICAgIHZvaWQgdW5pZm9ybU1hdHJpeDNmdihHQ0dMaW50IGxvY2F0aW9uLCBH
Q0dMc2l6ZWksIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiB2YWx1ZSkg
ZmluYWw7Ci0gICAgdm9pZCB1bmlmb3JtTWF0cml4NGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xz
aXplaSwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHQ0dMZmxvYXQqIHZhbHVlKSBmaW5h
bDsKKyAgICB2b2lkIHVuaWZvcm00aXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3Qg
R0NHTGludD4gdikgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtTWF0cml4MmZ2KEdDR0xpbnQgbG9j
YXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiB2
YWx1ZSkgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtTWF0cml4M2Z2KEdDR0xpbnQgbG9jYXRpb24s
IEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiB2YWx1ZSkg
ZmluYWw7CisgICAgdm9pZCB1bmlmb3JtTWF0cml4NGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xi
b29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiB2YWx1ZSkgZmluYWw7
CiAKICAgICB2b2lkIHVzZVByb2dyYW0oUGxhdGZvcm1HTE9iamVjdCkgZmluYWw7CiAgICAgdm9p
ZCB2YWxpZGF0ZVByb2dyYW0oUGxhdGZvcm1HTE9iamVjdCkgZmluYWw7CkBAIC0yODYsMTMgKzI4
OSwxMyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogICAgIHZvaWQgdmVydGV4QXR0cmliMWYoR0NHTHVp
bnQgaW5kZXgsIEdDR0xmbG9hdCB4KSBmaW5hbDsKLSAgICB2b2lkIHZlcnRleEF0dHJpYjFmdihH
Q0dMdWludCBpbmRleCwgY29uc3QgR0NHTGZsb2F0KiB2YWx1ZXMpIGZpbmFsOworICAgIHZvaWQg
dmVydGV4QXR0cmliMWZ2KEdDR0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQs
IDE+IHZhbHVlcykgZmluYWw7CiAgICAgdm9pZCB2ZXJ0ZXhBdHRyaWIyZihHQ0dMdWludCBpbmRl
eCwgR0NHTGZsb2F0IHgsIEdDR0xmbG9hdCB5KSBmaW5hbDsKLSAgICB2b2lkIHZlcnRleEF0dHJp
YjJmdihHQ0dMdWludCBpbmRleCwgY29uc3QgR0NHTGZsb2F0KiB2YWx1ZXMpIGZpbmFsOworICAg
IHZvaWQgdmVydGV4QXR0cmliMmZ2KEdDR0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dM
ZmxvYXQsIDI+IHZhbHVlcykgZmluYWw7CiAgICAgdm9pZCB2ZXJ0ZXhBdHRyaWIzZihHQ0dMdWlu
dCBpbmRleCwgR0NHTGZsb2F0IHgsIEdDR0xmbG9hdCB5LCBHQ0dMZmxvYXQgeikgZmluYWw7Ci0g
ICAgdm9pZCB2ZXJ0ZXhBdHRyaWIzZnYoR0NHTHVpbnQgaW5kZXgsIGNvbnN0IEdDR0xmbG9hdCog
dmFsdWVzKSBmaW5hbDsKKyAgICB2b2lkIHZlcnRleEF0dHJpYjNmdihHQ0dMdWludCBpbmRleCwg
R0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0LCAzPiB2YWx1ZXMpIGZpbmFsOwogICAgIHZvaWQgdmVy
dGV4QXR0cmliNGYoR0NHTHVpbnQgaW5kZXgsIEdDR0xmbG9hdCB4LCBHQ0dMZmxvYXQgeSwgR0NH
TGZsb2F0IHosIEdDR0xmbG9hdCB3KSBmaW5hbDsKLSAgICB2b2lkIHZlcnRleEF0dHJpYjRmdihH
Q0dMdWludCBpbmRleCwgY29uc3QgR0NHTGZsb2F0KiB2YWx1ZXMpIGZpbmFsOworICAgIHZvaWQg
dmVydGV4QXR0cmliNGZ2KEdDR0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQs
IDQ+IHZhbHVlcykgZmluYWw7CiAgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJQb2ludGVyKEdDR0x1aW50
IGluZGV4LCBHQ0dMaW50IHNpemUsIEdDR0xlbnVtIHR5cGUsIEdDR0xib29sZWFuIG5vcm1hbGl6
ZWQsIEdDR0xzaXplaSBzdHJpZGUsIEdDR0xpbnRwdHIgb2Zmc2V0KSBmaW5hbDsKIAogICAgIHZv
aWQgdmlld3BvcnQoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNp
emVpIGhlaWdodCkgZmluYWw7CkBAIC0zMjMsOCArMzI2LDggQEAgcHVibGljOgogCiAgICAgdm9p
ZCBibGl0RnJhbWVidWZmZXIoR0NHTGludCBzcmNYMCwgR0NHTGludCBzcmNZMCwgR0NHTGludCBz
cmNYMSwgR0NHTGludCBzcmNZMSwgR0NHTGludCBkc3RYMCwgR0NHTGludCBkc3RZMCwgR0NHTGlu
dCBkc3RYMSwgR0NHTGludCBkc3RZMSwgR0NHTGJpdGZpZWxkIG1hc2ssIEdDR0xlbnVtIGZpbHRl
cikgZmluYWw7CiAgICAgdm9pZCBmcmFtZWJ1ZmZlclRleHR1cmVMYXllcihHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xlbnVtIGF0dGFjaG1lbnQsIFBsYXRmb3JtR0xPYmplY3QgdGV4dHVyZSwgR0NHTGlu
dCBsZXZlbCwgR0NHTGludCBsYXllcikgZmluYWw7Ci0gICAgdm9pZCBpbnZhbGlkYXRlRnJhbWVi
dWZmZXIoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgbnVtQXR0YWNobWVudHMsIGNvbnN0IEdD
R0xlbnVtKiBhdHRhY2htZW50cykgZmluYWw7Ci0gICAgdm9pZCBpbnZhbGlkYXRlU3ViRnJhbWVi
dWZmZXIoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgbnVtQXR0YWNobWVudHMsIGNvbnN0IEdD
R0xlbnVtKiBhdHRhY2htZW50cywgR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0
aCwgR0NHTHNpemVpIGhlaWdodCkgZmluYWw7CisgICAgdm9pZCBpbnZhbGlkYXRlRnJhbWVidWZm
ZXIoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4gYXR0YWNobWVudHMp
IGZpbmFsOworICAgIHZvaWQgaW52YWxpZGF0ZVN1YkZyYW1lYnVmZmVyKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+IGF0dGFjaG1lbnRzLCBHQ0dMaW50IHgsIEdDR0xp
bnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KSBmaW5hbDsKICAgICB2b2lk
IHJlYWRCdWZmZXIoR0NHTGVudW0gc3JjKSBmaW5hbDsKIAogICAgIC8vIGdldEludGVybmFsRm9y
bWF0UGFyYW1ldGVyCkBAIC0zMzQsNyArMzM3LDE1IEBAIHB1YmxpYzoKICAgICB2b2lkIHRleFN0
b3JhZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaSBsZXZlbHMsIEdDR0xlbnVtIGludGVy
bmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpIGZpbmFsOwogICAg
IHZvaWQgdGV4U3RvcmFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpIGxldmVscywgR0NH
TGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwg
R0NHTHNpemVpIGRlcHRoKSBmaW5hbDsKIAorICAgIHZvaWQgdGV4SW1hZ2UzRChHQ0dMZW51bSB0
YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3
aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMaW50IGJvcmRlciwg
R0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4g
cGl4ZWxzKSBmaW5hbDsKKyAgICB2b2lkIHRleEltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
aW50IGxldmVsLCBHQ0dMaW50IGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xz
aXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGludCBib3JkZXIsIEdDR0xlbnVtIGZv
cm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpIGZpbmFsOworICAgIHZvaWQg
dGV4U3ViSW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9m
ZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMaW50IHpvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwg
R0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xl
bnVtIHR5cGUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBwaXhlbHMpIGZpbmFsOworICAgIHZv
aWQgdGV4U3ViSW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQg
eG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMaW50IHpvZmZzZXQsIEdDR0xzaXplaSB3aWR0
aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMZW51bSBmb3JtYXQsIEdD
R0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KSBmaW5hbDsKICAgICB2b2lkIGNvcHlUZXhT
dWJJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0
LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xpbnQgem9mZnNldCwgR0NHTGludCB4LCBHQ0dMaW50IHks
IEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkgZmluYWw7CisgICAgdm9pZCBjb21w
cmVzc2VkVGV4SW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVt
IGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xz
aXplaSBkZXB0aCwgR0NHTGludCBib3JkZXIsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xTcGFu
PGNvbnN0IEdDR0x2b2lkPiBkYXRhKSBmaW5hbDsKKyAgICB2b2lkIGNvbXByZXNzZWRUZXhJbWFn
ZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3Jt
YXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBH
Q0dMaW50IGJvcmRlciwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTGludHB0ciBvZmZzZXQpIGZp
bmFsOworICAgIHZvaWQgY29tcHJlc3NlZFRleFN1YkltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTGludCB6
b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0
aCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMU3Bhbjxjb25zdCBH
Q0dMdm9pZD4gZGF0YSkgZmluYWw7CisgICAgdm9pZCBjb21wcmVzc2VkVGV4U3ViSW1hZ2UzRChH
Q0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5
b2Zmc2V0LCBHQ0dMaW50IHpvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdo
dCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFnZVNpemUs
IEdDR0xpbnRwdHIgb2Zmc2V0KSBmaW5hbDsKIAogICAgIEdDR0xpbnQgZ2V0RnJhZ0RhdGFMb2Nh
dGlvbihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFN0cmluZyYgbmFtZSkgZmluYWw7
CiAKQEAgLTM0MiwyOCArMzUzLDI4IEBAIHB1YmxpYzoKICAgICB2b2lkIHVuaWZvcm0ydWkoR0NH
TGludCBsb2NhdGlvbiwgR0NHTHVpbnQgdjAsIEdDR0x1aW50IHYxKSBmaW5hbDsKICAgICB2b2lk
IHVuaWZvcm0zdWkoR0NHTGludCBsb2NhdGlvbiwgR0NHTHVpbnQgdjAsIEdDR0x1aW50IHYxLCBH
Q0dMdWludCB2MikgZmluYWw7CiAgICAgdm9pZCB1bmlmb3JtNHVpKEdDR0xpbnQgbG9jYXRpb24s
IEdDR0x1aW50IHYwLCBHQ0dMdWludCB2MSwgR0NHTHVpbnQgdjIsIEdDR0x1aW50IHYzKSBmaW5h
bDsKLSAgICB2b2lkIHVuaWZvcm0xdWl2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0x1aW50
KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkgZmluYWw7Ci0g
ICAgdm9pZCB1bmlmb3JtMnVpdihHQ0dMaW50IGxvY2F0aW9uLCBjb25zdCBHQ0dMdWludCogZGF0
YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpIGZpbmFsOwotICAgIHZv
aWQgdW5pZm9ybTN1aXYoR0NHTGludCBsb2NhdGlvbiwgY29uc3QgR0NHTHVpbnQqIGRhdGEsIEdD
R0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKSBmaW5hbDsKLSAgICB2b2lkIHVu
aWZvcm00dWl2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0x1aW50KiBkYXRhLCBHQ0dMdWlu
dCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkgZmluYWw7Ci0gICAgdm9pZCB1bmlmb3Jt
TWF0cml4MngzZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25z
dCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3Ro
KSBmaW5hbDsKLSAgICB2b2lkIHVuaWZvcm1NYXRyaXgzeDJmdihHQ0dMaW50IGxvY2F0aW9uLCBH
Q0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3Jj
T2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpIGZpbmFsOwotICAgIHZvaWQgdW5pZm9ybU1hdHJp
eDJ4NGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NH
TGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkgZmlu
YWw7Ci0gICAgdm9pZCB1bmlmb3JtTWF0cml4NHgyZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJv
b2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNl
dCwgR0NHTHVpbnQgc3JjTGVuZ3RoKSBmaW5hbDsKLSAgICB2b2lkIHVuaWZvcm1NYXRyaXgzeDRm
dihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9h
dCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpIGZpbmFsOwot
ICAgIHZvaWQgdW5pZm9ybU1hdHJpeDR4M2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFu
IHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdD
R0x1aW50IHNyY0xlbmd0aCkgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtMXVpdihHQ0dMaW50IGxv
Y2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdWludD4pIGZpbmFsOworICAgIHZvaWQgdW5pZm9y
bTJ1aXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTHVpbnQ+KSBmaW5hbDsK
KyAgICB2b2lkIHVuaWZvcm0zdWl2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdD
R0x1aW50PikgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtNHVpdihHQ0dMaW50IGxvY2F0aW9uLCBH
Q0dMU3Bhbjxjb25zdCBHQ0dMdWludD4pIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybU1hdHJpeDJ4
M2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29u
c3QgR0NHTGZsb2F0PiBkYXRhKSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm1NYXRyaXgzeDJmdihH
Q0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdD
R0xmbG9hdD4gZGF0YSkgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtTWF0cml4Mng0ZnYoR0NHTGlu
dCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxv
YXQ+IGRhdGEpIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybU1hdHJpeDR4MmZ2KEdDR0xpbnQgbG9j
YXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiBk
YXRhKSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm1NYXRyaXgzeDRmdihHQ0dMaW50IGxvY2F0aW9u
LCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gZGF0YSkg
ZmluYWw7CisgICAgdm9pZCB1bmlmb3JtTWF0cml4NHgzZnYoR0NHTGludCBsb2NhdGlvbiwgR0NH
TGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEpIGZpbmFs
OwogICAgIHZvaWQgdmVydGV4QXR0cmliSTRpKEdDR0x1aW50IGluZGV4LCBHQ0dMaW50IHgsIEdD
R0xpbnQgeSwgR0NHTGludCB6LCBHQ0dMaW50IHcpIGZpbmFsOwotICAgIHZvaWQgdmVydGV4QXR0
cmliSTRpdihHQ0dMdWludCBpbmRleCwgY29uc3QgR0NHTGludCogdmFsdWVzKSBmaW5hbDsKKyAg
ICB2b2lkIHZlcnRleEF0dHJpYkk0aXYoR0NHTHVpbnQgaW5kZXgsIEdDR0xTcGFuPGNvbnN0IEdD
R0xpbnQsIDQ+IHZhbHVlcykgZmluYWw7CiAgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJJNHVpKEdDR0x1
aW50IGluZGV4LCBHQ0dMdWludCB4LCBHQ0dMdWludCB5LCBHQ0dMdWludCB6LCBHQ0dMdWludCB3
KSBmaW5hbDsKLSAgICB2b2lkIHZlcnRleEF0dHJpYkk0dWl2KEdDR0x1aW50IGluZGV4LCBjb25z
dCBHQ0dMdWludCogdmFsdWVzKSBmaW5hbDsKKyAgICB2b2lkIHZlcnRleEF0dHJpYkk0dWl2KEdD
R0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdWludCwgND4gdmFsdWVzKSBmaW5hbDsK
ICAgICB2b2lkIHZlcnRleEF0dHJpYklQb2ludGVyKEdDR0x1aW50IGluZGV4LCBHQ0dMaW50IHNp
emUsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBzdHJpZGUsIEdDR0xpbnRwdHIgb2Zmc2V0KSBm
aW5hbDsKIAogICAgIHZvaWQgZHJhd1JhbmdlRWxlbWVudHMoR0NHTGVudW0gbW9kZSwgR0NHTHVp
bnQgc3RhcnQsIEdDR0x1aW50IGVuZCwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBH
Q0dMaW50cHRyIG9mZnNldCkgZmluYWw7CiAKLSAgICB2b2lkIGRyYXdCdWZmZXJzKEdDR0xzaXpl
aSBuLCBjb25zdCBHQ0dMZW51bSogYnVmcykgZmluYWw7Ci0gICAgdm9pZCBjbGVhckJ1ZmZlcml2
KEdDR0xlbnVtIGJ1ZmZlciwgR0NHTGludCBkcmF3YnVmZmVyLCBjb25zdCBHQ0dMaW50KiB2YWx1
ZXMsIEdDR0x1aW50IHNyY09mZnNldCkgZmluYWw7Ci0gICAgdm9pZCBjbGVhckJ1ZmZlcnVpdihH
Q0dMZW51bSBidWZmZXIsIEdDR0xpbnQgZHJhd2J1ZmZlciwgY29uc3QgR0NHTHVpbnQqIHZhbHVl
cywgR0NHTHVpbnQgc3JjT2Zmc2V0KSBmaW5hbDsKLSAgICB2b2lkIGNsZWFyQnVmZmVyZnYoR0NH
TGVudW0gYnVmZmVyLCBHQ0dMaW50IGRyYXdidWZmZXIsIGNvbnN0IEdDR0xmbG9hdCogdmFsdWVz
LCBHQ0dMdWludCBzcmNPZmZzZXQpIGZpbmFsOworICAgIHZvaWQgZHJhd0J1ZmZlcnMoR0NHTFNw
YW48Y29uc3QgR0NHTGVudW0+IGJ1ZnMpIGZpbmFsOworICAgIHZvaWQgY2xlYXJCdWZmZXJpdihH
Q0dMZW51bSBidWZmZXIsIEdDR0xpbnQgZHJhd2J1ZmZlciwgR0NHTFNwYW48Y29uc3QgR0NHTGlu
dD4gdmFsdWVzKSBmaW5hbDsKKyAgICB2b2lkIGNsZWFyQnVmZmVydWl2KEdDR0xlbnVtIGJ1ZmZl
ciwgR0NHTGludCBkcmF3YnVmZmVyLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdWludD4gdmFsdWVzKSBm
aW5hbDsKKyAgICB2b2lkIGNsZWFyQnVmZmVyZnYoR0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50IGRy
YXdidWZmZXIsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gdmFsdWVzKSBmaW5hbDsKICAgICB2
b2lkIGNsZWFyQnVmZmVyZmkoR0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50IGRyYXdidWZmZXIsIEdD
R0xmbG9hdCBkZXB0aCwgR0NHTGludCBzdGVuY2lsKSBmaW5hbDsKIAogICAgIFBsYXRmb3JtR0xP
YmplY3QgY3JlYXRlUXVlcnkoKSBmaW5hbDsKQEAgLTQxNiwyNyArNDI3LDYgQEAgcHVibGljOgog
ICAgIFN0cmluZyBnZXRBY3RpdmVVbmlmb3JtQmxvY2tOYW1lKFBsYXRmb3JtR0xPYmplY3QgcHJv
Z3JhbSwgR0NHTHVpbnQgdW5pZm9ybUJsb2NrSW5kZXgpIGZpbmFsOwogICAgIHZvaWQgdW5pZm9y
bUJsb2NrQmluZGluZyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1aW50IHVuaWZvcm1C
bG9ja0luZGV4LCBHQ0dMdWludCB1bmlmb3JtQmxvY2tCaW5kaW5nKSBmaW5hbDsKIAotI2lmICFV
U0UoQU5HTEUpCi0gICAgdm9pZCBjb21wcmVzc2VkVGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQs
IEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgs
IEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBH
Q0dMaW50cHRyIG9mZnNldCk7Ci0gICAgdm9pZCBjb21wcmVzc2VkVGV4SW1hZ2UyRChHQ0dMZW51
bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6
ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBjb25zdCB2b2lkKiBz
cmNEYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aE92ZXJyaWRlKTsK
LQotICAgIHZvaWQgY29tcHJlc3NlZFRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
aW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdp
ZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFnZVNp
emUsIEdDR0xpbnRwdHIgb2Zmc2V0KTsKLSAgICB2b2lkIGNvbXByZXNzZWRUZXhTdWJJbWFnZTJE
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50
IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9y
bWF0LCBjb25zdCB2b2lkKiBzcmNEYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNy
Y0xlbmd0aE92ZXJyaWRlKTsKLSNlbmRpZgotCi0gICAgdm9pZCB1bmlmb3JtMWZ2KEdDR0xpbnQg
bG9jYXRpb24sIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dM
dWludCBzcmNMZW5ndGgpIGZpbmFsOwotICAgIHZvaWQgdW5pZm9ybTJmdihHQ0dMaW50IGxvY2F0
aW9uLCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQg
c3JjTGVuZ3RoKSBmaW5hbDsKLSAgICB2b2lkIHVuaWZvcm0zZnYoR0NHTGludCBsb2NhdGlvbiwg
Y29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xl
bmd0aCkgZmluYWw7Ci0gICAgdm9pZCB1bmlmb3JtNGZ2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0
IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgp
IGZpbmFsOwotCi0gICAgdm9pZCB1bmlmb3JtMWl2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdD
R0xpbnQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKSBmaW5h
bDsKLSAgICB2b2lkIHVuaWZvcm0yaXYoR0NHTGludCBsb2NhdGlvbiwgY29uc3QgR0NHTGludCog
ZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpIGZpbmFsOwotICAg
IHZvaWQgdW5pZm9ybTNpdihHQ0dMaW50IGxvY2F0aW9uLCBjb25zdCBHQ0dMaW50KiBkYXRhLCBH
Q0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkgZmluYWw7Ci0gICAgdm9pZCB1
bmlmb3JtNGl2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0xpbnQqIGRhdGEsIEdDR0x1aW50
IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKSBmaW5hbDsKLQotICAgIHZvaWQgdW5pZm9y
bU1hdHJpeDJmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0
IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgp
IGZpbmFsOwotICAgIHZvaWQgdW5pZm9ybU1hdHJpeDNmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dM
Ym9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zm
c2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpIGZpbmFsOwotICAgIHZvaWQgdW5pZm9ybU1hdHJpeDRm
dihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9h
dCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpIGZpbmFsOwog
ICAgIHZvaWQgZ2V0QWN0aXZlVW5pZm9ybUJsb2NraXYoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTHVp
bnQgdW5pZm9ybUJsb2NrSW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMaW50PiBw
YXJhbXMpIGZpbmFsOwogCiAjaWYgIVVTRShBTkdMRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEJhc2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMQmFzZS5jcHAKaW5kZXggOWQ3Y2M5MjE2ZTdhNDJjZjBkOTcxNjQ1NzIwODUx
ZjE0NTUxNzBkNS4uNjM1NmY4MWY0ODIxYjZhMWVhNmMzNTU3ZWRmMWY0ZTY4ODEzZjZiOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNz
Q29udGV4dEdMT3BlbkdMQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHAKQEAgLTM0MSwxMSAr
MzQxLDExIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFNoYWRlclByZWNpc2lv
bkZvcm1hdChHQ0dMZW51bSBzaGFkZXJUeXBlLCBHQ0dMCiAgICAgfQogfQogCi1ib29sIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjp0ZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBs
ZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVp
IGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwg
Y29uc3Qgdm9pZCogcGl4ZWxzKQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dGV4SW1h
Z2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9y
bWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBH
Q0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBw
aXhlbHMpCiB7Ci0gICAgaWYgKHdpZHRoICYmIGhlaWdodCAmJiAhcGl4ZWxzKSB7CisgICAgaWYg
KHdpZHRoICYmIGhlaWdodCAmJiAhcGl4ZWxzLmRhdGEpIHsKICAgICAgICAgc3ludGhlc2l6ZUdM
RXJyb3IoSU5WQUxJRF9WQUxVRSk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0
dXJuOwogICAgIH0KIAogICAgIEdDR0xlbnVtIG9wZW5HTEZvcm1hdCA9IGZvcm1hdDsKQEAgLTQw
Myw4ICs0MDMsNyBAQCBib29sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp0ZXhJbWFnZTJEKEdD
R0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudQogICAgICAgICB9CiAgICAgfQog
Ci0gICAgdGV4SW1hZ2UyRERpcmVjdCh0YXJnZXQsIGxldmVsLCBvcGVuR0xJbnRlcm5hbEZvcm1h
dCwgd2lkdGgsIGhlaWdodCwgYm9yZGVyLCBvcGVuR0xGb3JtYXQsIHR5cGUsIHBpeGVscyk7Ci0g
ICAgcmV0dXJuIHRydWU7CisgICAgdGV4SW1hZ2UyRERpcmVjdCh0YXJnZXQsIGxldmVsLCBvcGVu
R0xJbnRlcm5hbEZvcm1hdCwgd2lkdGgsIGhlaWdodCwgYm9yZGVyLCBvcGVuR0xGb3JtYXQsIHR5
cGUsIHBpeGVscy5kYXRhKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6ZGVw
dGhSYW5nZShHQ0dMY2xhbXBmIHpOZWFyLCBHQ0dMY2xhbXBmIHpGYXIpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0xDb21tb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Blbmds
L0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29tbW9uLmNwcAppbmRleCBhYmI3ZTI1YTA2ZjA4NWNj
ZWFjZmY1YWI2ZTgyMDQ1N2NlOWEyZDkzLi5iYzQ0Y2Q1Nzc4ODY3MjAzOWFlYTRmNTk5OTZlNGQ5
NGUxYzFhMGZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb21tb24uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvbW1v
bi5jcHAKQEAgLTU1MiwyMCArNTUyLDIwIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OmJ1ZmZlckRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWlwdHIgc2l6ZSwgR0NHCiAgICAg
OjpnbEJ1ZmZlckRhdGEodGFyZ2V0LCBzaXplLCAwLCB1c2FnZSk7CiB9CiAKLXZvaWQgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmJ1ZmZlckRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWlw
dHIgc2l6ZSwgY29uc3Qgdm9pZCogZGF0YSwgR0NHTGVudW0gdXNhZ2UpCit2b2lkIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpidWZmZXJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTFNwYW48Y29u
c3Qgdm9pZD4gZGF0YSwgR0NHTGVudW0gdXNhZ2UpCiB7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1
cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgOjpnbEJ1ZmZlckRhdGEodGFyZ2V0LCBz
aXplLCBkYXRhLCB1c2FnZSk7CisgICAgOjpnbEJ1ZmZlckRhdGEodGFyZ2V0LCBkYXRhLmJ1ZlNp
emUsIGRhdGEuZGF0YSwgdXNhZ2UpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpidWZmZXJTdWJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludHB0ciBvZmZzZXQsIEdDR0xz
aXplaXB0ciBzaXplLCBjb25zdCB2b2lkKiBkYXRhKQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6YnVmZmVyU3ViRGF0YShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnRwdHIgb2Zmc2V0LCBH
Q0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gZGF0YSkKIHsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3Vy
cmVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICA6OmdsQnVmZmVyU3ViRGF0YSh0YXJnZXQs
IG9mZnNldCwgc2l6ZSwgZGF0YSk7CisgICAgOjpnbEJ1ZmZlclN1YkRhdGEodGFyZ2V0LCBvZmZz
ZXQsIGRhdGEuYnVmU2l6ZSwgZGF0YS5kYXRhKTsKIH0KIAogR0NHTGVudW0gR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoR0NHTGVudW0gdGFyZ2V0KQpAQCAt
MTQxNSwxMiArMTQxNSwxMiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3Jt
MWYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGZsb2F0IHYwKQogICAgIDo6Z2xVbmlmb3JtMWYobG9j
YXRpb24sIHYwKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTFm
dihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgc2l6ZSwgY29uc3QgR0NHTGZsb2F0KiBhcnJh
eSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0xZnYoR0NHTGludCBsb2Nh
dGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiBhcnJheSkKIHsKICAgICBpZiAoIW1ha2VD
b250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICA6OmdsVW5pZm9ybTFmdihs
b2NhdGlvbiwgc2l6ZSwgYXJyYXkpOworICAgIDo6Z2xVbmlmb3JtMWZ2KGxvY2F0aW9uLCBhcnJh
eS5idWZTaXplLCBhcnJheS5kYXRhKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6dW5pZm9ybTJmKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xmbG9hdCB2MCwgR0NHTGZsb2F0IHYx
KQpAQCAtMTQzMSwxMyArMTQzMSwxMyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1
bmlmb3JtMmYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGZsb2F0IHYwLCBHQ0dMZmxvYQogICAgIDo6
Z2xVbmlmb3JtMmYobG9jYXRpb24sIHYwLCB2MSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OnVuaWZvcm0yZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIHNpemUsIGNv
bnN0IEdDR0xmbG9hdCogYXJyYXkpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlm
b3JtMmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gYXJyYXkp
CiB7Ci0gICAgLy8gRklYTUU6IGxlbmd0aCBuZWVkcyB0byBiZSBhIG11bHRpcGxlIG9mIDIuCisg
ICAgQVNTRVJUKCEoYXJyYXkuYnVmU2l6ZSAlIDIpKTsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3Vy
cmVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICA6OmdsVW5pZm9ybTJmdihsb2NhdGlvbiwg
c2l6ZSwgYXJyYXkpOworICAgIDo6Z2xVbmlmb3JtMmZ2KGxvY2F0aW9uLCBhcnJheS5idWZTaXpl
IC8gMiwgYXJyYXkuZGF0YSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVu
aWZvcm0zZihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMZmxvYXQgdjAsIEdDR0xmbG9hdCB2MSwgR0NH
TGZsb2F0IHYyKQpAQCAtMTQ0OCwxMyArMTQ0OCwxMyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjp1bmlmb3JtM2YoR0NHTGludCBsb2NhdGlvbiwgR0NHTGZsb2F0IHYwLCBHQ0dMZmxv
YQogICAgIDo6Z2xVbmlmb3JtM2YobG9jYXRpb24sIHYwLCB2MSwgdjIpOwogfQogCi12b2lkIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtM2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xz
aXplaSBzaXplLCBjb25zdCBHQ0dMZmxvYXQqIGFycmF5KQordm9pZCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6dW5pZm9ybTNmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dM
ZmxvYXQ+IGFycmF5KQogewotICAgIC8vIEZJWE1FOiBsZW5ndGggbmVlZHMgdG8gYmUgYSBtdWx0
aXBsZSBvZiAzLgorICAgIEFTU0VSVCghKGFycmF5LmJ1ZlNpemUgJSAzKSk7CiAgICAgaWYgKCFt
YWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgOjpnbFVuaWZvcm0z
ZnYobG9jYXRpb24sIHNpemUsIGFycmF5KTsKKyAgICA6OmdsVW5pZm9ybTNmdihsb2NhdGlvbiwg
YXJyYXkuYnVmU2l6ZSAvIDMsIGFycmF5LmRhdGEpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjp1bmlmb3JtNGYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGZsb2F0IHYwLCBHQ0dM
ZmxvYXQgdjEsIEdDR0xmbG9hdCB2MiwgR0NHTGZsb2F0IHYzKQpAQCAtMTQ2NSwxMyArMTQ2NSwx
MyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtNGYoR0NHTGludCBsb2Nh
dGlvbiwgR0NHTGZsb2F0IHYwLCBHQ0dMZmxvYQogICAgIDo6Z2xVbmlmb3JtNGYobG9jYXRpb24s
IHYwLCB2MSwgdjIsIHYzKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5p
Zm9ybTRmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgc2l6ZSwgY29uc3QgR0NHTGZsb2F0
KiBhcnJheSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm00ZnYoR0NHTGlu
dCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiBhcnJheSkKIHsKLSAgICAvLyBG
SVhNRTogbGVuZ3RoIG5lZWRzIHRvIGJlIGEgbXVsdGlwbGUgb2YgNC4KKyAgICBBU1NFUlQoIShh
cnJheS5idWZTaXplICUgNCkpOwogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIDo6Z2xVbmlmb3JtNGZ2KGxvY2F0aW9uLCBzaXplLCBhcnJheSk7
CisgICAgOjpnbFVuaWZvcm00ZnYobG9jYXRpb24sIGFycmF5LmJ1ZlNpemUgLyA0LCBhcnJheS5k
YXRhKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTFpKEdDR0xp
bnQgbG9jYXRpb24sIEdDR0xpbnQgdjApCkBAIC0xNDgyLDEyICsxNDgyLDEyIEBAIHZvaWQgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0xaShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMaW50
IHYwKQogICAgIDo6Z2xVbmlmb3JtMWkobG9jYXRpb24sIHYwKTsKIH0KIAotdm9pZCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTFpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkg
c2l6ZSwgY29uc3QgR0NHTGludCogYXJyYXkpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
Ojp1bmlmb3JtMWl2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+IGFy
cmF5KQogewogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIDo6Z2xVbmlmb3JtMWl2KGxvY2F0aW9uLCBzaXplLCBhcnJheSk7CisgICAgOjpnbFVu
aWZvcm0xaXYobG9jYXRpb24sIGFycmF5LmJ1ZlNpemUsIGFycmF5LmRhdGEpOwogfQogCiB2b2lk
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMmkoR0NHTGludCBsb2NhdGlvbiwgR0NH
TGludCB2MCwgR0NHTGludCB2MSkKQEAgLTE0OTgsMTMgKzE0OTgsMTMgQEAgdm9pZCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTJpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xpbnQgdjAs
IEdDR0xpbnQgdjEKICAgICA6OmdsVW5pZm9ybTJpKGxvY2F0aW9uLCB2MCwgdjEpOwogfQogCi12
b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMml2KEdDR0xpbnQgbG9jYXRpb24s
IEdDR0xzaXplaSBzaXplLCBjb25zdCBHQ0dMaW50KiBhcnJheSkKK3ZvaWQgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OnVuaWZvcm0yaXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3Qg
R0NHTGludD4gYXJyYXkpCiB7Ci0gICAgLy8gRklYTUU6IGxlbmd0aCBuZWVkcyB0byBiZSBhIG11
bHRpcGxlIG9mIDIuCisgICAgQVNTRVJUKCEoYXJyYXkuYnVmU2l6ZSAlIDIpKTsKICAgICBpZiAo
IW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICA6OmdsVW5pZm9y
bTJpdihsb2NhdGlvbiwgc2l6ZSwgYXJyYXkpOworICAgIDo6Z2xVbmlmb3JtMml2KGxvY2F0aW9u
LCBhcnJheS5idWZTaXplIC8gMiwgYXJyYXkuZGF0YSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OnVuaWZvcm0zaShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMaW50IHYwLCBHQ0dM
aW50IHYxLCBHQ0dMaW50IHYyKQpAQCAtMTUxNSwxMyArMTUxNSwxMyBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjp1bmlmb3JtM2koR0NHTGludCBsb2NhdGlvbiwgR0NHTGludCB2MCwg
R0NHTGludCB2MQogICAgIDo6Z2xVbmlmb3JtM2kobG9jYXRpb24sIHYwLCB2MSwgdjIpOwogfQog
Ci12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtM2l2KEdDR0xpbnQgbG9jYXRp
b24sIEdDR0xzaXplaSBzaXplLCBjb25zdCBHQ0dMaW50KiBhcnJheSkKK3ZvaWQgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OnVuaWZvcm0zaXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29u
c3QgR0NHTGludD4gYXJyYXkpCiB7Ci0gICAgLy8gRklYTUU6IGxlbmd0aCBuZWVkcyB0byBiZSBh
IG11bHRpcGxlIG9mIDMuCisgICAgQVNTRVJUKCEoYXJyYXkuYnVmU2l6ZSAlIDMpKTsKICAgICBp
ZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICA6OmdsVW5p
Zm9ybTNpdihsb2NhdGlvbiwgc2l6ZSwgYXJyYXkpOworICAgIDo6Z2xVbmlmb3JtM2l2KGxvY2F0
aW9uLCBhcnJheS5idWZTaXplIC8gMywgYXJyYXkuZGF0YSk7CiB9CiAKIHZvaWQgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OnVuaWZvcm00aShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMaW50IHYwLCBH
Q0dMaW50IHYxLCBHQ0dMaW50IHYyLCBHQ0dMaW50IHYzKQpAQCAtMTUzMiw0MCArMTUzMiw0MCBA
QCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtNGkoR0NHTGludCBsb2NhdGlv
biwgR0NHTGludCB2MCwgR0NHTGludCB2MQogICAgIDo6Z2xVbmlmb3JtNGkobG9jYXRpb24sIHYw
LCB2MSwgdjIsIHYzKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9y
bTRpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgc2l6ZSwgY29uc3QgR0NHTGludCogYXJy
YXkpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtNGl2KEdDR0xpbnQgbG9j
YXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+IGFycmF5KQogewotICAgIC8vIEZJWE1FOiBs
ZW5ndGggbmVlZHMgdG8gYmUgYSBtdWx0aXBsZSBvZiA0LgorICAgIEFTU0VSVCghKGFycmF5LmJ1
ZlNpemUgJSA0KSk7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgOjpnbFVuaWZvcm00aXYobG9jYXRpb24sIHNpemUsIGFycmF5KTsKKyAgICA6
OmdsVW5pZm9ybTRpdihsb2NhdGlvbiwgYXJyYXkuYnVmU2l6ZSAvIDQsIGFycmF5LmRhdGEpOwog
fQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4MmZ2KEdDR0xp
bnQgbG9jYXRpb24sIEdDR0xzaXplaSBzaXplLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0
IEdDR0xmbG9hdCogYXJyYXkpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3Jt
TWF0cml4MmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNw
YW48Y29uc3QgR0NHTGZsb2F0PiBhcnJheSkKIHsKLSAgICAvLyBGSVhNRTogbGVuZ3RoIG5lZWRz
IHRvIGJlIGEgbXVsdGlwbGUgb2YgNC4KKyAgICBBU1NFUlQoIShhcnJheS5idWZTaXplICUgNCkp
OwogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAg
IDo6Z2xVbmlmb3JtTWF0cml4MmZ2KGxvY2F0aW9uLCBzaXplLCB0cmFuc3Bvc2UsIGFycmF5KTsK
KyAgICA6OmdsVW5pZm9ybU1hdHJpeDJmdihsb2NhdGlvbiwgYXJyYXkuYnVmU2l6ZSAvIDQsIHRy
YW5zcG9zZSwgYXJyYXkuZGF0YSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OnVuaWZvcm1NYXRyaXgzZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIHNpemUsIEdDR0xi
b29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiBhcnJheSkKK3ZvaWQgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXgzZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJv
b2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGFycmF5KQogewotICAg
IC8vIEZJWE1FOiBsZW5ndGggbmVlZHMgdG8gYmUgYSBtdWx0aXBsZSBvZiA5LgorICAgIEFTU0VS
VCghKGFycmF5LmJ1ZlNpemUgJSA5KSk7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgOjpnbFVuaWZvcm1NYXRyaXgzZnYobG9jYXRpb24sIHNp
emUsIHRyYW5zcG9zZSwgYXJyYXkpOworICAgIDo6Z2xVbmlmb3JtTWF0cml4M2Z2KGxvY2F0aW9u
LCBhcnJheS5idWZTaXplIC8gOSwgdHJhbnNwb3NlLCBhcnJheS5kYXRhKTsKIH0KIAotdm9pZCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybU1hdHJpeDRmdihHQ0dMaW50IGxvY2F0aW9u
LCBHQ0dMc2l6ZWkgc2l6ZSwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHQ0dMZmxvYXQq
IGFycmF5KQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybU1hdHJpeDRmdihH
Q0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdD
R0xmbG9hdD4gYXJyYXkpCiB7Ci0gICAgLy8gRklYTUU6IGxlbmd0aCBuZWVkcyB0byBiZSBhIG11
bHRpcGxlIG9mIDE2LgorICAgIEFTU0VSVCghKGFycmF5LmJ1ZlNpemUgJSAxNikpOwogICAgIGlm
ICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIDo6Z2xVbmlm
b3JtTWF0cml4NGZ2KGxvY2F0aW9uLCBzaXplLCB0cmFuc3Bvc2UsIGFycmF5KTsKKyAgICA6Omds
VW5pZm9ybU1hdHJpeDRmdihsb2NhdGlvbiwgYXJyYXkuYnVmU2l6ZSAvIDE2LCB0cmFuc3Bvc2Us
IGFycmF5LmRhdGEpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1c2VQcm9n
cmFtKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSkKQEAgLTE1OTQsMTIgKzE1OTQsMTIgQEAgdm9p
ZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliMWYoR0NHTHVpbnQgaW5kZXgs
IEdDR0xmbG9hdCB2MCkKICAgICA6OmdsVmVydGV4QXR0cmliMWYoaW5kZXgsIHYwKTsKIH0KIAot
dm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliMWZ2KEdDR0x1aW50IGlu
ZGV4LCBjb25zdCBHQ0dMZmxvYXQqIGFycmF5KQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6dmVydGV4QXR0cmliMWZ2KEdDR0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxv
YXQsIDE+IGFycmF5KQogewogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIDo6Z2xWZXJ0ZXhBdHRyaWIxZnYoaW5kZXgsIGFycmF5KTsKKyAgICA6
OmdsVmVydGV4QXR0cmliMWZ2KGluZGV4LCBhcnJheS5kYXRhKTsKIH0KIAogdm9pZCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliMmYoR0NHTHVpbnQgaW5kZXgsIEdDR0xmbG9h
dCB2MCwgR0NHTGZsb2F0IHYxKQpAQCAtMTYxMCwxMiArMTYxMCwxMiBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjp2ZXJ0ZXhBdHRyaWIyZihHQ0dMdWludCBpbmRleCwgR0NHTGZsb2F0
IHYwLCBHQ0dMZgogICAgIDo6Z2xWZXJ0ZXhBdHRyaWIyZihpbmRleCwgdjAsIHYxKTsKIH0KIAot
dm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliMmZ2KEdDR0x1aW50IGlu
ZGV4LCBjb25zdCBHQ0dMZmxvYXQqIGFycmF5KQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6dmVydGV4QXR0cmliMmZ2KEdDR0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxv
YXQsIDI+IGFycmF5KQogewogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIDo6Z2xWZXJ0ZXhBdHRyaWIyZnYoaW5kZXgsIGFycmF5KTsKKyAgICA6
OmdsVmVydGV4QXR0cmliMmZ2KGluZGV4LCBhcnJheS5kYXRhKTsKIH0KIAogdm9pZCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliM2YoR0NHTHVpbnQgaW5kZXgsIEdDR0xmbG9h
dCB2MCwgR0NHTGZsb2F0IHYxLCBHQ0dMZmxvYXQgdjIpCkBAIC0xNjI2LDEyICsxNjI2LDEyIEBA
IHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYjNmKEdDR0x1aW50IGlu
ZGV4LCBHQ0dMZmxvYXQgdjAsIEdDR0xmCiAgICAgOjpnbFZlcnRleEF0dHJpYjNmKGluZGV4LCB2
MCwgdjEsIHYyKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0
cmliM2Z2KEdDR0x1aW50IGluZGV4LCBjb25zdCBHQ0dMZmxvYXQqIGFycmF5KQordm9pZCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliM2Z2KEdDR0x1aW50IGluZGV4LCBHQ0dM
U3Bhbjxjb25zdCBHQ0dMZmxvYXQsIDM+IGFycmF5KQogewogICAgIGlmICghbWFrZUNvbnRleHRD
dXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIDo6Z2xWZXJ0ZXhBdHRyaWIzZnYoaW5k
ZXgsIGFycmF5KTsKKyAgICA6OmdsVmVydGV4QXR0cmliM2Z2KGluZGV4LCBhcnJheS5kYXRhKTsK
IH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliNGYoR0NHTHVp
bnQgaW5kZXgsIEdDR0xmbG9hdCB2MCwgR0NHTGZsb2F0IHYxLCBHQ0dMZmxvYXQgdjIsIEdDR0xm
bG9hdCB2MykKQEAgLTE2NDIsMTIgKzE2NDIsMTIgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6dmVydGV4QXR0cmliNGYoR0NHTHVpbnQgaW5kZXgsIEdDR0xmbG9hdCB2MCwgR0NHTGYK
ICAgICA6OmdsVmVydGV4QXR0cmliNGYoaW5kZXgsIHYwLCB2MSwgdjIsIHYzKTsKIH0KIAotdm9p
ZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliNGZ2KEdDR0x1aW50IGluZGV4
LCBjb25zdCBHQ0dMZmxvYXQqIGFycmF5KQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
dmVydGV4QXR0cmliNGZ2KEdDR0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQs
IDQ+IGFycmF5KQogewogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIDo6Z2xWZXJ0ZXhBdHRyaWI0ZnYoaW5kZXgsIGFycmF5KTsKKyAgICA6Omds
VmVydGV4QXR0cmliNGZ2KGluZGV4LCBhcnJheS5kYXRhKTsKIH0KIAogdm9pZCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliUG9pbnRlcihHQ0dMdWludCBpbmRleCwgR0NHTGlu
dCBzaXplLCBHQ0dMZW51bSB0eXBlLCBHQ0dMYm9vbGVhbiBub3JtYWxpemVkLCBHQ0dMc2l6ZWkg
c3RyaWRlLCBHQ0dMaW50cHRyIG9mZnNldCkKQEAgLTIwNTUsNyArMjA1NSw3IEBAIEdDR0xzaXpl
aXB0ciBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VmVydGV4QXR0cmliT2Zmc2V0KEdDR0x1
aW50IGluZGV4LCBHQ0dMCiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdDR0xzaXplaXB0cj4ocmVp
bnRlcnByZXRfY2FzdDxpbnRwdHJfdD4ocG9pbnRlcikpOwogfQogCi12b2lkIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjp0ZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZl
bCwgR0NHTGludCB4b2ZmLCBHQ0dMaW50IHlvZmYsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVp
IGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBjb25zdCB2b2lkKiBwaXhl
bHMpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp0ZXhTdWJJbWFnZTJEKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2ZmLCBHQ0dMaW50IHlvZmYsIEdDR0xz
aXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0
eXBlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gcGl4ZWxzKQogewogICAgIGlmICghbWFrZUNv
bnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTIwODMsMjUgKzIwODMsMjUgQEAg
dm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0wKICAgICB9CiAKICAgICAvLyBGSVhNRTogd2Ugd2lsbCBu
ZWVkIHRvIGRlYWwgd2l0aCBQaXhlbFN0b3JlIHBhcmFtcyB3aGVuIGRlYWxpbmcgd2l0aCBpbWFn
ZSBidWZmZXJzIHRoYXQgZGlmZmVyIGZyb20gdGhlIHN1YmltYWdlIHNpemUuCi0gICAgOjpnbFRl
eFN1YkltYWdlMkQodGFyZ2V0LCBsZXZlbCwgeG9mZiwgeW9mZiwgd2lkdGgsIGhlaWdodCwgZm9y
bWF0LCB0eXBlLCBwaXhlbHMpOworICAgIDo6Z2xUZXhTdWJJbWFnZTJEKHRhcmdldCwgbGV2ZWws
IHhvZmYsIHlvZmYsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgcGl4ZWxzLmRhdGEpOwog
ICAgIG1fc3RhdGUudGV4dHVyZVNlZWRDb3VudC5hZGQobV9zdGF0ZS5jdXJyZW50Qm91bmRUZXh0
dXJlKCkpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjb21wcmVzc2VkVGV4
SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFs
Zm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVy
LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBjb25zdCB2b2lkKiBkYXRhKQordm9pZCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6Y29tcHJlc3NlZFRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
aW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dM
c2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTFNw
YW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEpCiB7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQo
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgOjpnbENvbXByZXNzZWRUZXhJbWFnZTJEKHRhcmdl
dCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIsIGltYWdlU2l6
ZSwgZGF0YSk7CisgICAgOjpnbENvbXByZXNzZWRUZXhJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIGlu
dGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIsIGltYWdlU2l6ZSwgZGF0YS5kYXRh
KTsKICAgICBtX3N0YXRlLnRleHR1cmVTZWVkQ291bnQuYWRkKG1fc3RhdGUuY3VycmVudEJvdW5k
VGV4dHVyZSgpKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y29tcHJlc3Nl
ZFRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhv
ZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0
LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFnZVNpemUsIGNvbnN0IHZvaWQqIGRhdGEp
Cit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChH
Q0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5
b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1h
dCwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEpCiB7
CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
OjpnbENvbXByZXNzZWRUZXhTdWJJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZz
ZXQsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgaW1hZ2VTaXplLCBkYXRhKTsKKyAgICA6OmdsQ29t
cHJlc3NlZFRleFN1YkltYWdlMkQodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgd2lk
dGgsIGhlaWdodCwgZm9ybWF0LCBpbWFnZVNpemUsIGRhdGEuZGF0YSk7CiAgICAgbV9zdGF0ZS50
ZXh0dXJlU2VlZENvdW50LmFkZChtX3N0YXRlLmN1cnJlbnRCb3VuZFRleHR1cmUoKSk7CiB9CiAK
QEAgLTIzOTUsMTcgKzIzOTUsMTUgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6ZnJh
bWVidWZmZXJUZXh0dXJlTGF5ZXIoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bQogICAgIFVOVVNF
RF9QQVJBTShsYXllcik7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmludmFs
aWRhdGVGcmFtZWJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaSBudW1BdHRhY2htZW50
cywgY29uc3QgR0NHTGVudW0qIGF0dGFjaG1lbnRzKQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6aW52YWxpZGF0ZUZyYW1lYnVmZmVyKEdDR0xlbnVtIHRhcmdldCwgR0NHTFNwYW48Y29u
c3QgR0NHTGVudW0+IGF0dGFjaG1lbnRzKQogewogICAgIFVOVVNFRF9QQVJBTSh0YXJnZXQpOwot
ICAgIFVOVVNFRF9QQVJBTShudW1BdHRhY2htZW50cyk7CiAgICAgVU5VU0VEX1BBUkFNKGF0dGFj
aG1lbnRzKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6aW52YWxpZGF0ZVN1
YkZyYW1lYnVmZmVyKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpIG51bUF0dGFjaG1lbnRzLCBj
b25zdCBHQ0dMZW51bSogYXR0YWNobWVudHMsIEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6
ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjppbnZhbGlkYXRlU3ViRnJhbWVidWZmZXIoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMU3Bhbjxjb25z
dCBHQ0dMZW51bT4gYXR0YWNobWVudHMsIEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkg
d2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHRhcmdldCk7Ci0g
ICAgVU5VU0VEX1BBUkFNKG51bUF0dGFjaG1lbnRzKTsKICAgICBVTlVTRURfUEFSQU0oYXR0YWNo
bWVudHMpOwogICAgIFVOVVNFRF9QQVJBTSh4KTsKICAgICBVTlVTRURfUEFSQU0oeSk7CkBAIC0y
NTI5LDkwICsyNTI3LDcwIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm00
dWkoR0NHTGludCBsb2NhdGlvbiwgR0NHTHVpbnQgdjAsIEdDR0x1aW50CiAgICAgVU5VU0VEX1BB
UkFNKHYzKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTF1aXYo
R0NHTGludCBsb2NhdGlvbiwgY29uc3QgR0NHTHVpbnQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNl
dCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5p
Zm9ybTF1aXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTHVpbnQ+IGRhdGEp
CiB7CiAgICAgVU5VU0VEX1BBUkFNKGxvY2F0aW9uKTsKICAgICBVTlVTRURfUEFSQU0oZGF0YSk7
Ci0gICAgVU5VU0VEX1BBUkFNKHNyY09mZnNldCk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY0xlbmd0
aCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0ydWl2KEdDR0xp
bnQgbG9jYXRpb24sIGNvbnN0IEdDR0x1aW50KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdD
R0x1aW50IHNyY0xlbmd0aCkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0y
dWl2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0x1aW50PiBkYXRhKQogewog
ICAgIFVOVVNFRF9QQVJBTShsb2NhdGlvbik7CiAgICAgVU5VU0VEX1BBUkFNKGRhdGEpOwotICAg
IFVOVVNFRF9QQVJBTShzcmNPZmZzZXQpOwotICAgIFVOVVNFRF9QQVJBTShzcmNMZW5ndGgpOwog
fQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtM3VpdihHQ0dMaW50IGxv
Y2F0aW9uLCBjb25zdCBHQ0dMdWludCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWlu
dCBzcmNMZW5ndGgpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtM3VpdihH
Q0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdWludD4gZGF0YSkKIHsKICAgICBV
TlVTRURfUEFSQU0obG9jYXRpb24pOwogICAgIFVOVVNFRF9QQVJBTShkYXRhKTsKLSAgICBVTlVT
RURfUEFSQU0oc3JjT2Zmc2V0KTsKLSAgICBVTlVTRURfUEFSQU0oc3JjTGVuZ3RoKTsKIH0KIAot
dm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTR1aXYoR0NHTGludCBsb2NhdGlv
biwgY29uc3QgR0NHTHVpbnQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3Jj
TGVuZ3RoKQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTR1aXYoR0NHTGlu
dCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTHVpbnQ+IGRhdGEpCiB7CiAgICAgVU5VU0VE
X1BBUkFNKGxvY2F0aW9uKTsKICAgICBVTlVTRURfUEFSQU0oZGF0YSk7Ci0gICAgVU5VU0VEX1BB
UkFNKHNyY09mZnNldCk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY0xlbmd0aCk7CiB9CiAKLXZvaWQg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXgyeDNmdihHQ0dMaW50IGxvY2F0
aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVp
bnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjp1bmlmb3JtTWF0cml4MngzZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4g
dHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEpCiB7CiAgICAgVU5VU0VE
X1BBUkFNKGxvY2F0aW9uKTsKICAgICBVTlVTRURfUEFSQU0odHJhbnNwb3NlKTsKICAgICBVTlVT
RURfUEFSQU0oZGF0YSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY09mZnNldCk7Ci0gICAgVU5VU0VE
X1BBUkFNKHNyY0xlbmd0aCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVu
aWZvcm1NYXRyaXgzeDJmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2Us
IGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNM
ZW5ndGgpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4M3gyZnYo
R0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBH
Q0dMZmxvYXQ+IGRhdGEpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGxvY2F0aW9uKTsKICAgICBVTlVT
RURfUEFSQU0odHJhbnNwb3NlKTsKICAgICBVTlVTRURfUEFSQU0oZGF0YSk7Ci0gICAgVU5VU0VE
X1BBUkFNKHNyY09mZnNldCk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY0xlbmd0aCk7CiB9CiAKLXZv
aWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXgyeDRmdihHQ0dMaW50IGxv
Y2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NH
THVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCit2b2lkIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4Mng0ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xl
YW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEpCiB7CiAgICAgVU5V
U0VEX1BBUkFNKGxvY2F0aW9uKTsKICAgICBVTlVTRURfUEFSQU0odHJhbnNwb3NlKTsKICAgICBV
TlVTRURfUEFSQU0oZGF0YSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY09mZnNldCk7Ci0gICAgVU5V
U0VEX1BBUkFNKHNyY0xlbmd0aCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OnVuaWZvcm1NYXRyaXg0eDJmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bv
c2UsIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBz
cmNMZW5ndGgpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4NHgy
ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25z
dCBHQ0dMZmxvYXQ+IGRhdGEpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGxvY2F0aW9uKTsKICAgICBV
TlVTRURfUEFSQU0odHJhbnNwb3NlKTsKICAgICBVTlVTRURfUEFSQU0oZGF0YSk7Ci0gICAgVU5V
U0VEX1BBUkFNKHNyY09mZnNldCk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY0xlbmd0aCk7CiB9CiAK
LXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXgzeDRmdihHQ0dMaW50
IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwg
R0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCit2b2lkIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4M3g0ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJv
b2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEpCiB7CiAgICAg
VU5VU0VEX1BBUkFNKGxvY2F0aW9uKTsKICAgICBVTlVTRURfUEFSQU0odHJhbnNwb3NlKTsKICAg
ICBVTlVTRURfUEFSQU0oZGF0YSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY09mZnNldCk7Ci0gICAg
VU5VU0VEX1BBUkFNKHNyY0xlbmd0aCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OnVuaWZvcm1NYXRyaXg0eDNmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFu
c3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWlu
dCBzcmNMZW5ndGgpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4
NHgzZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxj
b25zdCBHQ0dMZmxvYXQ+IGRhdGEpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGxvY2F0aW9uKTsKICAg
ICBVTlVTRURfUEFSQU0odHJhbnNwb3NlKTsKICAgICBVTlVTRURfUEFSQU0oZGF0YSk7Ci0gICAg
VU5VU0VEX1BBUkFNKHNyY09mZnNldCk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY0xlbmd0aCk7CiB9
CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYkk0aShHQ0dMdWlu
dCBpbmRleCwgR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xpbnQgeiwgR0NHTGludCB3KQpAQCAt
MjYyNCw3ICsyNjAyLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0
cmliSTRpKEdDR0x1aW50IGluZGV4LCBHQ0dMaW50IHgsIEdDR0xpbnQKICAgICBVTlVTRURfUEFS
QU0odyk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYkk0
aXYoR0NHTHVpbnQgaW5kZXgsIGNvbnN0IEdDR0xpbnQqIHZhbHVlcykKK3ZvaWQgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYkk0aXYoR0NHTHVpbnQgaW5kZXgsIEdDR0xTcGFu
PGNvbnN0IEdDR0xpbnQsIDQ+IHZhbHVlcykKIHsKICAgICBVTlVTRURfUEFSQU0oaW5kZXgpOwog
ICAgIFVOVVNFRF9QQVJBTSh2YWx1ZXMpOwpAQCAtMjYzOSw3ICsyNjE3LDcgQEAgdm9pZCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliSTR1aShHQ0dMdWludCBpbmRleCwgR0NH
THVpbnQgeCwgR0NHTHUKICAgICBVTlVTRURfUEFSQU0odyk7CiB9CiAKLXZvaWQgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYkk0dWl2KEdDR0x1aW50IGluZGV4LCBjb25zdCBH
Q0dMdWludCogdmFsdWVzKQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0
cmliSTR1aXYoR0NHTHVpbnQgaW5kZXgsIEdDR0xTcGFuPGNvbnN0IEdDR0x1aW50LCA0PiB2YWx1
ZXMpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGluZGV4KTsKICAgICBVTlVTRURfUEFSQU0odmFsdWVz
KTsKQEAgLTI2NjQsMzQgKzI2NDIsMzAgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
ZHJhd1JhbmdlRWxlbWVudHMoR0NHTGVudW0gbW9kZSwgR0NHTHVpbnQgc3RhcnQsIEcKICAgICBV
TlVTRURfUEFSQU0ob2Zmc2V0KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
ZHJhd0J1ZmZlcnMoR0NHTHNpemVpIG4sIGNvbnN0IEdDR0xlbnVtKiBidWZzKQordm9pZCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6ZHJhd0J1ZmZlcnMoR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+
IGJ1ZnMpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKG4pOwogICAgIFVOVVNFRF9QQVJBTShidWZzKTsK
IH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y2xlYXJCdWZmZXJpdihHQ0dMZW51
bSBidWZmZXIsIEdDR0xpbnQgZHJhd2J1ZmZlciwgY29uc3QgR0NHTGludCogdmFsdWVzLCBHQ0dM
dWludCBzcmNPZmZzZXQpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjbGVhckJ1ZmZl
cml2KEdDR0xlbnVtIGJ1ZmZlciwgR0NHTGludCBkcmF3YnVmZmVyLCBHQ0dMU3Bhbjxjb25zdCBH
Q0dMaW50PiB2YWx1ZXMpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGJ1ZmZlcik7CiAgICAgVU5VU0VE
X1BBUkFNKGRyYXdidWZmZXIpOwogICAgIFVOVVNFRF9QQVJBTSh2YWx1ZXMpOwotICAgIFVOVVNF
RF9QQVJBTShzcmNPZmZzZXQpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpj
bGVhckJ1ZmZlcnVpdihHQ0dMZW51bSBidWZmZXIsIEdDR0xpbnQgZHJhd2J1ZmZlciwgY29uc3Qg
R0NHTHVpbnQqIHZhbHVlcywgR0NHTHVpbnQgc3JjT2Zmc2V0KQordm9pZCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6Y2xlYXJCdWZmZXJ1aXYoR0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50IGRyYXdi
dWZmZXIsIEdDR0xTcGFuPGNvbnN0IEdDR0x1aW50PiB2YWx1ZXMpCiB7CiAgICAgVU5VU0VEX1BB
UkFNKGJ1ZmZlcik7CiAgICAgVU5VU0VEX1BBUkFNKGRyYXdidWZmZXIpOwogICAgIFVOVVNFRF9Q
QVJBTSh2YWx1ZXMpOwotICAgIFVOVVNFRF9QQVJBTShzcmNPZmZzZXQpOwogfQogCi12b2lkIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjbGVhckJ1ZmZlcmZ2KEdDR0xlbnVtIGJ1ZmZlciwgR0NH
TGludCBkcmF3YnVmZmVyLCBjb25zdCBHQ0dMZmxvYXQqIHZhbHVlcywgR0NHTHVpbnQgc3JjT2Zm
c2V0KQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y2xlYXJCdWZmZXJmdihHQ0dMZW51
bSBidWZmZXIsIEdDR0xpbnQgZHJhd2J1ZmZlciwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiB2
YWx1ZXMpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGJ1ZmZlcik7CiAgICAgVU5VU0VEX1BBUkFNKGRy
YXdidWZmZXIpOwogICAgIFVOVVNFRF9QQVJBTSh2YWx1ZXMpOwotICAgIFVOVVNFRF9QQVJBTShz
cmNPZmZzZXQpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjbGVhckJ1ZmZl
cmZpKEdDR0xlbnVtIGJ1ZmZlciwgR0NHTGludCBkcmF3YnVmZmVyLCBHQ0dMZmxvYXQgZGVwdGgs
IEdDR0xpbnQgc3RlbmNpbCkKQEAgLTI5NjksMTc4ICsyOTQzLDgzIEBAIHZvaWQgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OnVuaWZvcm1CbG9ja0JpbmRpbmcoUGxhdGZvcm1HTE9iamVjdCwgR0NH
THVpbnQsIEdDCiB9CiAjZW5kaWYKIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y29t
cHJlc3NlZFRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51
bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dM
aW50IGJvcmRlciwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTGludHB0ciBvZmZzZXQpCi17Ci0g
ICAgVU5VU0VEX1BBUkFNKHRhcmdldCk7Ci0gICAgVU5VU0VEX1BBUkFNKGxldmVsKTsKLSAgICBV
TlVTRURfUEFSQU0oaW50ZXJuYWxmb3JtYXQpOwotICAgIFVOVVNFRF9QQVJBTSh3aWR0aCk7Ci0g
ICAgVU5VU0VEX1BBUkFNKGhlaWdodCk7Ci0gICAgVU5VU0VEX1BBUkFNKGJvcmRlcik7Ci0gICAg
VU5VU0VEX1BBUkFNKGltYWdlU2l6ZSk7Ci0gICAgVU5VU0VEX1BBUkFNKG9mZnNldCk7Ci19Ci0K
LXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNvbXByZXNzZWRUZXhJbWFnZTJEKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xz
aXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIGNvbnN0IHZvaWQq
IHNyY0RhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoT3ZlcnJpZGUp
Ci17Ci0gICAgVU5VU0VEX1BBUkFNKHRhcmdldCk7Ci0gICAgVU5VU0VEX1BBUkFNKGxldmVsKTsK
LSAgICBVTlVTRURfUEFSQU0oaW50ZXJuYWxmb3JtYXQpOwotICAgIFVOVVNFRF9QQVJBTSh3aWR0
aCk7Ci0gICAgVU5VU0VEX1BBUkFNKGhlaWdodCk7Ci0gICAgVU5VU0VEX1BBUkFNKGJvcmRlcik7
Ci0gICAgVU5VU0VEX1BBUkFNKHNyY0RhdGEpOwotICAgIFVOVVNFRF9QQVJBTShzcmNPZmZzZXQp
OwotICAgIFVOVVNFRF9QQVJBTShzcmNMZW5ndGhPdmVycmlkZSk7Ci19Ci0KLXZvaWQgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xz
aXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMc2l6ZWkg
aW1hZ2VTaXplLCBHQ0dMaW50cHRyIG9mZnNldCkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OnJlYWRQaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NH
THNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRy
IG9mZnNldCkKIHsKLSAgICBVTlVTRURfUEFSQU0odGFyZ2V0KTsKLSAgICBVTlVTRURfUEFSQU0o
bGV2ZWwpOwotICAgIFVOVVNFRF9QQVJBTSh4b2Zmc2V0KTsKLSAgICBVTlVTRURfUEFSQU0oeW9m
ZnNldCk7CisgICAgVU5VU0VEX1BBUkFNKHgpOworICAgIFVOVVNFRF9QQVJBTSh5KTsKICAgICBV
TlVTRURfUEFSQU0od2lkdGgpOwogICAgIFVOVVNFRF9QQVJBTShoZWlnaHQpOwogICAgIFVOVVNF
RF9QQVJBTShmb3JtYXQpOwotICAgIFVOVVNFRF9QQVJBTShpbWFnZVNpemUpOworICAgIFVOVVNF
RF9QQVJBTSh0eXBlKTsKICAgICBVTlVTRURfUEFSQU0ob2Zmc2V0KTsKIH0KIAotdm9pZCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6Y29tcHJlc3NlZFRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NH
THNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIGNvbnN0IHZv
aWQqIHNyY0RhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoT3ZlcnJp
ZGUpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkUGl4ZWxzKEdDR0xpbnQgeCwg
R0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZv
cm1hdCwgR0NHTGVudW0gdHlwZSwgY29uc3Qgdm9pZCogZHN0RGF0YSwgR0NHTHVpbnQgZHN0T2Zm
c2V0KQogewotICAgIFVOVVNFRF9QQVJBTSh0YXJnZXQpOwotICAgIFVOVVNFRF9QQVJBTShsZXZl
bCk7Ci0gICAgVU5VU0VEX1BBUkFNKHhvZmZzZXQpOwotICAgIFVOVVNFRF9QQVJBTSh5b2Zmc2V0
KTsKKyAgICBVTlVTRURfUEFSQU0oeCk7CisgICAgVU5VU0VEX1BBUkFNKHkpOwogICAgIFVOVVNF
RF9QQVJBTSh3aWR0aCk7CiAgICAgVU5VU0VEX1BBUkFNKGhlaWdodCk7CiAgICAgVU5VU0VEX1BB
UkFNKGZvcm1hdCk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY0RhdGEpOwotICAgIFVOVVNFRF9QQVJB
TShzcmNPZmZzZXQpOwotICAgIFVOVVNFRF9QQVJBTShzcmNMZW5ndGhPdmVycmlkZSk7Ci19Ci0K
LXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0xZnYoR0NHTGludCBsb2NhdGlv
biwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNy
Y0xlbmd0aCkKLXsKLSAgICBVTlVTRURfUEFSQU0obG9jYXRpb24pOwotICAgIFVOVVNFRF9QQVJB
TShkYXRhKTsKLSAgICBVTlVTRURfUEFSQU0oc3JjT2Zmc2V0KTsKLSAgICBVTlVTRURfUEFSQU0o
c3JjTGVuZ3RoKTsKKyAgICBVTlVTRURfUEFSQU0odHlwZSk7CisgICAgVU5VU0VEX1BBUkFNKGRz
dERhdGEpOworICAgIFVOVVNFRF9QQVJBTShkc3RPZmZzZXQpOwogfQogCi12b2lkIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMmZ2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0xm
bG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCit2b2lk
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRBY3RpdmVVbmlmb3JtQmxvY2tpdihHQ0dMdWlu
dCBwcm9ncmFtLCBHQ0dMdWludCB1bmlmb3JtQmxvY2tJbmRleCwgR0NHTGVudW0gcG5hbWUsIEdD
R0xTcGFuPEdDR0xpbnQ+IHBhcmFtcykKIHsKLSAgICBVTlVTRURfUEFSQU0obG9jYXRpb24pOwot
ICAgIFVOVVNFRF9QQVJBTShkYXRhKTsKLSAgICBVTlVTRURfUEFSQU0oc3JjT2Zmc2V0KTsKLSAg
ICBVTlVTRURfUEFSQU0oc3JjTGVuZ3RoKTsKKyAgICBVTlVTRURfUEFSQU0ocHJvZ3JhbSk7Cisg
ICAgVU5VU0VEX1BBUkFNKHVuaWZvcm1CbG9ja0luZGV4KTsKKyAgICBVTlVTRURfUEFSQU0ocG5h
bWUpOworICAgIFVOVVNFRF9QQVJBTShwYXJhbXMpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjp1bmlmb3JtM2Z2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0xmbG9hdCog
ZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCit2b2lkIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjp0ZXhJbWFnZTJEKEdDR0xlbnVtLCBHQ0dMaW50LCBHQ0dMZW51
bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWksIEdDR0xpbnQsIEdDR0xlbnVtLCBHQ0dMZW51bSAsIEdD
R0xpbnRwdHIpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGxvY2F0aW9uKTsKLSAgICBVTlVTRURfUEFS
QU0oZGF0YSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY09mZnNldCk7Ci0gICAgVU5VU0VEX1BBUkFN
KHNyY0xlbmd0aCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm00
ZnYoR0NHTGludCBsb2NhdGlvbiwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNP
ZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OnRleFN1YkltYWdlMkQoR0NHTGVudW0sIEdDR0xpbnQsIEdDR0xpbnQsIEdDR0xpbnQsIEdDR0xz
aXplaSwgR0NHTHNpemVpLCBHQ0dMZW51bSwgR0NHTGVudW0sIEdDR0xpbnRwdHIpCiB7Ci0gICAg
VU5VU0VEX1BBUkFNKGxvY2F0aW9uKTsKLSAgICBVTlVTRURfUEFSQU0oZGF0YSk7Ci0gICAgVU5V
U0VEX1BBUkFNKHNyY09mZnNldCk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY0xlbmd0aCk7CiB9CiAK
LXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0xaXYoR0NHTGludCBsb2NhdGlv
biwgY29uc3QgR0NHTGludCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNM
ZW5ndGgpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjb21wcmVzc2VkVGV4SW1hZ2Uy
RChHQ0dMZW51bSwgR0NHTGludCwgR0NHTGVudW0sIEdDR0xzaXplaSwgR0NHTHNpemVpLCBHQ0dM
aW50LCBHQ0dMc2l6ZWksIEdDR0xpbnRwdHIpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGxvY2F0aW9u
KTsKLSAgICBVTlVTRURfUEFSQU0oZGF0YSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY09mZnNldCk7
Ci0gICAgVU5VU0VEX1BBUkFNKHNyY0xlbmd0aCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OnVuaWZvcm0yaXYoR0NHTGludCBsb2NhdGlvbiwgY29uc3QgR0NHTGludCogZGF0
YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCit2b2lkIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChHQ0dMZW51bSwgR0NHTGlu
dCwgR0NHTGludCwgR0NHTGludCwgR0NHTHNpemVpLCBHQ0dMc2l6ZWksIEdDR0xlbnVtLCBHQ0dM
c2l6ZWksIEdDR0xpbnRwdHIpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGxvY2F0aW9uKTsKLSAgICBV
TlVTRURfUEFSQU0oZGF0YSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY09mZnNldCk7Ci0gICAgVU5V
U0VEX1BBUkFNKHNyY0xlbmd0aCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OnVuaWZvcm0zaXYoR0NHTGludCBsb2NhdGlvbiwgY29uc3QgR0NHTGludCogZGF0YSwgR0NHTHVp
bnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjp0ZXhJbWFnZTNEKEdDR0xlbnVtLCBHQ0dMaW50LCBHQ0dMaW50LCBHQ0dMc2l6ZWks
IEdDR0xzaXplaSwgR0NHTHNpemVpLCBHQ0dMaW50LCBHQ0dMZW51bSwgR0NHTGVudW0sIEdDR0xT
cGFuPGNvbnN0IEdDR0x2b2lkPikKIHsKLSAgICBVTlVTRURfUEFSQU0obG9jYXRpb24pOwotICAg
IFVOVVNFRF9QQVJBTShkYXRhKTsKLSAgICBVTlVTRURfUEFSQU0oc3JjT2Zmc2V0KTsKLSAgICBV
TlVTRURfUEFSQU0oc3JjTGVuZ3RoKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6dW5pZm9ybTRpdihHQ0dMaW50IGxvY2F0aW9uLCBjb25zdCBHQ0dMaW50KiBkYXRhLCBHQ0dM
dWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OnRleEltYWdlM0QoR0NHTGVudW0sIEdDR0xpbnQsIEdDR0xpbnQsIEdDR0xzaXpl
aSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWksIEdDR0xpbnQsIEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NH
TGludHB0cikKIHsKLSAgICBVTlVTRURfUEFSQU0obG9jYXRpb24pOwotICAgIFVOVVNFRF9QQVJB
TShkYXRhKTsKLSAgICBVTlVTRURfUEFSQU0oc3JjT2Zmc2V0KTsKLSAgICBVTlVTRURfUEFSQU0o
c3JjTGVuZ3RoKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybU1h
dHJpeDJmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdD
R0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCit2
b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp0ZXhTdWJJbWFnZTNEKEdDR0xlbnVtLCBHQ0dM
aW50LCBHQ0dMaW50LCBHQ0dMaW50LCBHQ0dMaW50LCBHQ0dMc2l6ZWksIEdDR0xzaXplaSwgR0NH
THNpemVpLCBHQ0dMZW51bSwgR0NHTGVudW0sIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPikKIHsK
LSAgICBVTlVTRURfUEFSQU0obG9jYXRpb24pOwotICAgIFVOVVNFRF9QQVJBTSh0cmFuc3Bvc2Up
OwotICAgIFVOVVNFRF9QQVJBTShkYXRhKTsKLSAgICBVTlVTRURfUEFSQU0oc3JjT2Zmc2V0KTsK
LSAgICBVTlVTRURfUEFSQU0oc3JjTGVuZ3RoKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6dW5pZm9ybU1hdHJpeDNmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0
cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dM
dWludCBzcmNMZW5ndGgpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp0ZXhTdWJJbWFn
ZTNEKEdDR0xlbnVtLCBHQ0dMaW50LCBHQ0dMaW50LCBHQ0dMaW50LCBHQ0dMaW50LCBHQ0dMc2l6
ZWksIEdDR0xzaXplaSwgR0NHTHNpemVpLCBHQ0dMZW51bSwgR0NHTGVudW0sIEdDR0xpbnRwdHIp
CiB7Ci0gICAgVU5VU0VEX1BBUkFNKGxvY2F0aW9uKTsKLSAgICBVTlVTRURfUEFSQU0odHJhbnNw
b3NlKTsKLSAgICBVTlVTRURfUEFSQU0oZGF0YSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY09mZnNl
dCk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY0xlbmd0aCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXg0ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xl
YW4gdHJhbnNwb3NlLCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwg
R0NHTHVpbnQgc3JjTGVuZ3RoKQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y29tcHJl
c3NlZFRleEltYWdlM0QoR0NHTGVudW0sIEdDR0xpbnQsIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdD
R0xzaXplaSwgR0NHTHNpemVpLCBHQ0dMaW50LCBHQ0dMc2l6ZWksIEdDR0xTcGFuPGNvbnN0IEdD
R0x2b2lkPikKIHsKLSAgICBVTlVTRURfUEFSQU0obG9jYXRpb24pOwotICAgIFVOVVNFRF9QQVJB
TSh0cmFuc3Bvc2UpOwotICAgIFVOVVNFRF9QQVJBTShkYXRhKTsKLSAgICBVTlVTRURfUEFSQU0o
c3JjT2Zmc2V0KTsKLSAgICBVTlVTRURfUEFSQU0oc3JjTGVuZ3RoKTsKIH0KIAotdm9pZCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZFBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NH
THNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVt
IHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
Y29tcHJlc3NlZFRleEltYWdlM0QoR0NHTGVudW0sIEdDR0xpbnQsIEdDR0xlbnVtLCBHQ0dMc2l6
ZWksIEdDR0xzaXplaSwgR0NHTHNpemVpLCBHQ0dMaW50LCBHQ0dMc2l6ZWksIEdDR0xpbnRwdHIp
CiB7Ci0gICAgVU5VU0VEX1BBUkFNKHgpOwotICAgIFVOVVNFRF9QQVJBTSh5KTsKLSAgICBVTlVT
RURfUEFSQU0od2lkdGgpOwotICAgIFVOVVNFRF9QQVJBTShoZWlnaHQpOwotICAgIFVOVVNFRF9Q
QVJBTShmb3JtYXQpOwotICAgIFVOVVNFRF9QQVJBTSh0eXBlKTsKLSAgICBVTlVTRURfUEFSQU0o
b2Zmc2V0KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZFBpeGVscyhH
Q0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBH
Q0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIGNvbnN0IHZvaWQqIGRzdERhdGEsIEdDR0x1
aW50IGRzdE9mZnNldCkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNvbXByZXNzZWRU
ZXhTdWJJbWFnZTNEKEdDR0xlbnVtLCBHQ0dMaW50LCBHQ0dMaW50LCBHQ0dMaW50LCBHQ0dMaW50
LCBHQ0dMc2l6ZWksIEdDR0xzaXplaSwgR0NHTHNpemVpLCBHQ0dMZW51bSwgR0NHTHNpemVpLCBH
Q0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4pCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHgpOwotICAgIFVO
VVNFRF9QQVJBTSh5KTsKLSAgICBVTlVTRURfUEFSQU0od2lkdGgpOwotICAgIFVOVVNFRF9QQVJB
TShoZWlnaHQpOwotICAgIFVOVVNFRF9QQVJBTShmb3JtYXQpOwotICAgIFVOVVNFRF9QQVJBTSh0
eXBlKTsKLSAgICBVTlVTRURfUEFSQU0oZHN0RGF0YSk7Ci0gICAgVU5VU0VEX1BBUkFNKGRzdE9m
ZnNldCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEFjdGl2ZVVuaWZv
cm1CbG9ja2l2KEdDR0x1aW50IHByb2dyYW0sIEdDR0x1aW50IHVuaWZvcm1CbG9ja0luZGV4LCBH
Q0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGludD4gcGFyYW1zKQordm9pZCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6Y29tcHJlc3NlZFRleFN1YkltYWdlM0QoR0NHTGVudW0sIEdDR0xpbnQs
IEdDR0xpbnQsIEdDR0xpbnQsIEdDR0xpbnQsIEdDR0xzaXplaSwgR0NHTHNpemVpLCBHQ0dMc2l6
ZWksIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xpbnRwdHIpCiB7Ci0gICAgVU5VU0VEX1BBUkFN
KHByb2dyYW0pOwotICAgIFVOVVNFRF9QQVJBTSh1bmlmb3JtQmxvY2tJbmRleCk7Ci0gICAgVU5V
U0VEX1BBUkFNKHBuYW1lKTsKLSAgICBVTlVTRURfUEFSQU0ocGFyYW1zKTsKIH0KIAogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNz
Q29udGV4dEdMT3BlbkdMRVMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMRVMuY3BwCmluZGV4IGExZDgwOTJiY2NhZTAw
OGQ2ZTY5ZThjZDhmNmRkZmIxN2FjYWYwMGYuLjIzZDc0ZmE4MGQ3MDc5MWJlNjAwZGY1OGU3NTYx
NzMzOTZhYTU1MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEVTLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xFUy5jcHAK
QEAgLTIxNSwxNSArMjE1LDE0IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFNo
YWRlclByZWNpc2lvbkZvcm1hdChHQ0dMZW51bSBzaGFkZXJUeXBlLCBHQ0dMCiAgICAgOjpnbEdl
dFNoYWRlclByZWNpc2lvbkZvcm1hdChzaGFkZXJUeXBlLCBwcmVjaXNpb25UeXBlLCByYW5nZS5k
YXRhLCBwcmVjaXNpb24pOwogfQogCi1ib29sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp0ZXhJ
bWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxm
b3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIs
IEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgY29uc3Qgdm9pZCogcGl4ZWxzKQordm9p
ZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdD
R0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdD
R0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVt
IHR5cGUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBwaXhlbHMpCiB7Ci0gICAgaWYgKHdpZHRo
ICYmIGhlaWdodCAmJiAhcGl4ZWxzKSB7CisgICAgaWYgKHdpZHRoICYmIGhlaWdodCAmJiAhcGl4
ZWxzLmRhdGEpIHsKICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoSU5WQUxJRF9WQUxVRSk7Ci0g
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHRleElt
YWdlMkREaXJlY3QodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQs
IGJvcmRlciwgZm9ybWF0LCB0eXBlLCBwaXhlbHMpOwotICAgIHJldHVybiB0cnVlOworICAgIHRl
eEltYWdlMkREaXJlY3QodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWln
aHQsIGJvcmRlciwgZm9ybWF0LCB0eXBlLCBwaXhlbHMuZGF0YSk7CiB9CiAKIHZvaWQgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OnZhbGlkYXRlQXR0cmlidXRlcygpCg==
</data>
<flag name="commit-queue"
          id="431888"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>414897</attachid>
            <date>2020-11-26 05:38:47 -0800</date>
            <delta_ts>2020-11-26 05:43:49 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219256-20201126153845.patch</filename>
            <type>text/plain</type>
            <size>203719</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwMTY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzIzYWI2YjRlNmM0NDFj
MDYzZWM1Mzg0YzZmOTA5NDdiZDFhNDY5ZC4uNDYxNzUzYzg2N2RlMDc0MjA5Y2QzNzY2ODkzZGY5
NTQzMzJkMzRlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzNiBAQAorMjAyMC0xMS0yMyAgS2lt
bW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIEdyYXBoaWNzQ29u
dGV4dEdMIHNob3VsZCBoYXZlIHJvYnVzdCBtdWx0aXZhbHVlIHNldHRlcnMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxOTI1NgorCisgICAgICAgIFJl
dmlld2VkIGJ5IERlYW4gSmFja3Nvbi4KKworICAgICAgICBSZXBsYWNlIGJ1ZlNpemUsIHBvaW50
ZXIgcGFpcnMgYW5kIHBsYWluIHBvaW50ZXJzIGluIEdyYXBoaWNzQ29udGV4dEdMCisgICAgICAg
IHdpdGggR0NHTFNwYW4uIFRoaXMgbWFrZXMgaXQgZWFzaWVyIHRvIHVuZGVyc3RhbmQgaG93IG1h
bnkgdmFsdWVzIHRoZXJlCisgICAgICAgIGFyZSBwb2ludGVkIGJ5IHRoZSBwb2ludGVyLiBUaGlz
IGlzIG5lZWRlZCBmb3Igc2ltcGxlciBpbXBsZW1lbnRhdGlvbiBvZiBHUFUKKyAgICAgICAgcHJv
Y2VzcyBJUEMsIHdoZXJlIHRoZSBJUEMgbGF5ZXIgZG9lcyBub3QgbmVlZCB0byBpbnRlcnByZXQg
dGhlIE9wZW5HTAorICAgICAgICBwcm9wZXJ0aWVzLgorCisgICAgICAgIEluIFdlYkdMIGltcGxl
bWVudGF0aW9uLCBjaGFuZ2VzIHRoZSB2YWxpZGF0aW9uIGZ1bmN0aW9ucyB0byByZXR1cm4KKyAg
ICAgICAgdGhlIG1lbW9yeSByZWZlcmVuY2UgdGhhdCB3aWxsIGJlIHRvdWNoZWQgYnkgdGhlIHZh
bGlkIGZ1bmN0aW9uIGNhbGwuCisgICAgICAgIE9uIHZhbGlkYXRpb24gZmFpbHVyZSwgbnVsbG9w
dCB3aWxsIGJlIHJldHVybmVkLgorCisgICAgICAgIE1ha2VzIHRoZSBleGlzdGluZyBHcmFwaGlj
c0NvbnRleHRHTCB0ZXh0dXJlIGltYWdlIG1hbmlwdWxhdGlvbiBmdW5jdGlvbnMKKyAgICAgICAg
dG8gc3VwcG9ydCByb2J1c3QgaW52b2NhdGlvbi4gUmVtb3ZlcyB0aGUgcm9idXN0IEFQSXMgZnJv
bSBFeHRlbnNpb25zR0wuCisgICAgICAgIEFkZHMgdGhlIG1pc3NpbmcgdGV4dHVyZSBpbWFnZSBt
YW5pcHVsYXRpb24gZnVuY3Rpb25zIGZyb20gRXh0ZW5zaW9uR0wKKyAgICAgICAgdG8gR3JhcGhp
Y3NDb250ZXh0R0wuIEltcGxlbWVudGF0aW9ucyBmb3IgdGhlIG1vdmVkIG1ldGhvZHMKKyAgICAg
ICAgZXhpc3Qgb25seSBmb3IgQU5HTEUgaW1wbGVtZW50YXRpb24gb2YgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0wuCisKKyAgICAgICAgQ2hhbmdlcyB0aGUgQU5HTEUgdmFyaWFudCBvZiBHcmFwaGlj
c0NvbnRleHRHTDo6dGV4SW1hZ2UyRCB0byBiZQorICAgICAgICBpbXBsZW1lbnRlZCBhcyBFeHRl
bnNpb25zR0xBTkdMRTo6dGV4SW1hZ2UyRFJvYnVzdEFOR0xFLiBCZWZvcmUsIGZvcgorICAgICAg
ICBBTkdMRSB0aGUgR3JhcGhpY3NDb250ZXh0R0w6OnRleEltYWdlMkQgd2FzIHVudXNlZC4KKwor
ICAgICAgICBObyBuZXcgdGVzdHMsIGEgcmVmYWN0b3IuCisKKyAgICAgICAgKiBodG1sL2NhbnZh
cy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJl
bmRlcmluZ0NvbnRleHQ6OmludmFsaWRhdGVGcmFtZWJ1ZmZlcik6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjppbnZhbGlkYXRlU3ViRnJhbWVidWZmZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTF1aXYpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTJ1aXYpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTN1aXYpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTR1aXYpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybU1hdHJpeDJ4M2Z2
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm1NYXRy
aXgzeDJmdik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlm
b3JtTWF0cml4Mng0ZnYpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4
dDo6dW5pZm9ybU1hdHJpeDR4MmZ2KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmlu
Z0NvbnRleHQ6OnVuaWZvcm1NYXRyaXgzeDRmdik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJS
ZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtTWF0cml4NHgzZnYpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dmVydGV4QXR0cmliSTRpdik6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp2ZXJ0ZXhBdHRyaWJJNHVpdik6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpkcmF3QnVmZmVycyk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpjbGVhckJ1ZmZlcml2KToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmNsZWFyQnVmZmVydWl2KToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmNsZWFyQnVmZmVyZnYpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dmFsaWRhdGVDbGVhckJ1
ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3Jt
MWZ2KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm0y
ZnYpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTNm
dik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtNGZ2
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm0xaXYp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTJpdik6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtM2l2KToK
KyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm00aXYpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybU1hdHJpeDJm
dik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtTWF0
cml4M2Z2KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZv
cm1NYXRyaXg0ZnYpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRl
eHQuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTERyYXdCdWZmZXJzLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdMRHJhd0J1ZmZlcnM6OmRyYXdCdWZmZXJzV0VCR0wpOgorICAgICAg
ICAqIGh0bWwvY2FudmFzL1dlYkdMRnJhbWVidWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
V2ViR0xGcmFtZWJ1ZmZlcjo6ZHJhd0J1ZmZlcnNJZk5lY2Vzc2FyeSk6CisgICAgICAgICogaHRt
bC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpidWZmZXJEYXRhKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmJ1ZmZlclN1YkRhdGEpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybTFmdik6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtMmZ2KToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm0zZnYpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybTRmdik6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtMWl2KToK
KyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm0yaXYp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybTNp
dik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3Jt
NGl2KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZv
cm1NYXRyaXgyZnYpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZTo6dW5pZm9ybU1hdHJpeDNmdik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlOjp1bmlmb3JtTWF0cml4NGZ2KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlVW5pZm9ybU1hdHJpeFBhcmFtZXRlcnMpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmVydGV4QXR0cmliZnZJ
bXBsKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmg6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZVVu
aWZvcm1QYXJhbWV0ZXJzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNpb25z
R0wuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXNHTC5oOgorICAgICAgICAo
R0NHTFNwYW46OkdDR0xTcGFuKToKKyAgICAgICAgKHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90
Pjo6bWF4KToKKyAgICAgICAgKG1ha2VHQ0dMU3Bhbik6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXh0
ZW5zaW9uc0dMQU5HTEU6OmRyYXdCdWZmZXJzRVhUKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmJ1ZmZlckRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmJ1ZmZlclN1YkRhdGEpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0xZnYpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0yZnYpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0zZnYpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm00ZnYpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0xaXYpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0yaXYpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0zaXYpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm00aXYpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXgyZnYpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXgzZnYpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXg0ZnYp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJp
YjFmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4
QXR0cmliMmZ2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2
ZXJ0ZXhBdHRyaWIzZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OnZlcnRleEF0dHJpYjRmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6aW52YWxpZGF0ZUZyYW1lYnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjppbnZhbGlkYXRlU3ViRnJhbWVidWZmZXIpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0xdWl2KToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMnVpdik6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTN1aXYpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm00dWl2KToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4MngzZnYp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRy
aXgzeDJmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5p
Zm9ybU1hdHJpeDJ4NGZ2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjp1bmlmb3JtTWF0cml4NHgyZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXgzeDRmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybU1hdHJpeDR4M2Z2KToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2ZXJ0ZXhBdHRyaWJJNGl2KToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2ZXJ0ZXhBdHRyaWJJNHVpdik6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6ZHJhd0J1ZmZlcnMpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNsZWFyQnVmZmVyaXYp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNsZWFyQnVmZmVy
dWl2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjbGVhckJ1
ZmZlcmZ2KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jdi9HcmFwaGljc0NvbnRleHRH
TENWQU5HTEUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xDVkFOR0xF
Ojppbml0aWFsaXplVVZDb250ZXh0T2JqZWN0cyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTENWQU5HTEU6OmNvcHlQaXhlbEJ1ZmZlclRvVGV4dHVyZSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmg6CisKIDIw
MjAtMTEtMjIgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgogCiAgICAgICAgIFtM
RkNdW0ludGVncmF0aW9uXSBDb252ZXJ0IHNvbWUgcmVtYWluaW5nIElubGluZUJveCBhY2Nlc3Mg
dG8gdXNlIGlubGluZSBpdGVyYXRvcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcAppbmRleCA1NWJjMWY4ZGIyNDlkMzM4MjJl
Nzg4OWNhNzgzZjViZWMwMjVhMjk5Li42OGVmM2E5OWZmMDViNGEzMzJmOTU5ODE0YzllODg4YzI5
NWY3MzY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5k
ZXJpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJS
ZW5kZXJpbmdDb250ZXh0LmNwcApAQCAtODk1LDcgKzg5NSw3IEBAIHZvaWQgV2ViR0wyUmVuZGVy
aW5nQ29udGV4dDo6aW52YWxpZGF0ZUZyYW1lYnVmZmVyKEdDR0xlbnVtIHRhcmdldCwgY29uc3Qg
VmVjdG9yCiAgICAgVmVjdG9yPEdDR0xlbnVtPiB0cmFuc2xhdGVkQXR0YWNobWVudHMgPSBhdHRh
Y2htZW50czsKICAgICBpZiAoIWNoZWNrQW5kVHJhbnNsYXRlQXR0YWNobWVudHMoImludmFsaWRh
dGVGcmFtZWJ1ZmZlciIsIHRhcmdldCwgdHJhbnNsYXRlZEF0dGFjaG1lbnRzKSkKICAgICAgICAg
cmV0dXJuOwotICAgIG1fY29udGV4dC0+aW52YWxpZGF0ZUZyYW1lYnVmZmVyKHRhcmdldCwgdHJh
bnNsYXRlZEF0dGFjaG1lbnRzLnNpemUoKSwgdHJhbnNsYXRlZEF0dGFjaG1lbnRzLmRhdGEoKSk7
CisgICAgbV9jb250ZXh0LT5pbnZhbGlkYXRlRnJhbWVidWZmZXIodGFyZ2V0LCB0cmFuc2xhdGVk
QXR0YWNobWVudHMpOwogfQogCiB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmludmFsaWRh
dGVTdWJGcmFtZWJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQsIGNvbnN0IFZlY3RvcjxHQ0dMZW51bT4m
IGF0dGFjaG1lbnRzLCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dM
c2l6ZWkgaGVpZ2h0KQpAQCAtOTA2LDcgKzkwNiw3IEBAIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29u
dGV4dDo6aW52YWxpZGF0ZVN1YkZyYW1lYnVmZmVyKEdDR0xlbnVtIHRhcmdldCwgY29uc3QgVmVj
CiAgICAgVmVjdG9yPEdDR0xlbnVtPiB0cmFuc2xhdGVkQXR0YWNobWVudHMgPSBhdHRhY2htZW50
czsKICAgICBpZiAoIWNoZWNrQW5kVHJhbnNsYXRlQXR0YWNobWVudHMoImludmFsaWRhdGVTdWJG
cmFtZWJ1ZmZlciIsIHRhcmdldCwgdHJhbnNsYXRlZEF0dGFjaG1lbnRzKSkKICAgICAgICAgcmV0
dXJuOwotICAgIG1fY29udGV4dC0+aW52YWxpZGF0ZVN1YkZyYW1lYnVmZmVyKHRhcmdldCwgdHJh
bnNsYXRlZEF0dGFjaG1lbnRzLnNpemUoKSwgdHJhbnNsYXRlZEF0dGFjaG1lbnRzLmRhdGEoKSwg
eCwgeSwgd2lkdGgsIGhlaWdodCk7CisgICAgbV9jb250ZXh0LT5pbnZhbGlkYXRlU3ViRnJhbWVi
dWZmZXIodGFyZ2V0LCB0cmFuc2xhdGVkQXR0YWNobWVudHMsIHgsIHksIHdpZHRoLCBoZWlnaHQp
OwogfQogCiB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnJlYWRCdWZmZXIoR0NHTGVudW0g
c3JjKQpAQCAtMTEyOSw3ICsxMTI5LDcgQEAgdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp0
ZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludAogICAgIGlm
ICghdmFsaWRhdGVUZXhGdW5jKCJ0ZXhJbWFnZTJEIiwgVGV4SW1hZ2VGdW5jdGlvblR5cGU6OlRl
eEltYWdlLCBTb3VyY2VVbnBhY2tCdWZmZXIsIHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0
LCB3aWR0aCwgaGVpZ2h0LCAxLCBib3JkZXIsIGZvcm1hdCwgdHlwZSwgMCwgMCwgMCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnRleEltYWdlMkRS
b2J1c3RBTkdMRSh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwg
Ym9yZGVyLCBmb3JtYXQsIHR5cGUsIDAsIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KG9mZnNldCkp
OworICAgIG1fY29udGV4dC0+dGV4SW1hZ2UyRCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1h
dCwgd2lkdGgsIGhlaWdodCwgYm9yZGVyLCBmb3JtYXQsIHR5cGUsIG9mZnNldCk7CiB9CiAKIEV4
Y2VwdGlvbk9yPHZvaWQ+IFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnRleEltYWdlMkQoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IGludGVybmFsZm9ybWF0LCBHQ0dMc2l6
ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3Jt
YXQsIEdDR0xlbnVtIHR5cGUsIFRleEltYWdlU291cmNlJiYgc291cmNlKQpAQCAtMTE3Myw3ICsx
MTczLDcgQEAgdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp0ZXhJbWFnZTNEKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludAogICAgIGlmICghdmFsaWRhdGVUZXhGdW5j
KCJ0ZXhJbWFnZTNEIiwgVGV4SW1hZ2VGdW5jdGlvblR5cGU6OlRleEltYWdlLCBTb3VyY2VVbnBh
Y2tCdWZmZXIsIHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBk
ZXB0aCwgYm9yZGVyLCBmb3JtYXQsIHR5cGUsIDAsIDAsIDApKQogICAgICAgICByZXR1cm47CiAK
LSAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS50ZXhJbWFnZTNEUm9idXN0QU5HTEUodGFy
Z2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBib3JkZXIs
IGZvcm1hdCwgdHlwZSwgMCwgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ob2Zmc2V0KSk7CisgICAg
bV9jb250ZXh0LT50ZXhJbWFnZTNEKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0
aCwgaGVpZ2h0LCBkZXB0aCwgYm9yZGVyLCBmb3JtYXQsIHR5cGUsICBvZmZzZXQpOwogfQogCiBF
eGNlcHRpb25Pcjx2b2lkPiBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp0ZXhJbWFnZTNEKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCBpbnRlcm5hbGZvcm1hdCwgR0NHTHNp
emVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xpbnQgYm9y
ZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIFRleEltYWdlU291cmNlJiYgc291
cmNlKQpAQCAtMTI1OSw3ICsxMjU5LDcgQEAgdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp0
ZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGkKICAgICBp
ZiAoIXZhbGlkYXRlVGV4RnVuYygidGV4U3ViSW1hZ2UyRCIsIFRleEltYWdlRnVuY3Rpb25UeXBl
OjpUZXhTdWJJbWFnZSwgU291cmNlVW5wYWNrQnVmZmVyLCB0YXJnZXQsIGxldmVsLCAwLCB3aWR0
aCwgaGVpZ2h0LCAxLCAwLCBmb3JtYXQsIHR5cGUsIHhvZmZzZXQsIHlvZmZzZXQsIDApKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS50ZXhTdWJJbWFn
ZTJEUm9idXN0QU5HTEUodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhl
aWdodCwgZm9ybWF0LCB0eXBlLCAwLCByZWludGVycHJldF9jYXN0PHZvaWQqPihvZmZzZXQpKTsK
KyAgICBtX2NvbnRleHQtPnRleFN1YkltYWdlMkQodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9m
ZnNldCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBvZmZzZXQpOwogfQogCiBFeGNlcHRp
b25Pcjx2b2lkPiBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp0ZXhTdWJJbWFnZTJEKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQs
IEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dM
ZW51bSB0eXBlLCBUZXhJbWFnZVNvdXJjZSYmIHNvdXJjZSkKQEAgLTEzMDMsNyArMTMwMyw3IEBA
IHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dGV4U3ViSW1hZ2UzRChHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpCiAgICAgaWYgKCF2YWxpZGF0ZVRleEZ1bmMoInRleFN1
YkltYWdlM0QiLCBUZXhJbWFnZUZ1bmN0aW9uVHlwZTo6VGV4U3ViSW1hZ2UsIFNvdXJjZVVucGFj
a0J1ZmZlciwgdGFyZ2V0LCBsZXZlbCwgMCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIDAsIGZvcm1h
dCwgdHlwZSwgeG9mZnNldCwgeW9mZnNldCwgem9mZnNldCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnRleFN1YkltYWdlM0RSb2J1c3RBTkdMRSh0
YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB6b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBk
ZXB0aCwgZm9ybWF0LCB0eXBlLCAwLCByZWludGVycHJldF9jYXN0PHZvaWQqPihvZmZzZXQpKTsK
KyAgICBtX2NvbnRleHQtPnRleFN1YkltYWdlM0QodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9m
ZnNldCwgem9mZnNldCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGZvcm1hdCwgdHlwZSwgb2Zmc2V0
KTsKIH0KIAogdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp0ZXhTdWJJbWFnZTNEKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZz
ZXQsIEdDR0xpbnQgem9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBH
Q0dMc2l6ZWkgZGVwdGgsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgUmVmUHRyPEFy
cmF5QnVmZmVyVmlldz4mJiBzcmNEYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQpCkBAIC0xMzY5LDEw
ICsxMzY5LDcgQEAgdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojpjb21wcmVzc2VkVGV4SW1h
Z2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwKICAgICB9CiAgICAgaWYgKCF2YWxp
ZGF0ZVRleHR1cmUyREJpbmRpbmcoImNvbXByZXNzZWRUZXhJbWFnZTJEIiwgdGFyZ2V0KSkKICAg
ICAgICAgcmV0dXJuOwotICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmNvbXByZXNzZWRU
ZXhJbWFnZTJEUm9idXN0QU5HTEUoCi0gICAgICAgIHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9y
bWF0LCB3aWR0aCwKLSAgICAgICAgaGVpZ2h0LCBib3JkZXIsIGltYWdlU2l6ZSwKLSAgICAgICAg
MCwgcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4ob2Zmc2V0KSk7CisgICAgbV9jb250ZXh0LT5j
b21wcmVzc2VkVGV4SW1hZ2UyRCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgs
IGhlaWdodCwgYm9yZGVyLCBpbWFnZVNpemUsIG9mZnNldCk7CiB9CiAKIHZvaWQgV2ViR0wyUmVu
ZGVyaW5nQ29udGV4dDo6Y29tcHJlc3NlZFRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
aW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dM
c2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgQXJyYXlCdWZmZXJWaWV3JiBzcmNEYXRhLCBH
Q0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aE92ZXJyaWRlKQpAQCAtMTM5MCwx
MCArMTM4Nyw3IEBAIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Y29tcHJlc3NlZFRleElt
YWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsCiAgICAgYXV0byBzbGljZSA9IHNs
aWNlQXJyYXlCdWZmZXJWaWV3KCJjb21wcmVzc2VkVGV4SW1hZ2UyRCIsIHNyY0RhdGEsIHNyY09m
ZnNldCwgc3JjTGVuZ3RoT3ZlcnJpZGUpOwogICAgIGlmICghc2xpY2UpCiAgICAgICAgIHJldHVy
bjsKLSAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5jb21wcmVzc2VkVGV4SW1hZ2UyRFJv
YnVzdEFOR0xFKAotICAgICAgICB0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgs
IGhlaWdodCwKLSAgICAgICAgYm9yZGVyLCBzbGljZS0+Ynl0ZUxlbmd0aCgpLAotICAgICAgICBz
bGljZS0+Ynl0ZUxlbmd0aCgpLCBzbGljZS0+YmFzZUFkZHJlc3MoKSk7CisgICAgbV9jb250ZXh0
LT5jb21wcmVzc2VkVGV4SW1hZ2UyRCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lk
dGgsIGhlaWdodCwgYm9yZGVyLCBzbGljZS0+Ynl0ZUxlbmd0aCgpLCBtYWtlR0NHTFNwYW4oc2xp
Y2UtPmJhc2VBZGRyZXNzKCksIHNsaWNlLT5ieXRlTGVuZ3RoKCkpKTsKIH0KIAogdm9pZCBXZWJH
TDJSZW5kZXJpbmdDb250ZXh0Ojpjb21wcmVzc2VkVGV4SW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQs
IEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgs
IEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGludCBib3JkZXIsIEdDR0xz
aXplaSBpbWFnZVNpemUsIEdDR0xpbnQ2NCBvZmZzZXQpCkBAIC0xNDA4LDEwICsxNDAyLDcgQEAg
dm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojpjb21wcmVzc2VkVGV4SW1hZ2UzRChHQ0dMZW51
bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwKICAgICB9CiAgICAgaWYgKCF2YWxpZGF0ZVRleHR1cmUz
REJpbmRpbmcoImNvbXByZXNzZWRUZXhJbWFnZTNEIiwgdGFyZ2V0KSkKICAgICAgICAgcmV0dXJu
OwotICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmNvbXByZXNzZWRUZXhJbWFnZTNEUm9i
dXN0QU5HTEUoCi0gICAgICAgIHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwK
LSAgICAgICAgaGVpZ2h0LCBkZXB0aCwgYm9yZGVyLCBpbWFnZVNpemUsCi0gICAgICAgIDAsIHJl
aW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KG9mZnNldCkpOworICAgIG1fY29udGV4dC0+Y29tcHJl
c3NlZFRleEltYWdlM0QodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWln
aHQsIGRlcHRoLCBib3JkZXIsIGltYWdlU2l6ZSwgb2Zmc2V0KTsKIH0KIAogdm9pZCBXZWJHTDJS
ZW5kZXJpbmdDb250ZXh0Ojpjb21wcmVzc2VkVGV4SW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdD
R0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdD
R0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGludCBib3JkZXIsIEFycmF5QnVm
ZmVyVmlldyYgc3JjRGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGhP
dmVycmlkZSkKQEAgLTE0MjksMTAgKzE0MjAsMTAgQEAgdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250
ZXh0Ojpjb21wcmVzc2VkVGV4SW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwK
ICAgICBhdXRvIHNsaWNlID0gc2xpY2VBcnJheUJ1ZmZlclZpZXcoImNvbXByZXNzZWRUZXhJbWFn
ZTNEIiwgc3JjRGF0YSwgc3JjT2Zmc2V0LCBzcmNMZW5ndGhPdmVycmlkZSk7CiAgICAgaWYgKCFz
bGljZSkKICAgICAgICAgcmV0dXJuOwotICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmNv
bXByZXNzZWRUZXhJbWFnZTNEUm9idXN0QU5HTEUoCisgICAgbV9jb250ZXh0LT5jb21wcmVzc2Vk
VGV4SW1hZ2UzRCgKICAgICAgICAgdGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRo
LCBoZWlnaHQsCiAgICAgICAgIGRlcHRoLCBib3JkZXIsIHNsaWNlLT5ieXRlTGVuZ3RoKCksCi0g
ICAgICAgIHNsaWNlLT5ieXRlTGVuZ3RoKCksIHNsaWNlLT5iYXNlQWRkcmVzcygpKTsKKyAgICAg
ICAgbWFrZUdDR0xTcGFuKHNsaWNlLT5iYXNlQWRkcmVzcygpLCBzbGljZS0+Ynl0ZUxlbmd0aCgp
KSk7CiB9CiAKIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Y29tcHJlc3NlZFRleFN1Yklt
YWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdD
R0xpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51
bSBmb3JtYXQsIEFycmF5QnVmZmVyVmlldyYgc3JjRGF0YSkKQEAgLTE0NjAsMTAgKzE0NTEsNyBA
QCB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKEdD
R0xlbnVtIHRhcmdldCwgR0NHTGludCBsZQogICAgIH0KICAgICBpZiAoIXZhbGlkYXRlVGV4dHVy
ZTJEQmluZGluZygiY29tcHJlc3NlZFRleEltYWdlMkQiLCB0YXJnZXQpKQogICAgICAgICByZXR1
cm47Ci0gICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuY29tcHJlc3NlZFRleFN1YkltYWdl
MkRSb2J1c3RBTkdMRSgKLSAgICAgICAgdGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwK
LSAgICAgICAgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCBpbWFnZVNpemUsCi0gICAgICAgIDAsIHJl
aW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KG9mZnNldCkpOworICAgIG1fY29udGV4dC0+Y29tcHJl
c3NlZFRleFN1YkltYWdlMkQodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgd2lkdGgs
IGhlaWdodCwgZm9ybWF0LCBpbWFnZVNpemUsIG9mZnNldCk7CiB9CiAKIHZvaWQgV2ViR0wyUmVu
ZGVyaW5nQ29udGV4dDo6Y29tcHJlc3NlZFRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTHNpemVp
IHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEFycmF5QnVmZmVyVmll
dyYgc3JjRGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGhPdmVycmlk
ZSkKQEAgLTE0ODEsMTAgKzE0NjksNyBAQCB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmNv
bXByZXNzZWRUZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZQogICAgIGF1
dG8gc2xpY2UgPSBzbGljZUFycmF5QnVmZmVyVmlldygiY29tcHJlc3NlZFRleFN1YkltYWdlMkQi
LCBzcmNEYXRhLCBzcmNPZmZzZXQsIHNyY0xlbmd0aE92ZXJyaWRlKTsKICAgICBpZiAoIXNsaWNl
KQogICAgICAgICByZXR1cm47Ci0gICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuY29tcHJl
c3NlZFRleFN1YkltYWdlMkRSb2J1c3RBTkdMRSgKLSAgICAgICAgdGFyZ2V0LCBsZXZlbCwgeG9m
ZnNldCwgeW9mZnNldCwKLSAgICAgICAgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCBzbGljZS0+Ynl0
ZUxlbmd0aCgpLAotICAgICAgICBzbGljZS0+Ynl0ZUxlbmd0aCgpLCBzbGljZS0+YmFzZUFkZHJl
c3MoKSk7CisgICAgbV9jb250ZXh0LT5jb21wcmVzc2VkVGV4U3ViSW1hZ2UyRCh0YXJnZXQsIGxl
dmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHNsaWNlLT5ieXRl
TGVuZ3RoKCksIG1ha2VHQ0dMU3BhbihzbGljZS0+YmFzZUFkZHJlc3MoKSwgc2xpY2UtPmJ5dGVM
ZW5ndGgoKSkpOwogfQogCiB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmNvbXByZXNzZWRU
ZXhTdWJJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zm
c2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xpbnQgem9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBH
Q0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTHNp
emVpIGltYWdlU2l6ZSwgR0NHTGludDY0IG9mZnNldCkKQEAgLTE0OTksMTAgKzE0ODQsNyBAQCB2
b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmNvbXByZXNzZWRUZXhTdWJJbWFnZTNEKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGludCBsZQogICAgIH0KICAgICBpZiAoIXZhbGlkYXRlVGV4dHVyZTNE
QmluZGluZygiY29tcHJlc3NlZFRleFN1YkltYWdlM0QiLCB0YXJnZXQpKQogICAgICAgICByZXR1
cm47Ci0gICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuY29tcHJlc3NlZFRleFN1YkltYWdl
M0RSb2J1c3RBTkdMRSgKLSAgICAgICAgdGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwg
em9mZnNldCwKLSAgICAgICAgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGZvcm1hdCwgaW1hZ2VTaXpl
LAotICAgICAgICAwLCByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihvZmZzZXQpKTsKKyAgICBt
X2NvbnRleHQtPmNvbXByZXNzZWRUZXhTdWJJbWFnZTNEKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQs
IHlvZmZzZXQsIHpvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBmb3JtYXQsIGltYWdlU2l6
ZSwgb2Zmc2V0KTsKIH0KIAogdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojpjb21wcmVzc2Vk
VGV4U3ViSW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9m
ZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMaW50IHpvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwg
R0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMZW51bSBmb3JtYXQsIEFycmF5
QnVmZmVyVmlldyYgc3JjRGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5n
dGhPdmVycmlkZSkKQEAgLTE1MjAsMTAgKzE1MDIsMTAgQEAgdm9pZCBXZWJHTDJSZW5kZXJpbmdD
b250ZXh0Ojpjb21wcmVzc2VkVGV4U3ViSW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQg
bGUKICAgICBhdXRvIHNsaWNlID0gc2xpY2VBcnJheUJ1ZmZlclZpZXcoImNvbXByZXNzZWRUZXhT
dWJJbWFnZTNEIiwgc3JjRGF0YSwgc3JjT2Zmc2V0LCBzcmNMZW5ndGhPdmVycmlkZSk7CiAgICAg
aWYgKCFzbGljZSkKICAgICAgICAgcmV0dXJuOwotICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9u
cygpLmNvbXByZXNzZWRUZXhTdWJJbWFnZTNEUm9idXN0QU5HTEUoCisgICAgbV9jb250ZXh0LT5j
b21wcmVzc2VkVGV4U3ViSW1hZ2UzRCgKICAgICAgICAgdGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwg
eW9mZnNldCwgem9mZnNldCwKICAgICAgICAgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGZvcm1hdCwg
c2xpY2UtPmJ5dGVMZW5ndGgoKSwKLSAgICAgICAgc2xpY2UtPmJ5dGVMZW5ndGgoKSwgc2xpY2Ut
PmJhc2VBZGRyZXNzKCkpOworICAgICAgICBtYWtlR0NHTFNwYW4oc2xpY2UtPmJhc2VBZGRyZXNz
KCksIHNsaWNlLT5ieXRlTGVuZ3RoKCkpKTsKIH0KIAogR0NHTGludCBXZWJHTDJSZW5kZXJpbmdD
b250ZXh0OjpnZXRGcmFnRGF0YUxvY2F0aW9uKFdlYkdMUHJvZ3JhbSYgcHJvZ3JhbSwgY29uc3Qg
U3RyaW5nJiBuYW1lKQpAQCAtMTU2Myw3MiArMTU0NSwxMDIgQEAgdm9pZCBXZWJHTDJSZW5kZXJp
bmdDb250ZXh0Ojp1bmlmb3JtNHVpKFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgR0NH
THVpbnQKIAogdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtMXVpdihXZWJHTFVu
aWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIFVpbnQzMkxpc3QmJiB2YWx1ZSwgR0NHTHVpbnQgc3Jj
T2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCiB7Ci0gICAgaWYgKGlzQ29udGV4dExvc3RPclBl
bmRpbmcoKSB8fCAhdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycygidW5pZm9ybTF1aXYiLCBsb2Nh
dGlvbiwgdmFsdWUsIDEsIHNyY09mZnNldCwgc3JjTGVuZ3RoKSkKKyAgICBpZiAoaXNDb250ZXh0
TG9zdE9yUGVuZGluZygpKQorICAgICAgICByZXR1cm47CisgICAgYXV0byBkYXRhID0gdmFsaWRh
dGVVbmlmb3JtUGFyYW1ldGVycygidW5pZm9ybTF1aXYiLCBsb2NhdGlvbiwgdmFsdWUsIDEsIHNy
Y09mZnNldCwgc3JjTGVuZ3RoKTsKKyAgICBpZiAoIWRhdGEpCiAgICAgICAgIHJldHVybjsKLSAg
ICBtX2NvbnRleHQtPnVuaWZvcm0xdWl2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCB2YWx1ZS5kYXRh
KCksIHNyY09mZnNldCwgc3JjTGVuZ3RoID8gc3JjTGVuZ3RoIDogKHZhbHVlLmxlbmd0aCgpIC0g
c3JjT2Zmc2V0KSk7CisgICAgbV9jb250ZXh0LT51bmlmb3JtMXVpdihsb2NhdGlvbi0+bG9jYXRp
b24oKSwgZGF0YS52YWx1ZSgpKTsKIH0KIAogdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1
bmlmb3JtMnVpdihXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIFVpbnQzMkxpc3QmJiB2
YWx1ZSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCiB7Ci0gICAgaWYg
KGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycygi
dW5pZm9ybTJ1aXYiLCBsb2NhdGlvbiwgdmFsdWUsIDIsIHNyY09mZnNldCwgc3JjTGVuZ3RoKSkK
KyAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpKQorICAgICAgICByZXR1cm47CisgICAg
YXV0byBkYXRhID0gdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycygidW5pZm9ybTJ1aXYiLCBsb2Nh
dGlvbiwgdmFsdWUsIDIsIHNyY09mZnNldCwgc3JjTGVuZ3RoKTsKKyAgICBpZiAoIWRhdGEpCiAg
ICAgICAgIHJldHVybjsKLSAgICBtX2NvbnRleHQtPnVuaWZvcm0ydWl2KGxvY2F0aW9uLT5sb2Nh
dGlvbigpLCB2YWx1ZS5kYXRhKCksIHNyY09mZnNldCwgKHNyY0xlbmd0aCA/IHNyY0xlbmd0aCA6
IHZhbHVlLmxlbmd0aCgpIC0gc3JjT2Zmc2V0KSAvIDIpOworICAgIG1fY29udGV4dC0+dW5pZm9y
bTJ1aXYobG9jYXRpb24tPmxvY2F0aW9uKCksIGRhdGEudmFsdWUoKSk7CiB9CiAKIHZvaWQgV2Vi
R0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTN1aXYoV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxv
Y2F0aW9uLCBVaW50MzJMaXN0JiYgdmFsdWUsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQg
c3JjTGVuZ3RoKQogewotICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlk
YXRlVW5pZm9ybVBhcmFtZXRlcnMoInVuaWZvcm0zdWl2IiwgbG9jYXRpb24sIHZhbHVlLCAzLCBz
cmNPZmZzZXQsIHNyY0xlbmd0aCkpCisgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSkK
KyAgICAgICAgcmV0dXJuOworICAgIGF1dG8gZGF0YSA9IHZhbGlkYXRlVW5pZm9ybVBhcmFtZXRl
cnMoInVuaWZvcm0zdWl2IiwgbG9jYXRpb24sIHZhbHVlLCAzLCBzcmNPZmZzZXQsIHNyY0xlbmd0
aCk7CisgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm47Ci0gICAgbV9jb250ZXh0LT51bmlm
b3JtM3Vpdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgdmFsdWUuZGF0YSgpLCBzcmNPZmZzZXQsIChz
cmNMZW5ndGggPyBzcmNMZW5ndGggOiB2YWx1ZS5sZW5ndGgoKSAtIHNyY09mZnNldCkgLyAzKTsK
KyAgICBtX2NvbnRleHQtPnVuaWZvcm0zdWl2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCBkYXRhLnZh
bHVlKCkpOwogfQogCiB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm00dWl2KFdl
YkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgVWludDMyTGlzdCYmIHZhbHVlLCBHQ0dMdWlu
dCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKIHsKLSAgICBpZiAoaXNDb250ZXh0TG9z
dE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKCJ1bmlmb3JtNHVpdiIs
IGxvY2F0aW9uLCB2YWx1ZSwgNCwgc3JjT2Zmc2V0LCBzcmNMZW5ndGgpKQorICAgIGlmIChpc0Nv
bnRleHRMb3N0T3JQZW5kaW5nKCkpCisgICAgICAgIHJldHVybjsKKyAgICBhdXRvIGRhdGEgPSB2
YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKCJ1bmlmb3JtNHVpdiIsIGxvY2F0aW9uLCB2YWx1ZSwg
NCwgc3JjT2Zmc2V0LCBzcmNMZW5ndGgpOworICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJu
OwotICAgIG1fY29udGV4dC0+dW5pZm9ybTR1aXYobG9jYXRpb24tPmxvY2F0aW9uKCksIHZhbHVl
LmRhdGEoKSwgc3JjT2Zmc2V0LCAoc3JjTGVuZ3RoID8gc3JjTGVuZ3RoIDogdmFsdWUubGVuZ3Ro
KCkgLSBzcmNPZmZzZXQpIC8gNCk7CisgICAgbV9jb250ZXh0LT51bmlmb3JtNHVpdihsb2NhdGlv
bi0+bG9jYXRpb24oKSwgZGF0YS52YWx1ZSgpKTsKIH0KIAogdm9pZCBXZWJHTDJSZW5kZXJpbmdD
b250ZXh0Ojp1bmlmb3JtTWF0cml4MngzZnYoV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9u
LCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEZsb2F0MzJMaXN0JiYgdiwgR0NHTHVpbnQgc3JjT2Zm
c2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCiB7Ci0gICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRp
bmcoKSB8fCAhdmFsaWRhdGVVbmlmb3JtTWF0cml4UGFyYW1ldGVycygidW5pZm9ybU1hdHJpeDJ4
M2Z2IiwgbG9jYXRpb24sIHRyYW5zcG9zZSwgdiwgNiwgc3JjT2Zmc2V0LCBzcmNMZW5ndGgpKQor
ICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCisgICAgICAgIHJldHVybjsKKyAgICBh
dXRvIGRhdGEgPSB2YWxpZGF0ZVVuaWZvcm1NYXRyaXhQYXJhbWV0ZXJzKCJ1bmlmb3JtTWF0cml4
MngzZnYiLCBsb2NhdGlvbiwgdHJhbnNwb3NlLCB2LCA2LCBzcmNPZmZzZXQsIHNyY0xlbmd0aCk7
CisgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm47Ci0gICAgbV9jb250ZXh0LT51bmlmb3Jt
TWF0cml4MngzZnYobG9jYXRpb24tPmxvY2F0aW9uKCksIHRyYW5zcG9zZSwgdi5kYXRhKCksIHNy
Y09mZnNldCwgKHNyY0xlbmd0aCA/IHNyY0xlbmd0aCA6IHYubGVuZ3RoKCkgLSBzcmNPZmZzZXQp
IC8gNik7CisgICAgbV9jb250ZXh0LT51bmlmb3JtTWF0cml4MngzZnYobG9jYXRpb24tPmxvY2F0
aW9uKCksIHRyYW5zcG9zZSwgZGF0YS52YWx1ZSgpKTsKIH0KIAogdm9pZCBXZWJHTDJSZW5kZXJp
bmdDb250ZXh0Ojp1bmlmb3JtTWF0cml4M3gyZnYoV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0
aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEZsb2F0MzJMaXN0JiYgdiwgR0NHTHVpbnQgc3Jj
T2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCiB7Ci0gICAgaWYgKGlzQ29udGV4dExvc3RPclBl
bmRpbmcoKSB8fCAhdmFsaWRhdGVVbmlmb3JtTWF0cml4UGFyYW1ldGVycygidW5pZm9ybU1hdHJp
eDN4MmZ2IiwgbG9jYXRpb24sIHRyYW5zcG9zZSwgdiwgNiwgc3JjT2Zmc2V0LCBzcmNMZW5ndGgp
KQorICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCisgICAgICAgIHJldHVybjsKKyAg
ICBhdXRvIGRhdGEgPSB2YWxpZGF0ZVVuaWZvcm1NYXRyaXhQYXJhbWV0ZXJzKCJ1bmlmb3JtTWF0
cml4M3gyZnYiLCBsb2NhdGlvbiwgdHJhbnNwb3NlLCB2LCA2LCBzcmNPZmZzZXQsIHNyY0xlbmd0
aCk7CisgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm47Ci0gICAgbV9jb250ZXh0LT51bmlm
b3JtTWF0cml4M3gyZnYobG9jYXRpb24tPmxvY2F0aW9uKCksIHRyYW5zcG9zZSwgdi5kYXRhKCks
IHNyY09mZnNldCwgKHNyY0xlbmd0aCA/IHNyY0xlbmd0aCA6IHYubGVuZ3RoKCkgLSBzcmNPZmZz
ZXQpIC8gNik7CisgICAgbV9jb250ZXh0LT51bmlmb3JtTWF0cml4M3gyZnYobG9jYXRpb24tPmxv
Y2F0aW9uKCksIHRyYW5zcG9zZSwgZGF0YS52YWx1ZSgpKTsKIH0KIAogdm9pZCBXZWJHTDJSZW5k
ZXJpbmdDb250ZXh0Ojp1bmlmb3JtTWF0cml4Mng0ZnYoV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxv
Y2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEZsb2F0MzJMaXN0JiYgdiwgR0NHTHVpbnQg
c3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCiB7Ci0gICAgaWYgKGlzQ29udGV4dExvc3RP
clBlbmRpbmcoKSB8fCAhdmFsaWRhdGVVbmlmb3JtTWF0cml4UGFyYW1ldGVycygidW5pZm9ybU1h
dHJpeDJ4NGZ2IiwgbG9jYXRpb24sIHRyYW5zcG9zZSwgdiwgOCwgc3JjT2Zmc2V0LCBzcmNMZW5n
dGgpKQorICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCisgICAgICAgIHJldHVybjsK
KyAgICBhdXRvIGRhdGEgPSB2YWxpZGF0ZVVuaWZvcm1NYXRyaXhQYXJhbWV0ZXJzKCJ1bmlmb3Jt
TWF0cml4Mng0ZnYiLCBsb2NhdGlvbiwgdHJhbnNwb3NlLCB2LCA4LCBzcmNPZmZzZXQsIHNyY0xl
bmd0aCk7CisgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm47Ci0gICAgbV9jb250ZXh0LT51
bmlmb3JtTWF0cml4Mng0ZnYobG9jYXRpb24tPmxvY2F0aW9uKCksIHRyYW5zcG9zZSwgdi5kYXRh
KCksIHNyY09mZnNldCwgKHNyY0xlbmd0aCA/IHNyY0xlbmd0aCA6IHYubGVuZ3RoKCkgLSBzcmNP
ZmZzZXQpIC8gOCk7CisgICAgbV9jb250ZXh0LT51bmlmb3JtTWF0cml4Mng0ZnYobG9jYXRpb24t
PmxvY2F0aW9uKCksIHRyYW5zcG9zZSwgZGF0YS52YWx1ZSgpKTsKIH0KIAogdm9pZCBXZWJHTDJS
ZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtTWF0cml4NHgyZnYoV2ViR0xVbmlmb3JtTG9jYXRpb24q
IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEZsb2F0MzJMaXN0JiYgdiwgR0NHTHVp
bnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCiB7Ci0gICAgaWYgKGlzQ29udGV4dExv
c3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVVbmlmb3JtTWF0cml4UGFyYW1ldGVycygidW5pZm9y
bU1hdHJpeDR4MmZ2IiwgbG9jYXRpb24sIHRyYW5zcG9zZSwgdiwgOCwgc3JjT2Zmc2V0LCBzcmNM
ZW5ndGgpKQorICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCisgICAgICAgIHJldHVy
bjsKKyAgICBhdXRvIGRhdGEgPSB2YWxpZGF0ZVVuaWZvcm1NYXRyaXhQYXJhbWV0ZXJzKCJ1bmlm
b3JtTWF0cml4NHgyZnYiLCBsb2NhdGlvbiwgdHJhbnNwb3NlLCB2LCA4LCBzcmNPZmZzZXQsIHNy
Y0xlbmd0aCk7CisgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm47Ci0gICAgbV9jb250ZXh0
LT51bmlmb3JtTWF0cml4NHgyZnYobG9jYXRpb24tPmxvY2F0aW9uKCksIHRyYW5zcG9zZSwgdi5k
YXRhKCksIHNyY09mZnNldCwgKHNyY0xlbmd0aCA/IHNyY0xlbmd0aCA6IHYubGVuZ3RoKCkgLSBz
cmNPZmZzZXQpIC8gOCk7CisgICAgbV9jb250ZXh0LT51bmlmb3JtTWF0cml4NHgyZnYobG9jYXRp
b24tPmxvY2F0aW9uKCksIHRyYW5zcG9zZSwgZGF0YS52YWx1ZSgpKTsKIH0KIAogdm9pZCBXZWJH
TDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtTWF0cml4M3g0ZnYoV2ViR0xVbmlmb3JtTG9jYXRp
b24qIGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEZsb2F0MzJMaXN0JiYgdiwgR0NH
THVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCiB7Ci0gICAgaWYgKGlzQ29udGV4
dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVVbmlmb3JtTWF0cml4UGFyYW1ldGVycygidW5p
Zm9ybU1hdHJpeDN4NGZ2IiwgbG9jYXRpb24sIHRyYW5zcG9zZSwgdiwgMTIsIHNyY09mZnNldCwg
c3JjTGVuZ3RoKSkKKyAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpKQorICAgICAgICBy
ZXR1cm47CisgICAgYXV0byBkYXRhID0gdmFsaWRhdGVVbmlmb3JtTWF0cml4UGFyYW1ldGVycygi
dW5pZm9ybU1hdHJpeDN4NGZ2IiwgbG9jYXRpb24sIHRyYW5zcG9zZSwgdiwgMTIsIHNyY09mZnNl
dCwgc3JjTGVuZ3RoKTsKKyAgICBpZiAoIWRhdGEpCiAgICAgICAgIHJldHVybjsKLSAgICBtX2Nv
bnRleHQtPnVuaWZvcm1NYXRyaXgzeDRmdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgdHJhbnNwb3Nl
LCB2LmRhdGEoKSwgc3JjT2Zmc2V0LCAoc3JjTGVuZ3RoID8gc3JjTGVuZ3RoIDogdi5sZW5ndGgo
KSAtIHNyY09mZnNldCkgLyAxMik7CisgICAgbV9jb250ZXh0LT51bmlmb3JtTWF0cml4M3g0ZnYo
bG9jYXRpb24tPmxvY2F0aW9uKCksIHRyYW5zcG9zZSwgZGF0YS52YWx1ZSgpKTsKIH0KIAogdm9p
ZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtTWF0cml4NHgzZnYoV2ViR0xVbmlmb3Jt
TG9jYXRpb24qIGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEZsb2F0MzJMaXN0JiYg
diwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCiB7Ci0gICAgaWYgKGlz
Q29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVVbmlmb3JtTWF0cml4UGFyYW1ldGVy
cygidW5pZm9ybU1hdHJpeDR4M2Z2IiwgbG9jYXRpb24sIHRyYW5zcG9zZSwgdiwgMTIsIHNyY09m
ZnNldCwgc3JjTGVuZ3RoKSkKKyAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpKQorICAg
ICAgICByZXR1cm47CisgICAgYXV0byBkYXRhID0gdmFsaWRhdGVVbmlmb3JtTWF0cml4UGFyYW1l
dGVycygidW5pZm9ybU1hdHJpeDR4M2Z2IiwgbG9jYXRpb24sIHRyYW5zcG9zZSwgdiwgMTIsIHNy
Y09mZnNldCwgc3JjTGVuZ3RoKTsKKyAgICBpZiAoIWRhdGEpCiAgICAgICAgIHJldHVybjsKLSAg
ICBtX2NvbnRleHQtPnVuaWZvcm1NYXRyaXg0eDNmdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgdHJh
bnNwb3NlLCB2LmRhdGEoKSwgc3JjT2Zmc2V0LCAoc3JjTGVuZ3RoID8gc3JjTGVuZ3RoIDogdi5s
ZW5ndGgoKSAtIHNyY09mZnNldCkgLyAxMik7CisgICAgbV9jb250ZXh0LT51bmlmb3JtTWF0cml4
NHgzZnYobG9jYXRpb24tPmxvY2F0aW9uKCksIHRyYW5zcG9zZSwgZGF0YS52YWx1ZSgpKTsKIH0K
IAogdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp2ZXJ0ZXhBdHRyaWJJNGkoR0NHTHVpbnQg
aW5kZXgsIEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMaW50IHosIEdDR0xpbnQgdykKQEAgLTE2
NjQsNyArMTY3Niw3IEBAIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dmVydGV4QXR0cmli
STRpdihHQ0dMdWludCBpbmRleCwgSW50MzJMaXN0JiYgbGlzdCkKICAgICAgICAgc3ludGhlc2l6
ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfVkFMVUUsICJ2ZXJ0ZXhBdHRyaWJJ
NGl2IiwgImluZGV4IG91dCBvZiByYW5nZSIpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAg
IG1fY29udGV4dC0+dmVydGV4QXR0cmliSTRpdihpbmRleCwgZGF0YSk7CisgICAgbV9jb250ZXh0
LT52ZXJ0ZXhBdHRyaWJJNGl2KGluZGV4LCBtYWtlR0NHTFNwYW48ND4oZGF0YSkpOwogICAgIG1f
dmVydGV4QXR0cmliVmFsdWVbaW5kZXhdLnR5cGUgPSBHcmFwaGljc0NvbnRleHRHTDo6SU5UOwog
ICAgIG1lbWNweShtX3ZlcnRleEF0dHJpYlZhbHVlW2luZGV4XS5pVmFsdWUsIGRhdGEsIHNpemVv
ZihtX3ZlcnRleEF0dHJpYlZhbHVlW2luZGV4XS5pVmFsdWUpKTsKIH0KQEAgLTE3MDIsNyArMTcx
NCw3IEBAIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dmVydGV4QXR0cmliSTR1aXYoR0NH
THVpbnQgaW5kZXgsIFVpbnQzMkxpc3QmJiBsaXN0CiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9y
KEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX1ZBTFVFLCAidmVydGV4QXR0cmliSTR1aXYiLCAi
aW5kZXggb3V0IG9mIHJhbmdlIik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgbV9jb250
ZXh0LT52ZXJ0ZXhBdHRyaWJJNHVpdihpbmRleCwgZGF0YSk7CisgICAgbV9jb250ZXh0LT52ZXJ0
ZXhBdHRyaWJJNHVpdihpbmRleCwgbWFrZUdDR0xTcGFuPDQ+KGRhdGEpKTsKICAgICBtX3ZlcnRl
eEF0dHJpYlZhbHVlW2luZGV4XS50eXBlID0gR3JhcGhpY3NDb250ZXh0R0w6OlVOU0lHTkVEX0lO
VDsKICAgICBtZW1jcHkobV92ZXJ0ZXhBdHRyaWJWYWx1ZVtpbmRleF0udWlWYWx1ZSwgZGF0YSwg
c2l6ZW9mKG1fdmVydGV4QXR0cmliVmFsdWVbaW5kZXhdLnVpVmFsdWUpKTsKIH0KQEAgLTE3NjMs
OCArMTc3NSw4IEBAIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6ZHJhd0J1ZmZlcnMoY29u
c3QgVmVjdG9yPEdDR0xlbnVtPiYgYnVmZmVycykKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQogICAgICAgICAvLyBCZWNhdXNlIHRoZSBiYWNrYnVmZmVyIGlzIHNpbXVsYXRlZCBvbiBh
bGwgY3VycmVudCBXZWJLaXQgcG9ydHMsIHdlIG5lZWQgdG8gY2hhbmdlIEJBQ0sgdG8gQ09MT1Jf
QVRUQUNITUVOVDAuCi0gICAgICAgIEdDR0xlbnVtIHZhbHVlID0gKGJ1ZnNbMF0gPT0gR3JhcGhp
Y3NDb250ZXh0R0w6OkJBQ0spID8gR3JhcGhpY3NDb250ZXh0R0w6OkNPTE9SX0FUVEFDSE1FTlQw
IDogR3JhcGhpY3NDb250ZXh0R0w6Ok5PTkU7Ci0gICAgICAgIG1fY29udGV4dC0+ZHJhd0J1ZmZl
cnMoMSwgJnZhbHVlKTsKKyAgICAgICAgR0NHTGVudW0gdmFsdWVbMV0geyAoYnVmc1swXSA9PSBH
cmFwaGljc0NvbnRleHRHTDo6QkFDSykgPyBHcmFwaGljc0NvbnRleHRHTDo6Q09MT1JfQVRUQUNI
TUVOVDAgOiBHcmFwaGljc0NvbnRleHRHTDo6Tk9ORSB9OworICAgICAgICBtX2NvbnRleHQtPmRy
YXdCdWZmZXJzKHZhbHVlKTsKICAgICAgICAgc2V0QmFja0RyYXdCdWZmZXIoYnVmc1swXSk7CiAg
ICAgfSBlbHNlIHsKICAgICAgICAgaWYgKG4gPiBnZXRNYXhEcmF3QnVmZmVycygpKSB7CkBAIC0x
NzgzLDI4ICsxNzk1LDM2IEBAIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6ZHJhd0J1ZmZl
cnMoY29uc3QgVmVjdG9yPEdDR0xlbnVtPiYgYnVmZmVycykKIAogdm9pZCBXZWJHTDJSZW5kZXJp
bmdDb250ZXh0OjpjbGVhckJ1ZmZlcml2KEdDR0xlbnVtIGJ1ZmZlciwgR0NHTGludCBkcmF3YnVm
ZmVyLCBJbnQzMkxpc3QmJiB2YWx1ZXMsIEdDR0x1aW50IHNyY09mZnNldCkKIHsKLSAgICBpZiAo
aXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZUNsZWFyQnVmZmVyKCJjbGVhckJ1
ZmZlcml2IiwgYnVmZmVyLCB2YWx1ZXMubGVuZ3RoKCksIHNyY09mZnNldCkpCisgICAgaWYgKGlz
Q29udGV4dExvc3RPclBlbmRpbmcoKSkKKyAgICAgICAgcmV0dXJuOworICAgIGF1dG8gZGF0YSA9
IHZhbGlkYXRlQ2xlYXJCdWZmZXIoImNsZWFyQnVmZmVyaXYiLCBidWZmZXIsIHZhbHVlcywgc3Jj
T2Zmc2V0KTsKKyAgICBpZiAoIWRhdGEpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fY29udGV4
dC0+Y2xlYXJCdWZmZXJpdihidWZmZXIsIGRyYXdidWZmZXIsIHZhbHVlcy5kYXRhKCksIHNyY09m
ZnNldCk7CisgICAgbV9jb250ZXh0LT5jbGVhckJ1ZmZlcml2KGJ1ZmZlciwgZHJhd2J1ZmZlciwg
ZGF0YS52YWx1ZSgpKTsKICAgICB1cGRhdGVCdWZmZXJzVG9BdXRvQ2xlYXIoQ2xlYXJCdWZmZXJD
YWxsZXI6OkNsZWFyQnVmZmVyaXYsIGJ1ZmZlciwgZHJhd2J1ZmZlcik7CiB9CiAKIHZvaWQgV2Vi
R0wyUmVuZGVyaW5nQ29udGV4dDo6Y2xlYXJCdWZmZXJ1aXYoR0NHTGVudW0gYnVmZmVyLCBHQ0dM
aW50IGRyYXdidWZmZXIsIFVpbnQzMkxpc3QmJiB2YWx1ZXMsIEdDR0x1aW50IHNyY09mZnNldCkK
IHsKLSAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZUNsZWFyQnVm
ZmVyKCJjbGVhckJ1ZmZlcnVpdiIsIGJ1ZmZlciwgdmFsdWVzLmxlbmd0aCgpLCBzcmNPZmZzZXQp
KQorICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCiAgICAgICAgIHJldHVybjsKLQot
ICAgIG1fY29udGV4dC0+Y2xlYXJCdWZmZXJ1aXYoYnVmZmVyLCBkcmF3YnVmZmVyLCB2YWx1ZXMu
ZGF0YSgpLCBzcmNPZmZzZXQpOworICAgIGF1dG8gZGF0YSA9IHZhbGlkYXRlQ2xlYXJCdWZmZXIo
ImNsZWFyQnVmZmVydWl2IiwgYnVmZmVyLCB2YWx1ZXMsIHNyY09mZnNldCk7CisgICAgaWYgKCFk
YXRhKQorICAgICAgICByZXR1cm47CisgICAgbV9jb250ZXh0LT5jbGVhckJ1ZmZlcnVpdihidWZm
ZXIsIGRyYXdidWZmZXIsIGRhdGEudmFsdWUoKSk7CiAgICAgdXBkYXRlQnVmZmVyc1RvQXV0b0Ns
ZWFyKENsZWFyQnVmZmVyQ2FsbGVyOjpDbGVhckJ1ZmZlcnVpdiwgYnVmZmVyLCBkcmF3YnVmZmVy
KTsKIH0KIAogdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpjbGVhckJ1ZmZlcmZ2KEdDR0xl
bnVtIGJ1ZmZlciwgR0NHTGludCBkcmF3YnVmZmVyLCBGbG9hdDMyTGlzdCYmIHZhbHVlcywgR0NH
THVpbnQgc3JjT2Zmc2V0KQogewotICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwg
IXZhbGlkYXRlQ2xlYXJCdWZmZXIoImNsZWFyQnVmZmVyZnYiLCBidWZmZXIsIHZhbHVlcy5sZW5n
dGgoKSwgc3JjT2Zmc2V0KSkKKyAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpKQorICAg
ICAgICByZXR1cm47CisgICAgYXV0byBkYXRhID0gdmFsaWRhdGVDbGVhckJ1ZmZlcigiY2xlYXJC
dWZmZXJmdiIsIGJ1ZmZlciwgdmFsdWVzLCBzcmNPZmZzZXQpOworICAgIGlmICghZGF0YSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgbV9jb250ZXh0LT5jbGVhckJ1ZmZlcmZ2KGJ1ZmZlciwgZHJh
d2J1ZmZlciwgdmFsdWVzLmRhdGEoKSwgc3JjT2Zmc2V0KTsKKyAgICBtX2NvbnRleHQtPmNsZWFy
QnVmZmVyZnYoYnVmZmVyLCBkcmF3YnVmZmVyLCBkYXRhLnZhbHVlKCkpOwogICAgIC8vIGNsZWFy
QnVmZmVyaXYgYW5kIGNsZWFyQnVmZmVydWl2IHdpbGwgY3VycmVudGx5IGdlbmVyYXRlIGFuIGVy
cm9yCiAgICAgLy8gaWYgdGhleSdyZSBjYWxsZWQgYWdhaW5zdCB0aGUgZGVmYXVsdCBiYWNrIGJ1
ZmZlci4gSWYgc3VwcG9ydCBmb3IKICAgICAvLyBleHRlbmRlZCBjYW52YXMgY29sb3Igc3BhY2Vz
IGlzIGFkZGVkLCB0aGlzIGNhbGwgbWlnaHQgbmVlZCB0byBiZQpAQCAtMzM3MiwxMTAgKzMzOTIs
MTQ0IEBAIGJvb2wgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dmFsaWRhdGVDYXBhYmlsaXR5KGNv
bnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgR0NHTGVuCiAgICAgfQogfQogCi1ib29sIFdlYkdMMlJl
bmRlcmluZ0NvbnRleHQ6OnZhbGlkYXRlQ2xlYXJCdWZmZXIoY29uc3QgY2hhciogZnVuY3Rpb25O
YW1lLCBHQ0dMZW51bSBidWZmZXIsIHNpemVfdCBzaXplLCBHQ0dMdWludCBzcmNPZmZzZXQpCit0
ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBUeXBlZEFycmF5VHlwZT4KK09wdGlvbmFsPEdD
R0xTcGFuPGNvbnN0IFQ+PiBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp2YWxpZGF0ZUNsZWFyQnVm
ZmVyKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgR0NHTGVudW0gYnVmZmVyLCBUeXBlZExpc3Q8
VHlwZWRBcnJheVR5cGUsIFQ+JiB2YWx1ZXMsIEdDR0x1aW50IHNyY09mZnNldCkKIHsKLSAgICBD
aGVja2VkPEdDR0xzaXplaSwgUmVjb3JkT3ZlcmZsb3c+IGNoZWNrZWRTaXplKHNpemUpOworICAg
IENoZWNrZWQ8R0NHTHNpemVpLCBSZWNvcmRPdmVyZmxvdz4gY2hlY2tlZFNpemUodmFsdWVzLmxl
bmd0aCgpKTsKICAgICBjaGVja2VkU2l6ZSAtPSBzcmNPZmZzZXQ7CiAgICAgaWYgKGNoZWNrZWRT
aXplLmhhc092ZXJmbG93ZWQoKSkgewogICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGlj
c0NvbnRleHRHTDo6SU5WQUxJRF9WQUxVRSwgZnVuY3Rpb25OYW1lLCAiaW52YWxpZCBhcnJheSBz
aXplIC8gc3JjT2Zmc2V0Iik7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJu
IHsgfTsKICAgICB9CiAgICAgc3dpdGNoIChidWZmZXIpIHsKICAgICBjYXNlIEdyYXBoaWNzQ29u
dGV4dEdMOjpDT0xPUjoKICAgICAgICAgaWYgKGNoZWNrZWRTaXplLnVuc2FmZUdldCgpIDwgNCkg
ewogICAgICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFM
SURfVkFMVUUsIGZ1bmN0aW9uTmFtZSwgImludmFsaWQgYXJyYXkgc2l6ZSAvIHNyY09mZnNldCIp
OwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgcmV0dXJuIHsgfTsKICAg
ICAgICAgfQotICAgICAgICBicmVhazsKKyAgICAgICAgcmV0dXJuIG1ha2VHQ0dMU3Bhbih2YWx1
ZXMuZGF0YSgpICsgc3JjT2Zmc2V0LCA0KTsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpE
RVBUSDoKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpTVEVOQ0lMOgogICAgICAgICBpZiAo
Y2hlY2tlZFNpemUudW5zYWZlR2V0KCkgPCAxKSB7CiAgICAgICAgICAgICBzeW50aGVzaXplR0xF
cnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9WQUxVRSwgZnVuY3Rpb25OYW1lLCAiaW52
YWxpZCBhcnJheSBzaXplIC8gc3JjT2Zmc2V0Iik7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgICAgICByZXR1cm4geyB9OwogICAgICAgICB9Ci0gICAgICAgIGJyZWFrOworICAg
ICAgICByZXR1cm4gbWFrZUdDR0xTcGFuKHZhbHVlcy5kYXRhKCkgKyBzcmNPZmZzZXQsIDEpOwor
CiAgICAgZGVmYXVsdDoKICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0
R0w6OklOVkFMSURfRU5VTSwgZnVuY3Rpb25OYW1lLCAiaW52YWxpZCBidWZmZXIiKTsKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4geyB9OwogICAgIH0KLSAgICByZXR1cm4g
dHJ1ZTsKIH0KIAogdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtMWZ2KFdlYkdM
VW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgRmxvYXQzMkxpc3QgZGF0YSwgR0NHTHVpbnQgc3Jj
T2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCiB7Ci0gICAgaWYgKGlzQ29udGV4dExvc3RPclBl
bmRpbmcoKSB8fCAhdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycygidW5pZm9ybTFmdiIsIGxvY2F0
aW9uLCBkYXRhLCAxLCBzcmNPZmZzZXQsIHNyY0xlbmd0aCkpCisgICAgaWYgKGlzQ29udGV4dExv
c3RPclBlbmRpbmcoKSkKKyAgICAgICAgcmV0dXJuOworICAgIGF1dG8gcmVzdWx0ID0gdmFsaWRh
dGVVbmlmb3JtUGFyYW1ldGVycygidW5pZm9ybTFmdiIsIGxvY2F0aW9uLCBkYXRhLCAxLCBzcmNP
ZmZzZXQsIHNyY0xlbmd0aCk7CisgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgIHJldHVybjsKLSAg
ICBtX2NvbnRleHQtPnVuaWZvcm0xZnYobG9jYXRpb24tPmxvY2F0aW9uKCksIGRhdGEuZGF0YSgp
LCBzcmNPZmZzZXQsIHNyY0xlbmd0aCA/IHNyY0xlbmd0aCA6IChkYXRhLmxlbmd0aCgpIC0gc3Jj
T2Zmc2V0KSk7CisgICAgbV9jb250ZXh0LT51bmlmb3JtMWZ2KGxvY2F0aW9uLT5sb2NhdGlvbigp
LCByZXN1bHQudmFsdWUoKSk7CiB9CiAKIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5p
Zm9ybTJmdihXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEZsb2F0MzJMaXN0IGRhdGEs
IEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQogewotICAgIGlmIChpc0Nv
bnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMoInVuaWZv
cm0yZnYiLCBsb2NhdGlvbiwgZGF0YSwgMiwgc3JjT2Zmc2V0LCBzcmNMZW5ndGgpKQorICAgIGlm
IChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCisgICAgICAgIHJldHVybjsKKyAgICBhdXRvIHJl
c3VsdCA9IHZhbGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMoInVuaWZvcm0yZnYiLCBsb2NhdGlvbiwg
ZGF0YSwgMiwgc3JjT2Zmc2V0LCBzcmNMZW5ndGgpOworICAgIGlmICghcmVzdWx0KQogICAgICAg
ICByZXR1cm47Ci0gICAgbV9jb250ZXh0LT51bmlmb3JtMmZ2KGxvY2F0aW9uLT5sb2NhdGlvbigp
LCBkYXRhLmRhdGEoKSwgc3JjT2Zmc2V0LCAoc3JjTGVuZ3RoID8gc3JjTGVuZ3RoIDogZGF0YS5s
ZW5ndGgoKSAtIHNyY09mZnNldCkgLyAyKTsKKyAgICBtX2NvbnRleHQtPnVuaWZvcm0yZnYobG9j
YXRpb24tPmxvY2F0aW9uKCksIHJlc3VsdC52YWx1ZSgpKTsKIH0KIAogdm9pZCBXZWJHTDJSZW5k
ZXJpbmdDb250ZXh0Ojp1bmlmb3JtM2Z2KFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwg
RmxvYXQzMkxpc3QgZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgp
CiB7Ci0gICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVVbmlmb3Jt
UGFyYW1ldGVycygidW5pZm9ybTNmdiIsIGxvY2F0aW9uLCBkYXRhLCAzLCBzcmNPZmZzZXQsIHNy
Y0xlbmd0aCkpCisgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSkKKyAgICAgICAgcmV0
dXJuOworICAgIGF1dG8gcmVzdWx0ID0gdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycygidW5pZm9y
bTNmdiIsIGxvY2F0aW9uLCBkYXRhLCAzLCBzcmNPZmZzZXQsIHNyY0xlbmd0aCk7CisgICAgaWYg
KCFyZXN1bHQpCiAgICAgICAgIHJldHVybjsKLSAgICBtX2NvbnRleHQtPnVuaWZvcm0zZnYobG9j
YXRpb24tPmxvY2F0aW9uKCksIGRhdGEuZGF0YSgpLCBzcmNPZmZzZXQsIChzcmNMZW5ndGggPyBz
cmNMZW5ndGggOiBkYXRhLmxlbmd0aCgpIC0gc3JjT2Zmc2V0KSAvIDMpOworICAgIG1fY29udGV4
dC0+dW5pZm9ybTNmdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgcmVzdWx0LnZhbHVlKCkpOwogfQog
CiB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm00ZnYoV2ViR0xVbmlmb3JtTG9j
YXRpb24qIGxvY2F0aW9uLCBGbG9hdDMyTGlzdCBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdD
R0x1aW50IHNyY0xlbmd0aCkKIHsKLSAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8
ICF2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKCJ1bmlmb3JtNGZ2IiwgbG9jYXRpb24sIGRhdGEs
IDQsIHNyY09mZnNldCwgc3JjTGVuZ3RoKSkKKyAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGlu
ZygpKQogICAgICAgICByZXR1cm47Ci0gICAgbV9jb250ZXh0LT51bmlmb3JtNGZ2KGxvY2F0aW9u
LT5sb2NhdGlvbigpLCBkYXRhLmRhdGEoKSwgc3JjT2Zmc2V0LCAoc3JjTGVuZ3RoID8gc3JjTGVu
Z3RoIDogZGF0YS5sZW5ndGgoKSAtIHNyY09mZnNldCkgLyA0KTsKKyAgICBhdXRvIHJlc3VsdCA9
IHZhbGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMoInVuaWZvcm00ZnYiLCBsb2NhdGlvbiwgZGF0YSwg
NCwgc3JjT2Zmc2V0LCBzcmNMZW5ndGgpOworICAgIGlmICghcmVzdWx0KQorICAgICAgICByZXR1
cm47CisgICAgbV9jb250ZXh0LT51bmlmb3JtNGZ2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCByZXN1
bHQudmFsdWUoKSk7CiB9CiAKIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTFp
dihXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEludDMyTGlzdCBkYXRhLCBHQ0dMdWlu
dCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKIHsKLSAgICBpZiAoaXNDb250ZXh0TG9z
dE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKCJ1bmlmb3JtMWl2Iiwg
bG9jYXRpb24sIGRhdGEsIDEsIHNyY09mZnNldCwgc3JjTGVuZ3RoKSkKKyAgICBpZiAoaXNDb250
ZXh0TG9zdE9yUGVuZGluZygpKQogICAgICAgICByZXR1cm47Ci0gICAgbV9jb250ZXh0LT51bmlm
b3JtMWl2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCBkYXRhLmRhdGEoKSwgc3JjT2Zmc2V0LCBzcmNM
ZW5ndGggPyBzcmNMZW5ndGggOiAoZGF0YS5sZW5ndGgoKSAtIHNyY09mZnNldCkpOworICAgIGF1
dG8gcmVzdWx0ID0gdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycygidW5pZm9ybTFpdiIsIGxvY2F0
aW9uLCBkYXRhLCAxLCBzcmNPZmZzZXQsIHNyY0xlbmd0aCk7CisgICAgaWYgKCFyZXN1bHQpCisg
ICAgICAgIHJldHVybjsKKyAgICBtX2NvbnRleHQtPnVuaWZvcm0xaXYobG9jYXRpb24tPmxvY2F0
aW9uKCksIHJlc3VsdC52YWx1ZSgpKTsKIH0KIAogdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0
Ojp1bmlmb3JtMml2KFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgSW50MzJMaXN0IGRh
dGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQogewotICAgIGlmIChp
c0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMoInVu
aWZvcm0yaXYiLCBsb2NhdGlvbiwgZGF0YSwgMiwgc3JjT2Zmc2V0LCBzcmNMZW5ndGgpKQorICAg
IGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBtX2Nv
bnRleHQtPnVuaWZvcm0yaXYobG9jYXRpb24tPmxvY2F0aW9uKCksIGRhdGEuZGF0YSgpLCBzcmNP
ZmZzZXQsIChzcmNMZW5ndGggPyBzcmNMZW5ndGggOiBkYXRhLmxlbmd0aCgpIC0gc3JjT2Zmc2V0
KSAvIDIpOworICAgIGF1dG8gcmVzdWx0ID0gdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycygidW5p
Zm9ybTJpdiIsIGxvY2F0aW9uLCBkYXRhLCAyLCBzcmNPZmZzZXQsIHNyY0xlbmd0aCk7CisgICAg
aWYgKCFyZXN1bHQpCisgICAgICAgIHJldHVybjsKKyAgICBtX2NvbnRleHQtPnVuaWZvcm0yaXYo
bG9jYXRpb24tPmxvY2F0aW9uKCksIHJlc3VsdC52YWx1ZSgpKTsKIH0KIAogdm9pZCBXZWJHTDJS
ZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtM2l2KFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlv
biwgSW50MzJMaXN0IGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3Ro
KQogewotICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlVW5pZm9y
bVBhcmFtZXRlcnMoInVuaWZvcm0zaXYiLCBsb2NhdGlvbiwgZGF0YSwgMywgc3JjT2Zmc2V0LCBz
cmNMZW5ndGgpKQorICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCiAgICAgICAgIHJl
dHVybjsKLSAgICBtX2NvbnRleHQtPnVuaWZvcm0zaXYobG9jYXRpb24tPmxvY2F0aW9uKCksIGRh
dGEuZGF0YSgpLCBzcmNPZmZzZXQsIChzcmNMZW5ndGggPyBzcmNMZW5ndGggOiBkYXRhLmxlbmd0
aCgpIC0gc3JjT2Zmc2V0KSAvIDMpOworICAgIGF1dG8gcmVzdWx0ID0gdmFsaWRhdGVVbmlmb3Jt
UGFyYW1ldGVycygidW5pZm9ybTNpdiIsIGxvY2F0aW9uLCBkYXRhLCAzLCBzcmNPZmZzZXQsIHNy
Y0xlbmd0aCk7CisgICAgaWYgKCFyZXN1bHQpCisgICAgICAgIHJldHVybjsKKyAgICBtX2NvbnRl
eHQtPnVuaWZvcm0zaXYobG9jYXRpb24tPmxvY2F0aW9uKCksIHJlc3VsdC52YWx1ZSgpKTsKIH0K
IAogdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtNGl2KFdlYkdMVW5pZm9ybUxv
Y2F0aW9uKiBsb2NhdGlvbiwgSW50MzJMaXN0IGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NH
THVpbnQgc3JjTGVuZ3RoKQogewotICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwg
IXZhbGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMoInVuaWZvcm00aXYiLCBsb2NhdGlvbiwgZGF0YSwg
NCwgc3JjT2Zmc2V0LCBzcmNMZW5ndGgpKQorICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5n
KCkpCiAgICAgICAgIHJldHVybjsKLSAgICBtX2NvbnRleHQtPnVuaWZvcm00aXYobG9jYXRpb24t
PmxvY2F0aW9uKCksIGRhdGEuZGF0YSgpLCBzcmNPZmZzZXQsIChzcmNMZW5ndGggPyBzcmNMZW5n
dGggOiBkYXRhLmxlbmd0aCgpIC0gc3JjT2Zmc2V0KSAvIDQpOworICAgIGF1dG8gcmVzdWx0ID0g
dmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycygidW5pZm9ybTRpdiIsIGxvY2F0aW9uLCBkYXRhLCA0
LCBzcmNPZmZzZXQsIHNyY0xlbmd0aCk7CisgICAgaWYgKCFyZXN1bHQpCisgICAgICAgIHJldHVy
bjsKKyAgICBtX2NvbnRleHQtPnVuaWZvcm00aXYobG9jYXRpb24tPmxvY2F0aW9uKCksIHJlc3Vs
dC52YWx1ZSgpKTsKIH0KIAogdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtTWF0
cml4MmZ2KFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNw
b3NlLCBGbG9hdDMyTGlzdCBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xl
bmd0aCkKIHsKLSAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVVu
aWZvcm1NYXRyaXhQYXJhbWV0ZXJzKCJ1bmlmb3JtTWF0cml4MmZ2IiwgbG9jYXRpb24sIHRyYW5z
cG9zZSwgZGF0YSwgMioyLCBzcmNPZmZzZXQsIHNyY0xlbmd0aCkpCisgICAgaWYgKGlzQ29udGV4
dExvc3RPclBlbmRpbmcoKSkKICAgICAgICAgcmV0dXJuOwotICAgIG1fY29udGV4dC0+dW5pZm9y
bU1hdHJpeDJmdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgdHJhbnNwb3NlLCBkYXRhLmRhdGEoKSwg
c3JjT2Zmc2V0LCAoc3JjTGVuZ3RoID8gc3JjTGVuZ3RoIDogZGF0YS5sZW5ndGgoKSAtIHNyY09m
ZnNldCkgLyAoMioyKSk7CisgICAgYXV0byByZXN1bHQgPSB2YWxpZGF0ZVVuaWZvcm1NYXRyaXhQ
YXJhbWV0ZXJzKCJ1bmlmb3JtTWF0cml4MmZ2IiwgbG9jYXRpb24sIHRyYW5zcG9zZSwgZGF0YSwg
MioyLCBzcmNPZmZzZXQsIHNyY0xlbmd0aCk7CisgICAgaWYgKCFyZXN1bHQpCisgICAgICAgIHJl
dHVybjsKKyAgICBtX2NvbnRleHQtPnVuaWZvcm1NYXRyaXgyZnYobG9jYXRpb24tPmxvY2F0aW9u
KCksIHRyYW5zcG9zZSwgcmVzdWx0LnZhbHVlKCkpOwogfQogCiB2b2lkIFdlYkdMMlJlbmRlcmlu
Z0NvbnRleHQ6OnVuaWZvcm1NYXRyaXgzZnYoV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9u
LCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEZsb2F0MzJMaXN0IGRhdGEsIEdDR0x1aW50IHNyY09m
ZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQogewotICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5k
aW5nKCkgfHwgIXZhbGlkYXRlVW5pZm9ybU1hdHJpeFBhcmFtZXRlcnMoInVuaWZvcm1NYXRyaXgz
ZnYiLCBsb2NhdGlvbiwgdHJhbnNwb3NlLCBkYXRhLCAzKjMsIHNyY09mZnNldCwgc3JjTGVuZ3Ro
KSkKKyAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpKQogICAgICAgICByZXR1cm47Ci0g
ICAgbV9jb250ZXh0LT51bmlmb3JtTWF0cml4M2Z2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCB0cmFu
c3Bvc2UsIGRhdGEuZGF0YSgpLCBzcmNPZmZzZXQsIChzcmNMZW5ndGggPyBzcmNMZW5ndGggOiBk
YXRhLmxlbmd0aCgpIC0gc3JjT2Zmc2V0KSAvICgzKjMpKTsKKyAgICBhdXRvIHJlc3VsdCA9IHZh
bGlkYXRlVW5pZm9ybU1hdHJpeFBhcmFtZXRlcnMoInVuaWZvcm1NYXRyaXgzZnYiLCBsb2NhdGlv
biwgdHJhbnNwb3NlLCBkYXRhLCAzKjMsIHNyY09mZnNldCwgc3JjTGVuZ3RoKTsKKyAgICBpZiAo
IXJlc3VsdCkKKyAgICAgICAgcmV0dXJuOworICAgIG1fY29udGV4dC0+dW5pZm9ybU1hdHJpeDNm
dihsb2NhdGlvbi0+bG9jYXRpb24oKSwgdHJhbnNwb3NlLCByZXN1bHQudmFsdWUoKSk7CiB9CiAK
IHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybU1hdHJpeDRmdihXZWJHTFVuaWZv
cm1Mb2NhdGlvbiogbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgRmxvYXQzMkxpc3Qg
ZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCiB7Ci0gICAgaWYg
KGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVVbmlmb3JtTWF0cml4UGFyYW1l
dGVycygidW5pZm9ybU1hdHJpeDRmdiIsIGxvY2F0aW9uLCB0cmFuc3Bvc2UsIGRhdGEsIDQqNCwg
c3JjT2Zmc2V0LCBzcmNMZW5ndGgpKQorICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkp
CisgICAgICAgIHJldHVybjsKKyAgICBhdXRvIHJlc3VsdCA9IHZhbGlkYXRlVW5pZm9ybU1hdHJp
eFBhcmFtZXRlcnMoInVuaWZvcm1NYXRyaXg0ZnYiLCBsb2NhdGlvbiwgdHJhbnNwb3NlLCBkYXRh
LCA0KjQsIHNyY09mZnNldCwgc3JjTGVuZ3RoKTsKKyAgICBpZiAoIXJlc3VsdCkKICAgICAgICAg
cmV0dXJuOwotICAgIG1fY29udGV4dC0+dW5pZm9ybU1hdHJpeDRmdihsb2NhdGlvbi0+bG9jYXRp
b24oKSwgdHJhbnNwb3NlLCBkYXRhLmRhdGEoKSwgc3JjT2Zmc2V0LCAoc3JjTGVuZ3RoID8gc3Jj
TGVuZ3RoIDogZGF0YS5sZW5ndGgoKSAtIHNyY09mZnNldCkgLyAoNCo0KSk7CisgICAgbV9jb250
ZXh0LT51bmlmb3JtTWF0cml4NGZ2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCB0cmFuc3Bvc2UsIHJl
c3VsdC52YWx1ZSgpKTsKIH0KIAogdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpyZWFkUGl4
ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWln
aHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgQXJyYXlCdWZmZXJWaWV3JiBwaXhl
bHMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJp
bmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdD
b250ZXh0LmgKaW5kZXggYjhiMDM2ZTQ0NzZhNGYxNWQ0ZTUwNjc1OGM1NzU5MzVlMGEwNjI0Zi4u
NWY0N2U2MWYwYTQ0NDRhMjg4YzFiNDYwZmI0ZTBmNzM2Njc0NjY3OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuaApAQCAtMjky
LDcgKzI5Miw4IEBAIHByaXZhdGU6CiAgICAgYm9vbCB2YWxpZGF0ZUluZGV4QXJyYXlDb25zZXJ2
YXRpdmUoR0NHTGVudW0gdHlwZSwgdW5zaWduZWQmIG51bUVsZW1lbnRzUmVxdWlyZWQpIGZpbmFs
OwogICAgIGJvb2wgdmFsaWRhdGVCbGVuZEVxdWF0aW9uKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFt
ZSwgR0NHTGVudW0gbW9kZSkgZmluYWw7CiAgICAgYm9vbCB2YWxpZGF0ZUNhcGFiaWxpdHkoY29u
c3QgY2hhciogZnVuY3Rpb25OYW1lLCBHQ0dMZW51bSBjYXApIGZpbmFsOwotICAgIGJvb2wgdmFs
aWRhdGVDbGVhckJ1ZmZlcihjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIEdDR0xlbnVtIGJ1ZmZl
ciwgc2l6ZV90LCBHQ0dMdWludCBzcmNPZmZzZXQpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQs
IHR5cGVuYW1lIFR5cGVkQXJyYXlUeXBlPgorICAgIE9wdGlvbmFsPEdDR0xTcGFuPGNvbnN0IFQ+
PiB2YWxpZGF0ZUNsZWFyQnVmZmVyKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgR0NHTGVudW0g
YnVmZmVyLCBUeXBlZExpc3Q8VHlwZWRBcnJheVR5cGUsIFQ+JiB2YWx1ZXMsIEdDR0x1aW50IHNy
Y09mZnNldCk7CiAgICAgYm9vbCB2YWxpZGF0ZUZyYW1lYnVmZmVyVGFyZ2V0KEdDR0xlbnVtIHRh
cmdldCkgZmluYWw7CiAgICAgV2ViR0xGcmFtZWJ1ZmZlciogZ2V0RnJhbWVidWZmZXJCaW5kaW5n
KEdDR0xlbnVtIHRhcmdldCkgZmluYWw7CiAgICAgV2ViR0xGcmFtZWJ1ZmZlciogZ2V0UmVhZEZy
YW1lYnVmZmVyQmluZGluZygpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xEcmF3QnVmZmVycy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTERyYXdCdWZmZXJzLmNwcAppbmRleCA0OTQxNTZlMWU2NWI2MDI5MTkwZGI3YzFjMDI2
YWRmODAzZGRhOGQyLi5lNWNlYjRiZGRjYzRjMDUxZGI4YjlhYTljZTAyMDgxYmYyMjMwNTAwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTERyYXdCdWZmZXJzLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTERyYXdCdWZmZXJzLmNwcApA
QCAtNzQsOCArNzQsOCBAQCB2b2lkIFdlYkdMRHJhd0J1ZmZlcnM6OmRyYXdCdWZmZXJzV0VCR0wo
Y29uc3QgVmVjdG9yPEdDR0xlbnVtPiYgYnVmZmVycykKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQogICAgICAgICAvLyBCZWNhdXNlIHRoZSBiYWNrYnVmZmVyIGlzIHNpbXVsYXRlZCBv
biBhbGwgY3VycmVudCBXZWJLaXQgcG9ydHMsIHdlIG5lZWQgdG8gY2hhbmdlIEJBQ0sgdG8gQ09M
T1JfQVRUQUNITUVOVDAuCi0gICAgICAgIEdDR0xlbnVtIHZhbHVlID0gKGJ1ZnNbMF0gPT0gR3Jh
cGhpY3NDb250ZXh0R0w6OkJBQ0spID8gR3JhcGhpY3NDb250ZXh0R0w6OkNPTE9SX0FUVEFDSE1F
TlQwIDogR3JhcGhpY3NDb250ZXh0R0w6Ok5PTkU7Ci0gICAgICAgIG1fY29udGV4dC0+Z3JhcGhp
Y3NDb250ZXh0R0woKS0+Z2V0RXh0ZW5zaW9ucygpLmRyYXdCdWZmZXJzRVhUKDEsICZ2YWx1ZSk7
CisgICAgICAgIEdDR0xlbnVtIHZhbHVlWzFdIHsgKGJ1ZnNbMF0gPT0gR3JhcGhpY3NDb250ZXh0
R0w6OkJBQ0spID8gR3JhcGhpY3NDb250ZXh0R0w6OkNPTE9SX0FUVEFDSE1FTlQwIDogR3JhcGhp
Y3NDb250ZXh0R0w6Ok5PTkUgfTsKKyAgICAgICAgbV9jb250ZXh0LT5ncmFwaGljc0NvbnRleHRH
TCgpLT5nZXRFeHRlbnNpb25zKCkuZHJhd0J1ZmZlcnNFWFQodmFsdWUpOwogICAgICAgICBtX2Nv
bnRleHQtPnNldEJhY2tEcmF3QnVmZmVyKGJ1ZnNbMF0pOwogICAgIH0gZWxzZSB7CiAgICAgICAg
IGlmIChuID4gbV9jb250ZXh0LT5nZXRNYXhEcmF3QnVmZmVycygpKSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEZyYW1lYnVmZmVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRnJhbWVidWZmZXIuY3BwCmluZGV4IDM2NThlZThlYWFm
N2YwZGJiODg2M2NlZDUwMjQyNWY0ZmI0ZTIzYTUuLmIxOThiMzY2YjExZjE1YjFiODAzYmQwNjNj
NzZjNGYyY2Q4ZDExNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMRnJhbWVidWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
RnJhbWVidWZmZXIuY3BwCkBAIC03MDIsMTMgKzcwMiwxMCBAQCB2b2lkIFdlYkdMRnJhbWVidWZm
ZXI6OmRyYXdCdWZmZXJzSWZOZWNlc3NhcnkoYm9vbCBmb3JjZSkKICAgICAgICAgICAgIH0KICAg
ICAgICAgfQogICAgICAgICBpZiAocmVzZXQpIHsKLSAgICAgICAgICAgIGlmIChjb250ZXh0KCkt
PmlzV2ViR0wyKCkpIHsKLSAgICAgICAgICAgICAgICBjb250ZXh0KCktPmdyYXBoaWNzQ29udGV4
dEdMKCktPmRyYXdCdWZmZXJzKAotICAgICAgICAgICAgICAgICAgICBtX2ZpbHRlcmVkRHJhd0J1
ZmZlcnMuc2l6ZSgpLCBtX2ZpbHRlcmVkRHJhd0J1ZmZlcnMuZGF0YSgpKTsKLSAgICAgICAgICAg
IH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgY29udGV4dCgpLT5ncmFwaGljc0NvbnRleHRHTCgp
LT5nZXRFeHRlbnNpb25zKCkuZHJhd0J1ZmZlcnNFWFQoCi0gICAgICAgICAgICAgICAgICAgIG1f
ZmlsdGVyZWREcmF3QnVmZmVycy5zaXplKCksIG1fZmlsdGVyZWREcmF3QnVmZmVycy5kYXRhKCkp
OwotICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGNvbnRleHQoKS0+aXNXZWJHTDIoKSkK
KyAgICAgICAgICAgICAgICBjb250ZXh0KCktPmdyYXBoaWNzQ29udGV4dEdMKCktPmRyYXdCdWZm
ZXJzKG1fZmlsdGVyZWREcmF3QnVmZmVycyk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICAgICAgY29udGV4dCgpLT5ncmFwaGljc0NvbnRleHRHTCgpLT5nZXRFeHRlbnNpb25zKCkuZHJh
d0J1ZmZlcnNFWFQobV9maWx0ZXJlZERyYXdCdWZmZXJzKTsKICAgICAgICAgfQogICAgIH0KIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZS5jcHAKaW5kZXggMTg1ZThjNjJlNmZiZTMxZjMxMzg4YzBjOWY4MGQ4MWNlZTI0
YTNiMS4uYTYyYTYwNDNlMTc5NjNkZWM3YTQzNGNiMzhiNmVkODFhOWQ2OTg1OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZS5jcHAKQEAgLTE2MDMsNyArMTYwMyw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZTo6YnVmZmVyRGF0YShHQ0dMZW51bSB0YXJnZXQsIE9wdGlvbmFsPEJ1ZmZlckRhdGFTCiAg
ICAgICAgIH0KIAogICAgICAgICBtX2NvbnRleHQtPm1vdmVFcnJvcnNUb1N5bnRoZXRpY0Vycm9y
TGlzdCgpOwotICAgICAgICBtX2NvbnRleHQtPmJ1ZmZlckRhdGEodGFyZ2V0LCBkYXRhLT5ieXRl
TGVuZ3RoKCksIGRhdGEtPmRhdGEoKSwgdXNhZ2UpOworICAgICAgICBtX2NvbnRleHQtPmJ1ZmZl
ckRhdGEodGFyZ2V0LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4oZGF0YS0+ZGF0YSgpLCBkYXRh
LT5ieXRlTGVuZ3RoKCkpLCB1c2FnZSk7CiAgICAgICAgIGlmIChtX2NvbnRleHQtPm1vdmVFcnJv
cnNUb1N5bnRoZXRpY0Vycm9yTGlzdCgpKSB7CiAgICAgICAgICAgICAvLyBUaGUgYnVmZmVyRGF0
YSBmdW5jdGlvbiBmYWlsZWQuIFRlbGwgdGhlIGJ1ZmZlciBpdCBkb2Vzbid0IGhhdmUgdGhlIGRh
dGEgaXQgdGhpbmtzIGl0IGRvZXMuCiAgICAgICAgICAgICBidWZmZXItPmRpc2Fzc29jaWF0ZUJ1
ZmZlckRhdGEoKTsKQEAgLTE2MzAsNyArMTYzMCw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZTo6YnVmZmVyU3ViRGF0YShHQ0dMZW51bSB0YXJnZXQsIGxvbmcgbG9uZyBvZmZzZXQs
CiAgICAgICAgIH0KIAogICAgICAgICBtX2NvbnRleHQtPm1vdmVFcnJvcnNUb1N5bnRoZXRpY0Vy
cm9yTGlzdCgpOwotICAgICAgICBtX2NvbnRleHQtPmJ1ZmZlclN1YkRhdGEodGFyZ2V0LCBzdGF0
aWNfY2FzdDxHQ0dMaW50cHRyPihvZmZzZXQpLCBkYXRhLT5ieXRlTGVuZ3RoKCksIGRhdGEtPmRh
dGEoKSk7CisgICAgICAgIG1fY29udGV4dC0+YnVmZmVyU3ViRGF0YSh0YXJnZXQsIHN0YXRpY19j
YXN0PEdDR0xpbnRwdHI+KG9mZnNldCksIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPihkYXRhLT5k
YXRhKCksIGRhdGEtPmJ5dGVMZW5ndGgoKSkpOwogICAgICAgICBpZiAobV9jb250ZXh0LT5tb3Zl
RXJyb3JzVG9TeW50aGV0aWNFcnJvckxpc3QoKSkgewogICAgICAgICAgICAgLy8gVGhlIGJ1ZmZl
clN1YkRhdGEgZnVuY3Rpb24gZmFpbGVkLiBUZWxsIHRoZSBidWZmZXIgaXQgZG9lc24ndCBoYXZl
IHRoZSBkYXRhIGl0IHRoaW5rcyBpdCBkb2VzLgogICAgICAgICAgICAgYnVmZmVyLT5kaXNhc3Nv
Y2lhdGVCdWZmZXJEYXRhKCk7CkBAIC0xNzU2LDggKzE3NTYsOCBAQCB2b2lkIFdlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2U6OmNvbXByZXNzZWRUZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NH
TGludCBsZQogI2lmIFVTRShBTkdMRSkKICAgICBpZiAoIXZhbGlkYXRlVGV4dHVyZTJEQmluZGlu
ZygiY29tcHJlc3NlZFRleEltYWdlMkQiLCB0YXJnZXQpKQogICAgICAgICByZXR1cm47Ci0gICAg
bV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuY29tcHJlc3NlZFRleEltYWdlMkRSb2J1c3RBTkdM
RSh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwKLSAgICAgICAg
Ym9yZGVyLCBkYXRhLmJ5dGVMZW5ndGgoKSwgZGF0YS5ieXRlTGVuZ3RoKCksIGRhdGEuYmFzZUFk
ZHJlc3MoKSk7CisgICAgbV9jb250ZXh0LT5jb21wcmVzc2VkVGV4SW1hZ2UyRCh0YXJnZXQsIGxl
dmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwKKyAgICAgICAgYm9yZGVyLCBkYXRh
LmJ5dGVMZW5ndGgoKSwgbWFrZUdDR0xTcGFuKGRhdGEuYmFzZUFkZHJlc3MoKSwgZGF0YS5ieXRl
TGVuZ3RoKCkpKTsKICNlbHNlCiAgICAgaWYgKCF2YWxpZGF0ZVRleEZ1bmNMZXZlbCgiY29tcHJl
c3NlZFRleEltYWdlMkQiLCB0YXJnZXQsIGxldmVsKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTc4
Miw3ICsxNzgyLDcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpjb21wcmVzc2Vk
VGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGUKICAgICAgICAgcmV0dXJuOwog
ICAgIG1fY29udGV4dC0+bW92ZUVycm9yc1RvU3ludGhldGljRXJyb3JMaXN0KCk7CiAgICAgc3Rh
dGljX2Nhc3Q8R3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqPihtX2NvbnRleHQuZ2V0KCkpLT5jb21w
cmVzc2VkVGV4SW1hZ2UyRCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhl
aWdodCwKLSAgICAgICAgYm9yZGVyLCBkYXRhLmJ5dGVMZW5ndGgoKSwgZGF0YS5iYXNlQWRkcmVz
cygpKTsKKyAgICAgICAgYm9yZGVyLCBkYXRhLmJ5dGVMZW5ndGgsIG1ha2VHQ0dMU3BhbihkYXRh
LmJhc2VBZGRyZXNzKCksIGRhdGEuYnl0ZUxlbmd0aCgpKSk7CiAgICAgaWYgKG1fY29udGV4dC0+
bW92ZUVycm9yc1RvU3ludGhldGljRXJyb3JMaXN0KCkpIHsKICAgICAgICAgLy8gVGhlIGNvbXBy
ZXNzZWRUZXhJbWFnZTJEIGZ1bmN0aW9uIGZhaWxlZC4gVGVsbCB0aGUgV2ViR0xUZXh0dXJlIGl0
IGRvZXNuJ3QgaGF2ZSB0aGUgZGF0YSBmb3IgdGhpcyBsZXZlbC4KICAgICAgICAgdGV4LT5tYXJr
SW52YWxpZCh0YXJnZXQsIGxldmVsKTsKQEAgLTE4MDEsNyArMTgwMSw3IEBAIHZvaWQgV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZTo6Y29tcHJlc3NlZFRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMaW50CiAjaWYgVVNFKEFOR0xFKQogICAgIGlmICghdmFsaWRhdGVUZXh0dXJlMkRC
aW5kaW5nKCJjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRCIsIHRhcmdldCkpCiAgICAgICAgIHJldHVy
bjsKLSAgICBncmFwaGljc0NvbnRleHRHTCgpLT5nZXRFeHRlbnNpb25zKCkuY29tcHJlc3NlZFRl
eFN1YkltYWdlMkRSb2J1c3RBTkdMRSh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB3
aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIGRhdGEuYnl0ZUxlbmd0aCgpLCBkYXRhLmJ5dGVMZW5ndGgo
KSwgZGF0YS5iYXNlQWRkcmVzcygpKTsKKyAgICBtX2NvbnRleHQtPmNvbXByZXNzZWRUZXhTdWJJ
bWFnZTJEKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGZv
cm1hdCwgZGF0YS5ieXRlTGVuZ3RoKCksIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPihkYXRhLmJh
c2VBZGRyZXNzKCksIGRhdGEuYnl0ZUxlbmd0aCgpKSk7CiAjZWxzZQogICAgIGlmICghdmFsaWRh
dGVUZXhGdW5jTGV2ZWwoImNvbXByZXNzZWRUZXhTdWJJbWFnZTJEIiwgdGFyZ2V0LCBsZXZlbCkp
CiAgICAgICAgIHJldHVybjsKQEAgLTE4MjQsNyArMTgyNCw3IEBAIHZvaWQgV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6Y29tcHJlc3NlZFRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMaW50CiAgICAgaWYgKCF2YWxpZGF0ZUNvbXByZXNzZWRUZXhTdWJEaW1lbnNpb25zKCJjb21w
cmVzc2VkVGV4U3ViSW1hZ2UyRCIsIHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdp
ZHRoLCBoZWlnaHQsIGZvcm1hdCwgdGV4LmdldCgpKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
c3RhdGljX2Nhc3Q8R3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqPihncmFwaGljc0NvbnRleHRHTCgp
KS0+Y29tcHJlc3NlZFRleFN1YkltYWdlMkQodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNl
dCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCBkYXRhLmJ5dGVMZW5ndGgoKSwgZGF0YS5iYXNlQWRk
cmVzcygpKTsKKyAgICBzdGF0aWNfY2FzdDxHcmFwaGljc0NvbnRleHRHTE9wZW5HTCo+KGdyYXBo
aWNzQ29udGV4dEdMKCkpLT5jb21wcmVzc2VkVGV4U3ViSW1hZ2UyRCh0YXJnZXQsIGxldmVsLCB4
b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIG1ha2VHQ0dMU3BhbihkYXRh
LmJhc2VBZGRyZXNzKCksIGRhdGEuYnl0ZUxlbmd0aCgpKSk7CiAgICAgdGV4LT5zZXRDb21wcmVz
c2VkKCk7CiAjZW5kaWYKIH0KQEAgLTE5MDAsOCArMTkwMCw4IEBAIHZvaWQgV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6Y29weVRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50
IGxldmVsCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgVW5pcXVlQXJy
YXk8dW5zaWduZWQgY2hhcj4gemVybzsKKyAgICAgICAgdW5zaWduZWQgc2l6ZSA9IDA7CiAgICAg
ICAgIGlmICh3aWR0aCAmJiBoZWlnaHQpIHsKLSAgICAgICAgICAgIHVuc2lnbmVkIHNpemU7CiAg
ICAgICAgICAgICBHQ0dMZW51bSBlcnJvciA9IG1fY29udGV4dC0+Y29tcHV0ZUltYWdlU2l6ZUlu
Qnl0ZXMoZm9ybWF0LCB0eXBlLCB3aWR0aCwgaGVpZ2h0LCAxLCBnZXRVbnBhY2tQaXhlbFN0b3Jl
UGFyYW1zKFRleEltYWdlRGltZW5zaW9uOjpUZXgyRCksICZzaXplLCBudWxscHRyLCBudWxscHRy
KTsKICAgICAgICAgICAgIGlmIChlcnJvciAhPSBHcmFwaGljc0NvbnRleHRHTDo6Tk9fRVJST1Ip
IHsKICAgICAgICAgICAgICAgICBzeW50aGVzaXplR0xFcnJvcihlcnJvciwgImNvcHlUZXhTdWJJ
bWFnZTJEIiwgImJhZCBkaW1lbnNpb25zIik7CkBAIC0xOTE0LDcgKzE5MTQsNyBAQCB2b2lkIFdl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmNvcHlUZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTGludCBsZXZlbAogICAgICAgICAgICAgfQogICAgICAgICAgICAgbWVtc2V0KHplcm8u
Z2V0KCksIDAsIHNpemUpOwogICAgICAgICB9Ci0gICAgICAgIG1fY29udGV4dC0+dGV4U3ViSW1h
Z2UyRCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBmb3Jt
YXQsIHR5cGUsIHplcm8uZ2V0KCkpOworICAgICAgICBtX2NvbnRleHQtPnRleFN1YkltYWdlMkQo
dGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0
eXBlLCBtYWtlR0NHTFNwYW4oemVyby5nZXQoKSwgc2l6ZSkpOwogICAgICAgICBpZiAoY2xpcHBl
ZFdpZHRoID4gMCAmJiBjbGlwcGVkSGVpZ2h0ID4gMCkKICAgICAgICAgICAgIG1fY29udGV4dC0+
Y29weVRleFN1YkltYWdlMkQodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCArIGNsaXBwZWRYIC0geCwg
eW9mZnNldCArIGNsaXBwZWRZIC0geSwgY2xpcHBlZFgsIGNsaXBwZWRZLCBjbGlwcGVkV2lkdGgs
IGNsaXBwZWRIZWlnaHQpOwogICAgIH0gZWxzZQpAQCAtNDcwNywxNCArNDcwNywxNCBAQCBFeGNl
cHRpb25Pcjx2b2lkPiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp0ZXhJbWFnZVNvdXJjZUhl
bHBlcihUZXhJbWFnZUZ1bmN0aQogI2lmIFVTRShBTkdMRSkKICAgICAgICAgICAgIC8vIDNEIGZ1
bmN0aW9ucy4KICAgICAgICAgICAgIGlmIChmdW5jdGlvbklEID09IFRleEltYWdlRnVuY3Rpb25J
RDo6VGV4SW1hZ2UzRCkgewotICAgICAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9u
cygpLnRleEltYWdlM0RSb2J1c3RBTkdMRSh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwK
KyAgICAgICAgICAgICAgICBtX2NvbnRleHQtPnRleEltYWdlM0QodGFyZ2V0LCBsZXZlbCwgaW50
ZXJuYWxmb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgIGFkanVzdGVkU291cmNlSW1hZ2VSZWN0
LndpZHRoKCksIGFkanVzdGVkU291cmNlSW1hZ2VSZWN0LmhlaWdodCgpLCBkZXB0aCwgMCwKLSAg
ICAgICAgICAgICAgICAgICAgZm9ybWF0LCB0eXBlLCBieXRlTGVuZ3RoLCBuZWVkQ29udmVyc2lv
biA/IGRhdGEuZGF0YSgpIDogcGl4ZWxzLT5kYXRhKCktPmRhdGEoKSk7CisgICAgICAgICAgICAg
ICAgICAgIGZvcm1hdCwgdHlwZSwgbWFrZUdDR0xTcGFuKG5lZWRDb252ZXJzaW9uID8gZGF0YS5k
YXRhKCkgOiBwaXhlbHMtPmRhdGEoKS0+ZGF0YSgpLCBieXRlTGVuZ3RoKSk7CiAgICAgICAgICAg
ICB9IGVsc2UgewogICAgICAgICAgICAgICAgIEFTU0VSVChmdW5jdGlvbklEID09IFRleEltYWdl
RnVuY3Rpb25JRDo6VGV4U3ViSW1hZ2UzRCk7Ci0gICAgICAgICAgICAgICAgbV9jb250ZXh0LT5n
ZXRFeHRlbnNpb25zKCkudGV4U3ViSW1hZ2UzRFJvYnVzdEFOR0xFKHRhcmdldCwgbGV2ZWwsIHhv
ZmZzZXQsIHlvZmZzZXQsIHpvZmZzZXQsCisgICAgICAgICAgICAgICAgbV9jb250ZXh0LT50ZXhT
dWJJbWFnZTNEKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHpvZmZzZXQsCiAgICAg
ICAgICAgICAgICAgICAgIGFkanVzdGVkU291cmNlSW1hZ2VSZWN0LndpZHRoKCksIGFkanVzdGVk
U291cmNlSW1hZ2VSZWN0LmhlaWdodCgpLCBkZXB0aCwKLSAgICAgICAgICAgICAgICAgICAgZm9y
bWF0LCB0eXBlLCBieXRlTGVuZ3RoLCBuZWVkQ29udmVyc2lvbiA/IGRhdGEuZGF0YSgpIDogcGl4
ZWxzLT5kYXRhKCktPmRhdGEoKSk7CisgICAgICAgICAgICAgICAgICAgIGZvcm1hdCwgdHlwZSwg
bWFrZUdDR0xTcGFuKG5lZWRDb252ZXJzaW9uID8gZGF0YS5kYXRhKCkgOiBwaXhlbHMtPmRhdGEo
KS0+ZGF0YSgpLCBieXRlTGVuZ3RoKSk7CiAgICAgICAgICAgICB9CiAjZWxzZQogICAgICAgICAg
ICAgLy8gV2ViR0wgMi4wIGlzIG9ubHkgc3VwcG9ydGVkIHdpdGggdGhlIEFOR0xFIGJhY2tlbmQu
CkBAIC00ODk0LDExICs0ODk0LDExIEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6
dGV4SW1hZ2VBcnJheUJ1ZmZlclZpZXdIZWxwZXIoVGV4SW1hZ2VGdW5jdGlvbklECiAgICAgfQog
I2lmIFVTRShBTkdMRSkKICAgICBpZiAoZnVuY3Rpb25JRCA9PSBUZXhJbWFnZUZ1bmN0aW9uSUQ6
OlRleEltYWdlM0QpIHsKLSAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkudGV4SW1h
Z2UzRFJvYnVzdEFOR0xFKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVp
Z2h0LCBkZXB0aCwgYm9yZGVyLCBmb3JtYXQsIHR5cGUsIGJ5dGVMZW5ndGgsIGRhdGEpOworICAg
ICAgICBtX2NvbnRleHQtPnRleEltYWdlM0QodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQs
IHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBib3JkZXIsIGZvcm1hdCwgdHlwZSwgbWFrZUdDR0xTcGFu
KGRhdGEsIGJ5dGVMZW5ndGgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBpZiAoZnVu
Y3Rpb25JRCA9PSBUZXhJbWFnZUZ1bmN0aW9uSUQ6OlRleFN1YkltYWdlM0QpIHsKLSAgICAgICAg
bV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkudGV4U3ViSW1hZ2UzRFJvYnVzdEFOR0xFKHRhcmdl
dCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHpvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRo
LCBmb3JtYXQsIHR5cGUsIGJ5dGVMZW5ndGgsIGRhdGEpOworICAgICAgICBtX2NvbnRleHQtPnRl
eFN1YkltYWdlM0QodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgem9mZnNldCwgd2lk
dGgsIGhlaWdodCwgZGVwdGgsIGZvcm1hdCwgdHlwZSwgbWFrZUdDR0xTcGFuKGRhdGEsIGJ5dGVM
ZW5ndGgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICNlbmRpZiAvLyBVU0UoQU5HTEUpCkBA
IC00OTczLDE0ICs0OTczLDE0IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dGV4
SW1hZ2VJbXBsKFRleEltYWdlRnVuY3Rpb25JRCBmdW5jdGlvbklELCBHQ0dMCiAjaWYgVVNFKEFO
R0xFKQogICAgICAgICAvLyAzRCBmdW5jdGlvbnMuCiAgICAgICAgIGlmIChmdW5jdGlvbklEID09
IFRleEltYWdlRnVuY3Rpb25JRDo6VGV4SW1hZ2UzRCkgewotICAgICAgICAgICAgbV9jb250ZXh0
LT5nZXRFeHRlbnNpb25zKCkudGV4SW1hZ2UzRFJvYnVzdEFOR0xFKHRhcmdldCwgbGV2ZWwsIGlu
dGVybmFsZm9ybWF0LAorICAgICAgICAgICAgbV9jb250ZXh0LT50ZXhJbWFnZTNEKHRhcmdldCwg
bGV2ZWwsIGludGVybmFsZm9ybWF0LAogICAgICAgICAgICAgICAgIGFkanVzdGVkU291cmNlSW1h
Z2VSZWN0LndpZHRoKCksIGFkanVzdGVkU291cmNlSW1hZ2VSZWN0LmhlaWdodCgpLCBkZXB0aCwg
MCwKLSAgICAgICAgICAgICAgICBmb3JtYXQsIHR5cGUsIGJ5dGVMZW5ndGgsIG5lZWRDb252ZXJz
aW9uID8gZGF0YS5kYXRhKCkgOiBpbWFnZVBpeGVsRGF0YSk7CisgICAgICAgICAgICAgICAgZm9y
bWF0LCB0eXBlLCBtYWtlR0NHTFNwYW4obmVlZENvbnZlcnNpb24gPyBkYXRhLmRhdGEoKSA6IGlt
YWdlUGl4ZWxEYXRhLCBieXRlTGVuZ3RoKSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAg
ICBBU1NFUlQoZnVuY3Rpb25JRCA9PSBUZXhJbWFnZUZ1bmN0aW9uSUQ6OlRleFN1YkltYWdlM0Qp
OwotICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkudGV4U3ViSW1hZ2UzRFJv
YnVzdEFOR0xFKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHpvZmZzZXQsCisgICAg
ICAgICAgICBtX2NvbnRleHQtPnRleFN1YkltYWdlM0QodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwg
eW9mZnNldCwgem9mZnNldCwKICAgICAgICAgICAgICAgICBhZGp1c3RlZFNvdXJjZUltYWdlUmVj
dC53aWR0aCgpLCBhZGp1c3RlZFNvdXJjZUltYWdlUmVjdC5oZWlnaHQoKSwgZGVwdGgsCi0gICAg
ICAgICAgICAgICAgZm9ybWF0LCB0eXBlLCBieXRlTGVuZ3RoLCBuZWVkQ29udmVyc2lvbiA/IGRh
dGEuZGF0YSgpIDogaW1hZ2VQaXhlbERhdGEpOworICAgICAgICAgICAgICAgIGZvcm1hdCwgdHlw
ZSwgbWFrZUdDR0xTcGFuKG5lZWRDb252ZXJzaW9uID8gZGF0YS5kYXRhKCkgOiBpbWFnZVBpeGVs
RGF0YSwgYnl0ZUxlbmd0aCkpOwogICAgICAgICB9CiAjZWxzZQogICAgICAgICBVTlVTRURfUEFS
QU0oem9mZnNldCk7CkBAIC00OTkzLDcgKzQ5OTMsNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OnRleEltYWdlSW1wbChUZXhJbWFnZUZ1bmN0aW9uSUQgZnVuY3Rpb25JRCwgR0NH
TAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp0ZXhJbWFnZTJEQmFzZShHQ0dMZW51
bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsRm9ybWF0LCBHQ0dMc2l6
ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3Jt
YXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBieXRlTGVuZ3RoLCBjb25zdCB2b2lkKiBwaXhl
bHMpCiB7CiAjaWYgVVNFKEFOR0xFKQotICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnRl
eEltYWdlMkRSb2J1c3RBTkdMRSh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbEZvcm1hdCwgd2lkdGgs
IGhlaWdodCwgYm9yZGVyLCBmb3JtYXQsIHR5cGUsIGJ5dGVMZW5ndGgsIHBpeGVscyk7CisgICAg
bV9jb250ZXh0LT50ZXhJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIGludGVybmFsRm9ybWF0LCB3aWR0
aCwgaGVpZ2h0LCBib3JkZXIsIGZvcm1hdCwgdHlwZSwgbWFrZUdDR0xTcGFuKHBpeGVscywgYnl0
ZUxlbmd0aCkpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oYnl0ZUxlbmd0aCk7CiAgICAgLy8g
RklYTUU6IEZvciBub3cgd2UgaWdub3JlIGFueSBlcnJvcnMgcmV0dXJuZWQuCkBAIC01MDA3LDcg
KzUwMDcsNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnRleEltYWdlMkRCYXNl
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgRwogICAgIH0gZWxzZSB7CiAgICAgICAg
IEFTU0VSVCh2YWxpZGF0ZVNldHRhYmxlVGV4SW50ZXJuYWxGb3JtYXQoInRleEltYWdlMkQiLCBp
bnRlcm5hbEZvcm1hdCkpOwogICAgICAgICBtX2NvbnRleHQtPm1vdmVFcnJvcnNUb1N5bnRoZXRp
Y0Vycm9yTGlzdCgpOwotICAgICAgICBtX2NvbnRleHQtPnRleEltYWdlMkQodGFyZ2V0LCBsZXZl
bCwgaW50ZXJuYWxGb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGJvcmRlciwgZm9ybWF0LCB0eXBlLCBw
aXhlbHMpOworICAgICAgICBtX2NvbnRleHQtPnRleEltYWdlMkQodGFyZ2V0LCBsZXZlbCwgaW50
ZXJuYWxGb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGJvcmRlciwgZm9ybWF0LCB0eXBlLCBtYWtlR0NH
TFNwYW4ocGl4ZWxzLCBieXRlTGVuZ3RoKSk7CiAgICAgICAgIGlmIChtX2NvbnRleHQtPm1vdmVF
cnJvcnNUb1N5bnRoZXRpY0Vycm9yTGlzdCgpKSB7CiAgICAgICAgICAgICAvLyBUaGUgdGV4SW1h
Z2UyRCBmdW5jdGlvbiBmYWlsZWQuIFRlbGwgdGhlIFdlYkdMVGV4dHVyZSBpdCBkb2Vzbid0IGhh
dmUgdGhlIGRhdGEgZm9yIHRoaXMgbGV2ZWwuCiAgICAgICAgICAgICB0ZXgtPm1hcmtJbnZhbGlk
KHRhcmdldCwgbGV2ZWwpOwpAQCAtNTAyMyw3ICs1MDIzLDcgQEAgdm9pZCBXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlOjp0ZXhTdWJJbWFnZTJEQmFzZShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQg
bGV2ZWwKICAgICBBU1NFUlQoIWlzQ29udGV4dExvc3QoKSk7CiAjaWYgVVNFKEFOR0xFKQogICAg
IFVOVVNFRF9QQVJBTShpbnRlcm5hbEZvcm1hdCk7Ci0gICAgbV9jb250ZXh0LT5nZXRFeHRlbnNp
b25zKCkudGV4U3ViSW1hZ2UyRFJvYnVzdEFOR0xFKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlv
ZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgYnl0ZUxlbmd0aCwgcGl4ZWxzKTsK
KyAgICBtX2NvbnRleHQtPnRleFN1YkltYWdlMkQodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9m
ZnNldCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBtYWtlR0NHTFNwYW4ocGl4ZWxzLCBi
eXRlTGVuZ3RoKSk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShieXRlTGVuZ3RoKTsKICAgICBB
U1NFUlQodmFsaWRhdGVUZXhGdW5jUGFyYW1ldGVycygidGV4U3ViSW1hZ2UyRCIsIFRleEltYWdl
RnVuY3Rpb25UeXBlOjpUZXhTdWJJbWFnZSwgU291cmNlQXJyYXlCdWZmZXJWaWV3LCB0YXJnZXQs
IGxldmVsLCBpbnRlcm5hbEZvcm1hdCwgd2lkdGgsIGhlaWdodCwgMSwgMCwgZm9ybWF0LCB0eXBl
KSk7CkBAIC01MDQwLDcgKzUwNDAsNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6
OnRleFN1YkltYWdlMkRCYXNlKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbAogICAgIEFT
U0VSVCh0ZXgtPmdldEhlaWdodCh0YXJnZXQsIGxldmVsKSA+PSAoeW9mZnNldCArIGhlaWdodCkp
OwogICAgIGlmICghaXNXZWJHTDIoKSkKICAgICAgICAgQVNTRVJUX1VOVVNFRChpbnRlcm5hbEZv
cm1hdCwgdGV4LT5nZXRJbnRlcm5hbEZvcm1hdCh0YXJnZXQsIGxldmVsKSA9PSBpbnRlcm5hbEZv
cm1hdCk7Ci0gICAgbV9jb250ZXh0LT50ZXhTdWJJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIHhvZmZz
ZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgcGl4ZWxzKTsKKyAgICBt
X2NvbnRleHQtPnRleFN1YkltYWdlMkQodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwg
d2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBtYWtlR0NHTFNwYW4ocGl4ZWxzLCBieXRlTGVu
Z3RoKSk7CiAjZW5kaWYKIH0KIApAQCAtNTgyNiwxMDAgKzU4MjYsMTI1IEBAIHZvaWQgV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybTRpKGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9u
KiBsb2NhdGlvbiwKIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtMWZ2
KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgRmxvYXQzMkxpc3QmJiB2KQog
ewotICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlVW5pZm9ybVBh
cmFtZXRlcnMoInVuaWZvcm0xZnYiLCBsb2NhdGlvbiwgdiwgMSwgMCwgdi5sZW5ndGgoKSkpCisg
ICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSkKICAgICAgICAgcmV0dXJuOwotCi0gICAg
bV9jb250ZXh0LT51bmlmb3JtMWZ2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCB2Lmxlbmd0aCgpLCB2
LmRhdGEoKSk7CisgICAgYXV0byBkYXRhID0gdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycygidW5p
Zm9ybTFmdiIsIGxvY2F0aW9uLCB2LCAxKTsKKyAgICBpZiAoIWRhdGEpCisgICAgICAgIHJldHVy
bjsKKyAgICBtX2NvbnRleHQtPnVuaWZvcm0xZnYobG9jYXRpb24tPmxvY2F0aW9uKCksIGRhdGEu
dmFsdWUoKSk7CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybTJm
dihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEZsb2F0MzJMaXN0JiYgdikK
IHsKLSAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVVuaWZvcm1Q
YXJhbWV0ZXJzKCJ1bmlmb3JtMmZ2IiwgbG9jYXRpb24sIHYsIDIsIDAsIHYubGVuZ3RoKCkpKQor
ICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCiAgICAgICAgIHJldHVybjsKLQotICAg
IG1fY29udGV4dC0+dW5pZm9ybTJmdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgdi5sZW5ndGgoKSAv
IDIsIHYuZGF0YSgpKTsKKyAgICBhdXRvIGRhdGEgPSB2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJz
KCJ1bmlmb3JtMmZ2IiwgbG9jYXRpb24sIHYsIDIpOworICAgIGlmICghZGF0YSkKKyAgICAgICAg
cmV0dXJuOworICAgIG1fY29udGV4dC0+dW5pZm9ybTJmdihsb2NhdGlvbi0+bG9jYXRpb24oKSwg
ZGF0YS52YWx1ZSgpKTsKIH0KIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlm
b3JtM2Z2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgRmxvYXQzMkxpc3Qm
JiB2KQogewotICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlVW5p
Zm9ybVBhcmFtZXRlcnMoInVuaWZvcm0zZnYiLCBsb2NhdGlvbiwgdiwgMywgMCwgdi5sZW5ndGgo
KSkpCisgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSkKICAgICAgICAgcmV0dXJuOwot
Ci0gICAgbV9jb250ZXh0LT51bmlmb3JtM2Z2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCB2Lmxlbmd0
aCgpIC8gMywgdi5kYXRhKCkpOworICAgIGF1dG8gZGF0YSA9IHZhbGlkYXRlVW5pZm9ybVBhcmFt
ZXRlcnMoInVuaWZvcm0zZnYiLCBsb2NhdGlvbiwgdiwgMyk7CisgICAgaWYgKCFkYXRhKQorICAg
ICAgICByZXR1cm47CisgICAgbV9jb250ZXh0LT51bmlmb3JtM2Z2KGxvY2F0aW9uLT5sb2NhdGlv
bigpLCBkYXRhLnZhbHVlKCkpOwogfQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6
OnVuaWZvcm00ZnYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBGbG9hdDMy
TGlzdCYmIHYpCiB7Ci0gICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRh
dGVVbmlmb3JtUGFyYW1ldGVycygidW5pZm9ybTRmdiIsIGxvY2F0aW9uLCB2LCA0LCAwLCB2Lmxl
bmd0aCgpKSkKKyAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpKQogICAgICAgICByZXR1
cm47Ci0KLSAgICBtX2NvbnRleHQtPnVuaWZvcm00ZnYobG9jYXRpb24tPmxvY2F0aW9uKCksIHYu
bGVuZ3RoKCkgLyA0LCB2LmRhdGEoKSk7CisgICAgYXV0byBkYXRhID0gdmFsaWRhdGVVbmlmb3Jt
UGFyYW1ldGVycygidW5pZm9ybTRmdiIsIGxvY2F0aW9uLCB2LCA0KTsKKyAgICBpZiAoIWRhdGEp
CisgICAgICAgIHJldHVybjsKKyAgICBtX2NvbnRleHQtPnVuaWZvcm00ZnYobG9jYXRpb24tPmxv
Y2F0aW9uKCksIGRhdGEudmFsdWUoKSk7CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZTo6dW5pZm9ybTFpdihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIElu
dDMyTGlzdCYmIHYpCiB7Ci0gICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhdmFs
aWRhdGVVbmlmb3JtUGFyYW1ldGVycygidW5pZm9ybTFpdiIsIGxvY2F0aW9uLCB2LCAxLCAwLCB2
Lmxlbmd0aCgpKSkKKyAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpKQorICAgICAgICBy
ZXR1cm47CisgICAgYXV0byByZXN1bHQgPSB2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKCJ1bmlm
b3JtMWl2IiwgbG9jYXRpb24sIHYsIDEpOworICAgIGlmICghcmVzdWx0KQogICAgICAgICByZXR1
cm47CiAKLSAgICBhdXRvIGRhdGEgPSB2LmRhdGEoKTsKLSAgICBhdXRvIGxlbmd0aCA9IHYubGVu
Z3RoKCk7CisgICAgYXV0byBkYXRhID0gcmVzdWx0LnZhbHVlKCk7CiAKICAgICBpZiAobG9jYXRp
b24tPnR5cGUoKSA9PSBHcmFwaGljc0NvbnRleHRHTDo6U0FNUExFUl8yRCB8fCBsb2NhdGlvbi0+
dHlwZSgpID09IEdyYXBoaWNzQ29udGV4dEdMOjpTQU1QTEVSX0NVQkUpIHsKLSAgICAgICAgZm9y
IChhdXRvIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBkYXRhLmJ1ZlNpemU7ICsraSkgewogICAgICAgICAgICAgaWYgKGRhdGFbaV0gPj0g
c3RhdGljX2Nhc3Q8aW50PihtX3RleHR1cmVVbml0cy5zaXplKCkpKSB7Ci0gICAgICAgICAgICAg
ICAgTE9HKFdlYkdMLCAiVGV4dHVyZSB1bml0IHNpemU9JXp1LCB2WyVkXT0lZC4gTG9jYXRpb24g
dHlwZSA9ICUwNFguIiwgbV90ZXh0dXJlVW5pdHMuc2l6ZSgpLCBpLCBkYXRhW2ldLCBsb2NhdGlv
bi0+dHlwZSgpKTsKKyAgICAgICAgICAgICAgICBMT0coV2ViR0wsICJUZXh0dXJlIHVuaXQgc2l6
ZT0lenUsIHZbJXp1XT0lZC4gTG9jYXRpb24gdHlwZSA9ICUwNFguIiwgbV90ZXh0dXJlVW5pdHMu
c2l6ZSgpLCBpLCBkYXRhW2ldLCBsb2NhdGlvbi0+dHlwZSgpKTsKICAgICAgICAgICAgICAgICBz
eW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9WQUxVRSwgInVuaWZv
cm0xaXYiLCAiaW52YWxpZCB0ZXh0dXJlIHVuaXQiKTsKICAgICAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBtX2NvbnRleHQtPnVuaWZv
cm0xaXYobG9jYXRpb24tPmxvY2F0aW9uKCksIGxlbmd0aCwgZGF0YSk7CisgICAgbV9jb250ZXh0
LT51bmlmb3JtMWl2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCBkYXRhKTsKIH0KIAogdm9pZCBXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtMml2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0
aW9uKiBsb2NhdGlvbiwgSW50MzJMaXN0JiYgdikKIHsKLSAgICBpZiAoaXNDb250ZXh0TG9zdE9y
UGVuZGluZygpIHx8ICF2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKCJ1bmlmb3JtMml2IiwgbG9j
YXRpb24sIHYsIDIsIDAsIHYubGVuZ3RoKCkpKQorICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5k
aW5nKCkpCiAgICAgICAgIHJldHVybjsKLQotICAgIG1fY29udGV4dC0+dW5pZm9ybTJpdihsb2Nh
dGlvbi0+bG9jYXRpb24oKSwgdi5sZW5ndGgoKSAvIDIsIHYuZGF0YSgpKTsKKyAgICBhdXRvIGRh
dGEgPSB2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKCJ1bmlmb3JtMml2IiwgbG9jYXRpb24sIHYs
IDIpOworICAgIGlmICghZGF0YSkKKyAgICAgICAgcmV0dXJuOworICAgIG1fY29udGV4dC0+dW5p
Zm9ybTJpdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgZGF0YS52YWx1ZSgpKTsKIH0KIAogdm9pZCBX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtM2l2KGNvbnN0IFdlYkdMVW5pZm9ybUxv
Y2F0aW9uKiBsb2NhdGlvbiwgSW50MzJMaXN0JiYgdikKIHsKLSAgICBpZiAoaXNDb250ZXh0TG9z
dE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKCJ1bmlmb3JtM2l2Iiwg
bG9jYXRpb24sIHYsIDMsIDAsIHYubGVuZ3RoKCkpKQorICAgIGlmIChpc0NvbnRleHRMb3N0T3JQ
ZW5kaW5nKCkpCiAgICAgICAgIHJldHVybjsKLQotICAgIG1fY29udGV4dC0+dW5pZm9ybTNpdihs
b2NhdGlvbi0+bG9jYXRpb24oKSwgdi5sZW5ndGgoKSAvIDMsIHYuZGF0YSgpKTsKKyAgICBhdXRv
IGRhdGEgPSB2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKCJ1bmlmb3JtM2l2IiwgbG9jYXRpb24s
IHYsIDMpOworICAgIGlmICghZGF0YSkKKyAgICAgICAgcmV0dXJuOworICAgIG1fY29udGV4dC0+
dW5pZm9ybTNpdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgZGF0YS52YWx1ZSgpKTsKIH0KIAogdm9p
ZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtNGl2KGNvbnN0IFdlYkdMVW5pZm9y
bUxvY2F0aW9uKiBsb2NhdGlvbiwgSW50MzJMaXN0JiYgdikKIHsKLSAgICBpZiAoaXNDb250ZXh0
TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKCJ1bmlmb3JtNGl2
IiwgbG9jYXRpb24sIHYsIDQsIDAsIHYubGVuZ3RoKCkpKQorICAgIGlmIChpc0NvbnRleHRMb3N0
T3JQZW5kaW5nKCkpCiAgICAgICAgIHJldHVybjsKLQotICAgIG1fY29udGV4dC0+dW5pZm9ybTRp
dihsb2NhdGlvbi0+bG9jYXRpb24oKSwgdi5sZW5ndGgoKSAvIDQsIHYuZGF0YSgpKTsKKyAgICBh
dXRvIGRhdGEgPSB2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKCJ1bmlmb3JtNGl2IiwgbG9jYXRp
b24sIHYsIDQpOworICAgIGlmICghZGF0YSkKKyAgICAgICAgcmV0dXJuOworICAgIG1fY29udGV4
dC0+dW5pZm9ybTRpdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgZGF0YS52YWx1ZSgpKTsKIH0KIAog
dm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtTWF0cml4MmZ2KGNvbnN0IFdl
YkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBGbG9h
dDMyTGlzdCYmIHYpCiB7Ci0gICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhdmFs
aWRhdGVVbmlmb3JtTWF0cml4UGFyYW1ldGVycygidW5pZm9ybU1hdHJpeDJmdiIsIGxvY2F0aW9u
LCB0cmFuc3Bvc2UsIHYsIDQsIDAsIHYubGVuZ3RoKCkpKQorICAgIGlmIChpc0NvbnRleHRMb3N0
T3JQZW5kaW5nKCkpCisgICAgICAgIHJldHVybjsKKyAgICBhdXRvIGRhdGEgPSB2YWxpZGF0ZVVu
aWZvcm1NYXRyaXhQYXJhbWV0ZXJzKCJ1bmlmb3JtTWF0cml4MmZ2IiwgbG9jYXRpb24sIHRyYW5z
cG9zZSwgdiwgNCk7CisgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm47Ci0gICAgbV9jb250
ZXh0LT51bmlmb3JtTWF0cml4MmZ2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCB2Lmxlbmd0aCgpIC8g
NCwgdHJhbnNwb3NlLCB2LmRhdGEoKSk7CisgICAgbV9jb250ZXh0LT51bmlmb3JtTWF0cml4MmZ2
KGxvY2F0aW9uLT5sb2NhdGlvbigpLCB0cmFuc3Bvc2UsIGRhdGEudmFsdWUoKSk7CiB9CiAKIHZv
aWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybU1hdHJpeDNmdihjb25zdCBXZWJH
TFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgRmxvYXQz
Mkxpc3QmJiB2KQogewotICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlk
YXRlVW5pZm9ybU1hdHJpeFBhcmFtZXRlcnMoInVuaWZvcm1NYXRyaXgzZnYiLCBsb2NhdGlvbiwg
dHJhbnNwb3NlLCB2LCA5LCAwLCB2Lmxlbmd0aCgpKSkKKyAgICBpZiAoaXNDb250ZXh0TG9zdE9y
UGVuZGluZygpKQorICAgICAgICByZXR1cm47CisgICAgYXV0byBkYXRhID0gdmFsaWRhdGVVbmlm
b3JtTWF0cml4UGFyYW1ldGVycygidW5pZm9ybU1hdHJpeDNmdiIsIGxvY2F0aW9uLCB0cmFuc3Bv
c2UsIHYsIDkpOworICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuOwotICAgIG1fY29udGV4
dC0+dW5pZm9ybU1hdHJpeDNmdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgdi5sZW5ndGgoKSAvIDks
IHRyYW5zcG9zZSwgdi5kYXRhKCkpOworICAgIG1fY29udGV4dC0+dW5pZm9ybU1hdHJpeDNmdihs
b2NhdGlvbi0+bG9jYXRpb24oKSwgdHJhbnNwb3NlLCBkYXRhLnZhbHVlKCkpOwogfQogCiB2b2lk
IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm1NYXRyaXg0ZnYoY29uc3QgV2ViR0xV
bmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEZsb2F0MzJM
aXN0JiYgdikKIHsKLSAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0
ZVVuaWZvcm1NYXRyaXhQYXJhbWV0ZXJzKCJ1bmlmb3JtTWF0cml4NGZ2IiwgbG9jYXRpb24sIHRy
YW5zcG9zZSwgdiwgMTYsIDAsIHYubGVuZ3RoKCkpKQorICAgIGlmIChpc0NvbnRleHRMb3N0T3JQ
ZW5kaW5nKCkpCisgICAgICAgIHJldHVybjsKKyAgICBhdXRvIGRhdGEgPSB2YWxpZGF0ZVVuaWZv
cm1NYXRyaXhQYXJhbWV0ZXJzKCJ1bmlmb3JtTWF0cml4NGZ2IiwgbG9jYXRpb24sIHRyYW5zcG9z
ZSwgdiwgMTYpOworICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuOwotICAgIG1fY29udGV4
dC0+dW5pZm9ybU1hdHJpeDRmdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgdi5sZW5ndGgoKSAvIDE2
LCB0cmFuc3Bvc2UsIHYuZGF0YSgpKTsKKyAgICBtX2NvbnRleHQtPnVuaWZvcm1NYXRyaXg0ZnYo
bG9jYXRpb24tPmxvY2F0aW9uKCksIHRyYW5zcG9zZSwgZGF0YS52YWx1ZSgpKTsKIH0KIAogdm9p
ZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1c2VQcm9ncmFtKFdlYkdMUHJvZ3JhbSogcHJv
Z3JhbSkKQEAgLTcwNDcsNjIgKzcwNzIsNDggQEAgYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlOjp2YWxpZGF0ZUNhcGFiaWxpdHkoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBHQ0cKICAg
ICB9CiB9CiAKLWJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmFsaWRhdGVVbmlmb3Jt
UGFyYW1ldGVycyhjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIGNvbnN0IFdlYkdMVW5pZm9ybUxv
Y2F0aW9uKiBsb2NhdGlvbiwgY29uc3QgRmxvYXQzMkxpc3QmIHYsIEdDR0xzaXplaSByZXF1aXJl
ZE1pblNpemUsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQotewotICAg
IHJldHVybiB2YWxpZGF0ZVVuaWZvcm1NYXRyaXhQYXJhbWV0ZXJzKGZ1bmN0aW9uTmFtZSwgbG9j
YXRpb24sIGZhbHNlLCB2LmRhdGEoKSwgdi5sZW5ndGgoKSwgcmVxdWlyZWRNaW5TaXplLCBzcmNP
ZmZzZXQsIHNyY0xlbmd0aCk7Ci19Ci0KLWJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6
dmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycyhjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIGNvbnN0
IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgY29uc3QgSW50MzJMaXN0JiB2LCBHQ0dM
c2l6ZWkgcmVxdWlyZWRNaW5TaXplLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xl
bmd0aCkKLXsKLSAgICByZXR1cm4gdmFsaWRhdGVVbmlmb3JtTWF0cml4UGFyYW1ldGVycyhmdW5j
dGlvbk5hbWUsIGxvY2F0aW9uLCBmYWxzZSwgdi5kYXRhKCksIHYubGVuZ3RoKCksIHJlcXVpcmVk
TWluU2l6ZSwgc3JjT2Zmc2V0LCBzcmNMZW5ndGgpOwotfQogCi1ib29sIFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2U6OnZhbGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMoY29uc3QgY2hhciogZnVuY3Rp
b25OYW1lLCBjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIGNvbnN0IFVpbnQz
Mkxpc3QmIHYsIEdDR0xzaXplaSByZXF1aXJlZE1pblNpemUsIEdDR0x1aW50IHNyY09mZnNldCwg
R0NHTHVpbnQgc3JjTGVuZ3RoKQotewotICAgIHJldHVybiB2YWxpZGF0ZVVuaWZvcm1NYXRyaXhQ
YXJhbWV0ZXJzKGZ1bmN0aW9uTmFtZSwgbG9jYXRpb24sIGZhbHNlLCB2LmRhdGEoKSwgdi5sZW5n
dGgoKSwgcmVxdWlyZWRNaW5TaXplLCBzcmNPZmZzZXQsIHNyY0xlbmd0aCk7Ci19Ci0KLWJvb2wg
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycyhjb25z
dCBjaGFyKiBmdW5jdGlvbk5hbWUsIGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlv
biwgdm9pZCogdiwgR0NHTHNpemVpIHNpemUsIEdDR0xzaXplaSByZXF1aXJlZE1pblNpemUsIEdD
R0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQotewotICAgIHJldHVybiB2YWxp
ZGF0ZVVuaWZvcm1NYXRyaXhQYXJhbWV0ZXJzKGZ1bmN0aW9uTmFtZSwgbG9jYXRpb24sIGZhbHNl
LCB2LCBzaXplLCByZXF1aXJlZE1pblNpemUsIHNyY09mZnNldCwgc3JjTGVuZ3RoKTsKLX0KLQot
Ym9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZVVuaWZvcm1NYXRyaXhQYXJh
bWV0ZXJzKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRp
b24qIGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEZsb2F0MzJMaXN0JiB2
LCBHQ0dMc2l6ZWkgcmVxdWlyZWRNaW5TaXplLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50
IHNyY0xlbmd0aCkKLXsKLSAgICByZXR1cm4gdmFsaWRhdGVVbmlmb3JtTWF0cml4UGFyYW1ldGVy
cyhmdW5jdGlvbk5hbWUsIGxvY2F0aW9uLCB0cmFuc3Bvc2UsIHYuZGF0YSgpLCB2Lmxlbmd0aCgp
LCByZXF1aXJlZE1pblNpemUsIHNyY09mZnNldCwgc3JjTGVuZ3RoKTsKLX0KLQotYm9vbCBXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZVVuaWZvcm1NYXRyaXhQYXJhbWV0ZXJzKGNv
bnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0
aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IHZvaWQqIHYsIEdDR0xzaXplaSBzaXpl
LCBHQ0dMc2l6ZWkgcmVxdWlyZWRNaW5TaXplLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50
IHNyY0xlbmd0aCkKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFR5cGVkTGlzdFR5cGU+
CitPcHRpb25hbDxHQ0dMU3Bhbjxjb25zdCBUPj4gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6
dmFsaWRhdGVVbmlmb3JtTWF0cml4UGFyYW1ldGVycyhjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUs
IGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNw
b3NlLCBjb25zdCBUeXBlZExpc3Q8VHlwZWRMaXN0VHlwZSwgVD4mIHZhbHVlcywgR0NHTHNpemVp
IHJlcXVpcmVkTWluU2l6ZSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgp
CiB7CiAgICAgaWYgKCF2YWxpZGF0ZVVuaWZvcm1Mb2NhdGlvbihmdW5jdGlvbk5hbWUsIGxvY2F0
aW9uKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICghdikgeworICAgICAgICByZXR1
cm4geyB9OworICAgIGlmICghdmFsdWVzLmRhdGEoKSkgewogICAgICAgICBzeW50aGVzaXplR0xF
cnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9WQUxVRSwgZnVuY3Rpb25OYW1lLCAibm8g
YXJyYXkiKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4geyB9OwogICAg
IH0KICAgICBpZiAodHJhbnNwb3NlICYmICFpc1dlYkdMMigpKSB7CiAgICAgICAgIHN5bnRoZXNp
emVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX1ZBTFVFLCBmdW5jdGlvbk5hbWUs
ICJ0cmFuc3Bvc2Ugbm90IEZBTFNFIik7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
cmV0dXJuIHsgfTsKICAgICB9Ci0gICAgaWYgKHNyY09mZnNldCA+PSBzdGF0aWNfY2FzdDxHQ0dM
dWludD4oc2l6ZSkpIHsKKyAgICBpZiAoc3JjT2Zmc2V0ID49IHN0YXRpY19jYXN0PEdDR0x1aW50
Pih2YWx1ZXMubGVuZ3RoKCkpKSB7CiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNz
Q29udGV4dEdMOjpJTlZBTElEX1ZBTFVFLCBmdW5jdGlvbk5hbWUsICJpbnZhbGlkIHNyY09mZnNl
dCIpOwotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiB7IH07CiAgICAgfQot
ICAgIEdDR0xzaXplaSBhY3R1YWxTaXplID0gc2l6ZSAtIHNyY09mZnNldDsKKyAgICBHQ0dMc2l6
ZWkgYWN0dWFsU2l6ZSA9IHZhbHVlcy5sZW5ndGgoKSAtIHNyY09mZnNldDsKICAgICBpZiAoc3Jj
TGVuZ3RoID4gMCkgewogICAgICAgICBpZiAoc3JjTGVuZ3RoID4gc3RhdGljX2Nhc3Q8R0NHTHVp
bnQ+KGFjdHVhbFNpemUpKSB7CiAgICAgICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGlj
c0NvbnRleHRHTDo6SU5WQUxJRF9WQUxVRSwgZnVuY3Rpb25OYW1lLCAiaW52YWxpZCBzcmNPZmZz
ZXQgKyBzcmNMZW5ndGgiKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAg
IHJldHVybiB7IH07CiAgICAgICAgIH0KICAgICAgICAgYWN0dWFsU2l6ZSA9IHNyY0xlbmd0aDsK
ICAgICB9CiAgICAgaWYgKGFjdHVhbFNpemUgPCByZXF1aXJlZE1pblNpemUgfHwgKGFjdHVhbFNp
emUgJSByZXF1aXJlZE1pblNpemUpKSB7CiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBo
aWNzQ29udGV4dEdMOjpJTlZBTElEX1ZBTFVFLCBmdW5jdGlvbk5hbWUsICJpbnZhbGlkIHNpemUi
KTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4geyB9OwogICAgIH0KLSAg
ICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gbWFrZUdDR0xTcGFuKHZhbHVlcy5kYXRhKCkgKyBz
cmNPZmZzZXQsIGFjdHVhbFNpemUpOwogfQogCit0ZW1wbGF0ZQorT3B0aW9uYWw8R0NHTFNwYW48
Y29uc3QgR0NHTHVpbnQ+PiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZVVuaWZv
cm1NYXRyaXhQYXJhbWV0ZXJzPEdDR0x1aW50LCBVaW50MzJBcnJheT4oY29uc3QgY2hhciogZnVu
Y3Rpb25OYW1lLCBjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiosIEdDR0xib29sZWFuIHRyYW5z
cG9zZSwgY29uc3QgVHlwZWRMaXN0PFVpbnQzMkFycmF5LCB1aW50MzJfdD4mIHZhbHVlcywgR0NH
THNpemVpIHJlcXVpcmVkTWluU2l6ZSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNM
ZW5ndGgpOworCit0ZW1wbGF0ZQorT3B0aW9uYWw8R0NHTFNwYW48Y29uc3QgR0NHTGludD4+IFdl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlVW5pZm9ybU1hdHJpeFBhcmFtZXRlcnM8
R0NHTGludCwgSW50MzJBcnJheT4oY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBjb25zdCBXZWJH
TFVuaWZvcm1Mb2NhdGlvbiosIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgVHlwZWRMaXN0
PEludDMyQXJyYXksIGludDMyX3Q+JiB2YWx1ZXMsIEdDR0xzaXplaSByZXF1aXJlZE1pblNpemUs
IEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKTsKKwordGVtcGxhdGUKK09w
dGlvbmFsPEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4+IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U6OnZhbGlkYXRlVW5pZm9ybU1hdHJpeFBhcmFtZXRlcnM8R0NHTGZsb2F0LCBGbG9hdDMyQXJy
YXk+KGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24q
LCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IFR5cGVkTGlzdDxGbG9hdDMyQXJyYXksIGZs
b2F0PiYgdmFsdWVzLCBHQ0dMc2l6ZWkgcmVxdWlyZWRNaW5TaXplLCBHQ0dMdWludCBzcmNPZmZz
ZXQsIEdDR0x1aW50IHNyY0xlbmd0aCk7CisKIFdlYkdMQnVmZmVyKiBXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlOjp2YWxpZGF0ZUJ1ZmZlckRhdGFQYXJhbWV0ZXJzKGNvbnN0IGNoYXIqIGZ1bmN0
aW9uTmFtZSwgR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSB1c2FnZSkKIHsKICAgICBXZWJHTEJ1
ZmZlciogYnVmZmVyID0gdmFsaWRhdGVCdWZmZXJEYXRhVGFyZ2V0KGZ1bmN0aW9uTmFtZSwgdGFy
Z2V0KTsKQEAgLTcyNDYsMTYgKzcyNTcsMTYgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlOjp2ZXJ0ZXhBdHRyaWJmdkltcGwoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBHQ0cKICAg
ICB7CiAgICAgICAgIHN3aXRjaCAoZXhwZWN0ZWRTaXplKSB7CiAgICAgICAgIGNhc2UgMToKLSAg
ICAgICAgICAgIG1fY29udGV4dC0+dmVydGV4QXR0cmliMWZ2KGluZGV4LCBkYXRhKTsKKyAgICAg
ICAgICAgIG1fY29udGV4dC0+dmVydGV4QXR0cmliMWZ2KGluZGV4LCBtYWtlR0NHTFNwYW48MT4o
ZGF0YSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgMjoKLSAgICAgICAgICAg
IG1fY29udGV4dC0+dmVydGV4QXR0cmliMmZ2KGluZGV4LCBkYXRhKTsKKyAgICAgICAgICAgIG1f
Y29udGV4dC0+dmVydGV4QXR0cmliMmZ2KGluZGV4LCBtYWtlR0NHTFNwYW48Mj4oZGF0YSkpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgMzoKLSAgICAgICAgICAgIG1fY29udGV4
dC0+dmVydGV4QXR0cmliM2Z2KGluZGV4LCBkYXRhKTsKKyAgICAgICAgICAgIG1fY29udGV4dC0+
dmVydGV4QXR0cmliM2Z2KGluZGV4LCBtYWtlR0NHTFNwYW48Mz4oZGF0YSkpOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIGNhc2UgNDoKLSAgICAgICAgICAgIG1fY29udGV4dC0+dmVydGV4
QXR0cmliNGZ2KGluZGV4LCBkYXRhKTsKKyAgICAgICAgICAgIG1fY29udGV4dC0+dmVydGV4QXR0
cmliNGZ2KGluZGV4LCBtYWtlR0NHTFNwYW48ND4oZGF0YSkpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KICAgICB9CkBAIC03MzMwLDcgKzczNDEsNyBAQCBPcHRpb25hbDxib29sPiBX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpzaW11bGF0ZVZlcnRleEF0dHJpYjAoR0NHTHVpbnQg
bnVtVmVydAogCiAgICAgaWYgKGJ1ZmZlckRhdGFTaXplID4gbV92ZXJ0ZXhBdHRyaWIwQnVmZmVy
U2l6ZSkgewogICAgICAgICBtX2NvbnRleHQtPm1vdmVFcnJvcnNUb1N5bnRoZXRpY0Vycm9yTGlz
dCgpOwotICAgICAgICBtX2NvbnRleHQtPmJ1ZmZlckRhdGEoR3JhcGhpY3NDb250ZXh0R0w6OkFS
UkFZX0JVRkZFUiwgYnVmZmVyRGF0YVNpemUsIDAsIEdyYXBoaWNzQ29udGV4dEdMOjpEWU5BTUlD
X0RSQVcpOworICAgICAgICBtX2NvbnRleHQtPmJ1ZmZlckRhdGEoR3JhcGhpY3NDb250ZXh0R0w6
OkFSUkFZX0JVRkZFUiwgYnVmZmVyRGF0YVNpemUsIEdyYXBoaWNzQ29udGV4dEdMOjpEWU5BTUlD
X0RSQVcpOwogICAgICAgICBpZiAobV9jb250ZXh0LT5nZXRFcnJvcigpICE9IEdyYXBoaWNzQ29u
dGV4dEdMOjpOT19FUlJPUikgewogICAgICAgICAgICAgLy8gV2Ugd2VyZSB1bmFibGUgdG8gY3Jl
YXRlIGEgYnVmZmVyLgogICAgICAgICAgICAgbV92ZXJ0ZXhBdHRyaWIwVXNlZEJlZm9yZSA9IGZh
bHNlOwpAQCAtNzM2NSw3ICs3Mzc2LDcgQEAgT3B0aW9uYWw8Ym9vbD4gV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6c2ltdWxhdGVWZXJ0ZXhBdHRyaWIwKEdDR0x1aW50IG51bVZlcnQKICAgICAg
ICAgbV92ZXJ0ZXhBdHRyaWIwQnVmZmVyVmFsdWVbMl0gPSBhdHRyaWJWYWx1ZS5mVmFsdWVbMl07
CiAgICAgICAgIG1fdmVydGV4QXR0cmliMEJ1ZmZlclZhbHVlWzNdID0gYXR0cmliVmFsdWUuZlZh
bHVlWzNdOwogICAgICAgICBtX2ZvcmNlQXR0cmliMEJ1ZmZlclJlZmlsbCA9IGZhbHNlOwotICAg
ICAgICBtX2NvbnRleHQtPmJ1ZmZlclN1YkRhdGEoR3JhcGhpY3NDb250ZXh0R0w6OkFSUkFZX0JV
RkZFUiwgMCwgYnVmZmVyRGF0YVNpemUsIGJ1ZmZlckRhdGEuZ2V0KCkpOworICAgICAgICBtX2Nv
bnRleHQtPmJ1ZmZlclN1YkRhdGEoR3JhcGhpY3NDb250ZXh0R0w6OkFSUkFZX0JVRkZFUiwgMCwg
bWFrZUdDR0xTcGFuKGJ1ZmZlckRhdGEuZ2V0KCksIGJ1ZmZlckRhdGFTaXplKSk7CiAgICAgfQog
ICAgIG1fY29udGV4dC0+dmVydGV4QXR0cmliUG9pbnRlcigwLCA0LCBHcmFwaGljc0NvbnRleHRH
TDo6RkxPQVQsIDAsIDAsIDApOwogICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oCmluZGV4IGE3
MWQwMzZhYTBkZWE1MmI0NTc5MDlmYmZmZGMzYWRmODBmNTEwY2MuLjAwNzgyOGY3ZmQ1NzNlYTUw
MDU5NDBlZDU2ZTQzOTc1MTU3NDNlNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmgKQEAgLTEwMDUsMTIgKzEwMDUs
MTMgQEAgcHJvdGVjdGVkOgogCiAgICAgLy8gSGVscGVyIGZ1bmN0aW9uIHRvIHZhbGlkYXRlIGlu
cHV0IHBhcmFtZXRlcnMgZm9yIHVuaWZvcm0gZnVuY3Rpb25zLgogICAgIGJvb2wgdmFsaWRhdGVV
bmlmb3JtTG9jYXRpb24oY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBjb25zdCBXZWJHTFVuaWZv
cm1Mb2NhdGlvbiopOwotICAgIGJvb2wgdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycyhjb25zdCBj
aGFyKiBmdW5jdGlvbk5hbWUsIGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiwgY29uc3QgRmxv
YXQzMkxpc3QmLCBHQ0dMc2l6ZWkgcmVxdWlyZWRNaW5TaXplLCBHQ0dMdWludCBzcmNPZmZzZXQs
IEdDR0x1aW50IHNyY0xlbmd0aCk7Ci0gICAgYm9vbCB2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJz
KGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qLCBj
b25zdCBJbnQzMkxpc3QmLCBHQ0dMc2l6ZWkgcmVxdWlyZWRNaW5TaXplLCBHQ0dMdWludCBzcmNP
ZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCk7Ci0gICAgYm9vbCB2YWxpZGF0ZVVuaWZvcm1QYXJh
bWV0ZXJzKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRp
b24qLCBjb25zdCBVaW50MzJMaXN0JiwgR0NHTHNpemVpIHJlcXVpcmVkTWluU2l6ZSwgR0NHTHVp
bnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpOwotICAgIGJvb2wgdmFsaWRhdGVVbmlm
b3JtUGFyYW1ldGVycyhjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIGNvbnN0IFdlYkdMVW5pZm9y
bUxvY2F0aW9uKiwgdm9pZCosIEdDR0xzaXplaSwgR0NHTHNpemVpIHJlcXVpcmVkTWluU2l6ZSwg
R0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpOwotICAgIGJvb2wgdmFsaWRh
dGVVbmlmb3JtTWF0cml4UGFyYW1ldGVycyhjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIGNvbnN0
IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBGbG9h
dDMyTGlzdCYsIEdDR0xzaXplaSByZXF1aXJlZE1pblNpemUsIEdDR0x1aW50IHNyY09mZnNldCwg
R0NHTHVpbnQgc3JjTGVuZ3RoKTsKLSAgICBib29sIHZhbGlkYXRlVW5pZm9ybU1hdHJpeFBhcmFt
ZXRlcnMoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlv
biosIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3Qgdm9pZCosIEdDR0xzaXplaSwgR0NHTHNp
emVpIHJlcXVpcmVkTWluU2l6ZSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5n
dGgpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFR5cGVkTGlzdFR5cGU+Cisg
ICAgT3B0aW9uYWw8R0NHTFNwYW48Y29uc3QgVD4+IHZhbGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMo
Y29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9j
YXRpb24sIGNvbnN0IFR5cGVkTGlzdDxUeXBlZExpc3RUeXBlLCBUPiYgdmFsdWVzLCBHQ0dMc2l6
ZWkgcmVxdWlyZWRNaW5TaXplLCBHQ0dMdWludCBzcmNPZmZzZXQgPSAwLCBHQ0dMdWludCBzcmNM
ZW5ndGggPSAwKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHZhbGlkYXRlVW5pZm9ybU1hdHJpeFBh
cmFtZXRlcnMoZnVuY3Rpb25OYW1lLCBsb2NhdGlvbiwgZmFsc2UsIHZhbHVlcywgcmVxdWlyZWRN
aW5TaXplLCBzcmNPZmZzZXQsIHNyY0xlbmd0aCk7CisgICAgfQorICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFQsIHR5cGVuYW1lIFR5cGVkTGlzdFR5cGU+CisgICAgT3B0aW9uYWw8R0NHTFNwYW48Y29u
c3QgVD4+IHZhbGlkYXRlVW5pZm9ybU1hdHJpeFBhcmFtZXRlcnMoY29uc3QgY2hhciogZnVuY3Rp
b25OYW1lLCBjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiosIEdDR0xib29sZWFuIHRyYW5zcG9z
ZSwgY29uc3QgVHlwZWRMaXN0PFR5cGVkTGlzdFR5cGUsIFQ+JiwgR0NHTHNpemVpIHJlcXVpcmVk
TWluU2l6ZSwgR0NHTHVpbnQgc3JjT2Zmc2V0ID0gMCwgR0NHTHVpbnQgc3JjTGVuZ3RoID0gMCk7
CiAKICAgICAvLyBIZWxwZXIgZnVuY3Rpb24gdG8gdmFsaWRhdGUgcGFyYW1ldGVycyBmb3IgYnVm
ZmVyRGF0YS4KICAgICAvLyBSZXR1cm4gdGhlIGN1cnJlbnQgYm91bmQgYnVmZmVyIHRvIHRhcmdl
dCwgb3IgMCBpZiBwYXJhbWV0ZXJzIGFyZSBpbnZhbGlkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRXh0ZW5zaW9uc0dMLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNpb25zR0wuaAppbmRleCBiYTg2NWIzMzA4ZTZjOTQ1ODIy
MTIyMzc3OTZkNmZkNTc3NDg0N2Y4Li5kMTdiYWRiMWUzMWQ2ZDU2NDBiODcyOTZjZTU5ZDI4MzMy
ODM1ZmIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRl
bnNpb25zR0wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNp
b25zR0wuaApAQCAtMjk4LDcgKzI5OCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcG9w
R3JvdXBNYXJrZXJFWFQodm9pZCkgPSAwOwogCiAgICAgLy8gR0xfQVJCX2RyYXdfYnVmZmVycyAv
IEdMX0VYVF9kcmF3X2J1ZmZlcnMKLSAgICB2aXJ0dWFsIHZvaWQgZHJhd0J1ZmZlcnNFWFQoR0NH
THNpemVpIG4sIGNvbnN0IEdDR0xlbnVtKiBidWZzKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRy
YXdCdWZmZXJzRVhUKEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVtPiBidWZzKSA9IDA7CiAKICAgICAv
LyBHTF9BTkdMRV9pbnN0YW5jZWRfYXJyYXlzCiAgICAgdmlydHVhbCB2b2lkIGRyYXdBcnJheXNJ
bnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHNpemVpIGNvdW50LCBH
Q0dMc2l6ZWkgcHJpbWNvdW50KSA9IDA7CkBAIC0zMDcsMTcgKzMwNyw5IEBAIHB1YmxpYzoKIAog
ICAgIC8vIEdMX0FOR0xFX3JvYnVzdF9jbGllbnRfbWVtb3J5CiAgICAgdmlydHVhbCB2b2lkIHJl
YWRQaXhlbHNSb2J1c3RBTkdMRShHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRo
LCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHNpemVpKiBjb2x1bW5zLCBHQ0dM
c2l6ZWkqIHJvd3MsIEdDR0x2b2lkKiBwaXhlbHMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdGV4
SW1hZ2UyRFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGlu
dCBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dM
aW50IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgY29uc3QgR0NHTHZvaWQqIHBpeGVscykgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB0ZXhQ
YXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdD
R0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMZmxvYXQqIHBhcmFtcykgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCB0ZXhQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVu
dW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50KiBwYXJhbXMpID0gMDsK
LSAgICB2aXJ0dWFsIHZvaWQgdGV4U3ViSW1hZ2UyRFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xz
aXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0
eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTHZvaWQqIHBpeGVscykgPSAwOwotICAg
IHZpcnR1YWwgdm9pZCBjb21wcmVzc2VkVGV4SW1hZ2UyRFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRh
cmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3
aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xzaXplaSBpbWFnZVNp
emUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMdm9pZCogZGF0YSkgPSAwOwotICAgIHZp
cnR1YWwgdm9pZCBjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRh
cmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdD
R0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMc2l6
ZWkgaW1hZ2VTaXplLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTHZvaWQqIGRhdGEpID0g
MDsKLSAgICB2aXJ0dWFsIHZvaWQgY29tcHJlc3NlZFRleEltYWdlM0RSb2J1c3RBTkdMRShHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dM
c2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGludCBi
b3JkZXIsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dM
dm9pZCogZGF0YSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBjb21wcmVzc2VkVGV4U3ViSW1hZ2Uz
RFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zm
c2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xpbnQgem9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBH
Q0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTHNp
emVpIGltYWdlU2l6ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0x2b2lkKiBkYXRhKSA9
IDA7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgdGV4SW1hZ2UzRFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRh
cmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdp
ZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xpbnQgYm9yZGVyLCBH
Q0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBH
Q0dMdm9pZCogcGl4ZWxzKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHRleFN1YkltYWdlM0RSb2J1
c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwg
R0NHTGludCB5b2Zmc2V0LCBHQ0dMaW50IHpvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNp
emVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5
cGUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMdm9pZCogcGl4ZWxzKSA9IDA7CisKICAg
ICB2aXJ0dWFsIHZvaWQgZ2V0UXVlcnlpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NH
TGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGlu
dCogcGFyYW1zKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGdldFF1ZXJ5T2JqZWN0dWl2Um9idXN0
QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NH
THNpemVpKiBsZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
Z2V0QnVmZmVyUG9pbnRlcnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBu
YW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x2b2lkKiogcGFy
YW1zKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0NvbnRleHRHTC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NDb250ZXh0R0wuaAppbmRleCAwYTcxNTQwY2U4MDIwZmQ5ZjU4MTY4NjAzZjY3NjliOTQ0
NTIyNDE1Li5jNThiZThhOTdkMjM3ZGFiMmM2MGQ4NmIxOTM4NGFlOTJmZmJlYjNmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdM
LmgKQEAgLTEwNjMsNDkgKzEwNjMsNTUgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB0ZXhQ
YXJhbWV0ZXJpKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQgcGFyYW0p
ID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtMWYoR0NHTGludCBsb2NhdGlvbiwgR0NH
TGZsb2F0IHgpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybTFmdihHQ0dMaW50IGxvY2F0
aW9uLCBHQ0dMc2l6ZWksIGNvbnN0IEdDR0xmbG9hdCogdikgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCB1bmlmb3JtMWZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4g
dikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtMWkoR0NHTGludCBsb2NhdGlvbiwgR0NH
TGludCB4KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHVuaWZvcm0xaXYoR0NHTGludCBsb2NhdGlv
biwgR0NHTHNpemVpLCBjb25zdCBHQ0dMaW50KiB2KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVu
aWZvcm0xaXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gdikgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtMmYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGZsb2F0
IHgsIEdDR0xmbG9hdCB5KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHVuaWZvcm0yZnYoR0NHTGlu
dCBsb2NhdGlvbiwgR0NHTHNpemVpLCBjb25zdCBHQ0dMZmxvYXQqIHYpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgdW5pZm9ybTJmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dM
ZmxvYXQ+IHYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybTJpKEdDR0xpbnQgbG9jYXRp
b24sIEdDR0xpbnQgeCwgR0NHTGludCB5KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHVuaWZvcm0y
aXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpLCBjb25zdCBHQ0dMaW50KiB2KSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIHVuaWZvcm0yaXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29u
c3QgR0NHTGludD4gdikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtM2YoR0NHTGludCBs
b2NhdGlvbiwgR0NHTGZsb2F0IHgsIEdDR0xmbG9hdCB5LCBHQ0dMZmxvYXQgeikgPSAwOwotICAg
IHZpcnR1YWwgdm9pZCB1bmlmb3JtM2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSwgY29u
c3QgR0NHTGZsb2F0KiB2KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVuaWZvcm0zZnYoR0NHTGlu
dCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiB2KSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIHVuaWZvcm0zaShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwg
R0NHTGludCB6KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHVuaWZvcm0zaXYoR0NHTGludCBsb2Nh
dGlvbiwgR0NHTHNpemVpLCBjb25zdCBHQ0dMaW50KiB2KSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IHVuaWZvcm0zaXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gdikg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtNGYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGZs
b2F0IHgsIEdDR0xmbG9hdCB5LCBHQ0dMZmxvYXQgeiwgR0NHTGZsb2F0IHcpID0gMDsKLSAgICB2
aXJ0dWFsIHZvaWQgdW5pZm9ybTRmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWksIGNvbnN0
IEdDR0xmbG9hdCogdikgPSAwOworICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtNGZ2KEdDR0xpbnQg
bG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gdikgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCB1bmlmb3JtNGkoR0NHTGludCBsb2NhdGlvbiwgR0NHTGludCB4LCBHQ0dMaW50IHksIEdD
R0xpbnQgeiwgR0NHTGludCB3KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHVuaWZvcm00aXYoR0NH
TGludCBsb2NhdGlvbiwgR0NHTHNpemVpLCBjb25zdCBHQ0dMaW50KiB2KSA9IDA7Ci0gICAgdmly
dHVhbCB2b2lkIHVuaWZvcm1NYXRyaXgyZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpLCBH
Q0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogdmFsdWUpID0gMDsKLSAgICB2
aXJ0dWFsIHZvaWQgdW5pZm9ybU1hdHJpeDNmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWks
IEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiB2YWx1ZSkgPSAwOwotICAg
IHZpcnR1YWwgdm9pZCB1bmlmb3JtTWF0cml4NGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXpl
aSwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHQ0dMZmxvYXQqIHZhbHVlKSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIHVuaWZvcm00aXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29u
c3QgR0NHTGludD4gdikgPSAwOworICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtTWF0cml4MmZ2KEdD
R0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NH
TGZsb2F0PiB2YWx1ZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtTWF0cml4M2Z2KEdD
R0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NH
TGZsb2F0PiB2YWx1ZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtTWF0cml4NGZ2KEdD
R0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NH
TGZsb2F0PiB2YWx1ZSkgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIHVzZVByb2dyYW0oUGxhdGZv
cm1HTE9iamVjdCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB2YWxpZGF0ZVByb2dyYW0oUGxhdGZv
cm1HTE9iamVjdCkgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIHZlcnRleEF0dHJpYjFmKEdDR0x1
aW50IGluZGV4LCBHQ0dMZmxvYXQgeCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB2ZXJ0ZXhBdHRy
aWIxZnYoR0NHTHVpbnQgaW5kZXgsIGNvbnN0IEdDR0xmbG9hdCogdmFsdWVzKSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIHZlcnRleEF0dHJpYjFmdihHQ0dMdWludCBpbmRleCwgR0NHTFNwYW48Y29u
c3QgR0NHTGZsb2F0LCAxPiB2YWx1ZXMpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdmVydGV4QXR0
cmliMmYoR0NHTHVpbnQgaW5kZXgsIEdDR0xmbG9hdCB4LCBHQ0dMZmxvYXQgeSkgPSAwOwotICAg
IHZpcnR1YWwgdm9pZCB2ZXJ0ZXhBdHRyaWIyZnYoR0NHTHVpbnQgaW5kZXgsIGNvbnN0IEdDR0xm
bG9hdCogdmFsdWVzKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHZlcnRleEF0dHJpYjJmdihHQ0dM
dWludCBpbmRleCwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0LCAyPiB2YWx1ZXMpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgdmVydGV4QXR0cmliM2YoR0NHTHVpbnQgaW5kZXgsIEdDR0xmbG9hdCB4
LCBHQ0dMZmxvYXQgeSwgR0NHTGZsb2F0IHopID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdmVydGV4
QXR0cmliM2Z2KEdDR0x1aW50IGluZGV4LCBjb25zdCBHQ0dMZmxvYXQqIHZhbHVlcykgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCB2ZXJ0ZXhBdHRyaWIzZnYoR0NHTHVpbnQgaW5kZXgsIEdDR0xTcGFu
PGNvbnN0IEdDR0xmbG9hdCwgMz4gdmFsdWVzKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHZlcnRl
eEF0dHJpYjRmKEdDR0x1aW50IGluZGV4LCBHQ0dMZmxvYXQgeCwgR0NHTGZsb2F0IHksIEdDR0xm
bG9hdCB6LCBHQ0dMZmxvYXQgdykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB2ZXJ0ZXhBdHRyaWI0
ZnYoR0NHTHVpbnQgaW5kZXgsIGNvbnN0IEdDR0xmbG9hdCogdmFsdWVzKSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIHZlcnRleEF0dHJpYjRmdihHQ0dMdWludCBpbmRleCwgR0NHTFNwYW48Y29uc3Qg
R0NHTGZsb2F0LCA0PiB2YWx1ZXMpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCB2ZXJ0ZXhBdHRy
aWJQb2ludGVyKEdDR0x1aW50IGluZGV4LCBHQ0dMaW50IHNpemUsIEdDR0xlbnVtIHR5cGUsIEdD
R0xib29sZWFuIG5vcm1hbGl6ZWQsIEdDR0xzaXplaSBzdHJpZGUsIEdDR0xpbnRwdHIgb2Zmc2V0
KSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgdmlld3BvcnQoR0NHTGludCB4LCBHQ0dMaW50IHks
IEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkgPSAwOwogCiAgICAgdmlydHVhbCB2
b2lkIGJ1ZmZlckRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWlwdHIsIEdDR0xlbnVtIHVz
YWdlKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGJ1ZmZlckRhdGEoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMc2l6ZWlwdHIsIGNvbnN0IEdDR0x2b2lkKiBkYXRhLCBHQ0dMZW51bSB1c2FnZSkgPSAwOwot
ICAgIHZpcnR1YWwgdm9pZCBidWZmZXJTdWJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludHB0
ciBvZmZzZXQsIEdDR0xzaXplaXB0ciwgY29uc3QgR0NHTHZvaWQqIGRhdGEpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgYnVmZmVyRGF0YShHQ0dMZW51bSB0YXJnZXQsIEdDR0xTcGFuPGNvbnN0IEdD
R0x2b2lkPiBkYXRhLCBHQ0dMZW51bSB1c2FnZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBidWZm
ZXJTdWJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludHB0ciBvZmZzZXQsIEdDR0xTcGFuPGNv
bnN0IEdDR0x2b2lkPiBkYXRhKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgcmVhZFBpeGVscyhH
Q0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBH
Q0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0x2b2lkKiBkYXRhKSA9IDA7CiAKLSAg
ICB2aXJ0dWFsIGJvb2wgdGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWws
IEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWln
aHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIGNvbnN0
IEdDR0x2b2lkKiBwaXhlbHMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdGV4U3ViSW1hZ2UyRChH
Q0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5
b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1h
dCwgR0NHTGVudW0gdHlwZSwgY29uc3QgR0NHTHZvaWQqIHBpeGVscykgPSAwOworICAgIHZpcnR1
YWwgdm9pZCB0ZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVu
dW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NH
TGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgIEdDR0xTcGFuPGNv
bnN0IEdDR0x2b2lkPiBwaXhlbHMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdGV4SW1hZ2UyRChH
Q0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBH
Q0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51
bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIHRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBH
Q0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6
ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPGNvbnN0
IEdDR0x2b2lkPiBwaXhlbHMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdGV4U3ViSW1hZ2UyRChH
Q0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5
b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1h
dCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgY29tcHJlc3NlZFRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBH
Q0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0
LCBHQ0dMaW50IGJvcmRlciwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTFNwYW48Y29uc3QgR0NH
THZvaWQ+IGRhdGEpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY29tcHJlc3NlZFRleEltYWdlMkQo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwg
R0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTHNp
emVpIGltYWdlU2l6ZSwgR0NHTGludHB0ciBvZmZzZXQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
Y29tcHJlc3NlZFRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBH
Q0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6
ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xTcGFu
PGNvbnN0IEdDR0x2b2lkPiBkYXRhKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNvbXByZXNzZWRU
ZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zm
c2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwg
R0NHTGVudW0gZm9ybWF0LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMaW50cHRyIG9mZnNldCkg
PSAwOwogCiAgICAgdmlydHVhbCB2b2lkIGRyYXdBcnJheXNJbnN0YW5jZWQoR0NHTGVudW0gbW9k
ZSwgR0NHTGludCBmaXJzdCwgR0NHTHNpemVpIGNvdW50LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIGRyYXdFbGVtZW50c0luc3RhbmNlZChHQ0dMZW51bSBtb2Rl
LCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0LCBHQ0dM
c2l6ZWkgcHJpbWNvdW50KSA9IDA7CkBAIC0xMTI1LDggKzExMzEsOCBAQCBwdWJsaWM6CiAKICAg
ICB2aXJ0dWFsIHZvaWQgYmxpdEZyYW1lYnVmZmVyKEdDR0xpbnQgc3JjWDAsIEdDR0xpbnQgc3Jj
WTAsIEdDR0xpbnQgc3JjWDEsIEdDR0xpbnQgc3JjWTEsIEdDR0xpbnQgZHN0WDAsIEdDR0xpbnQg
ZHN0WTAsIEdDR0xpbnQgZHN0WDEsIEdDR0xpbnQgZHN0WTEsIEdDR0xiaXRmaWVsZCBtYXNrLCBH
Q0dMZW51bSBmaWx0ZXIpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZnJhbWVidWZmZXJUZXh0dXJl
TGF5ZXIoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50LCBQbGF0Zm9ybUdMT2Jq
ZWN0IHRleHR1cmUsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgbGF5ZXIpID0gMDsKLSAgICB2aXJ0
dWFsIHZvaWQgaW52YWxpZGF0ZUZyYW1lYnVmZmVyKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVp
IG51bUF0dGFjaG1lbnRzLCBjb25zdCBHQ0dMZW51bSogYXR0YWNobWVudHMpID0gMDsKLSAgICB2
aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZVN1YkZyYW1lYnVmZmVyKEdDR0xlbnVtIHRhcmdldCwgR0NH
THNpemVpIG51bUF0dGFjaG1lbnRzLCBjb25zdCBHQ0dMZW51bSogYXR0YWNobWVudHMsIEdDR0xp
bnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZUZyYW1lYnVmZmVyKEdDR0xlbnVtIHRhcmdldCwg
R0NHTFNwYW48Y29uc3QgR0NHTGVudW0+IGF0dGFjaG1lbnRzKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIGludmFsaWRhdGVTdWJGcmFtZWJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQsIEdDR0xTcGFuPGNv
bnN0IEdDR0xlbnVtPiBhdHRhY2htZW50cywgR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXpl
aSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCByZWFkQnVm
ZmVyKEdDR0xlbnVtIHNyYykgPSAwOwogCiAgICAgLy8gZ2V0SW50ZXJuYWxGb3JtYXRQYXJhbWV0
ZXIKQEAgLTExMzYsMTEgKzExNDIsMTUgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB0ZXhT
dG9yYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgbGV2ZWxzLCBHQ0dMZW51bSBpbnRl
cm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIHRleFN0b3JhZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaSBsZXZl
bHMsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBo
ZWlnaHQsIEdDR0xzaXplaSBkZXB0aCkgPSAwOwogCi0gICAgLy8gdGV4e1N1Yn1JbWFnZTNEIGFy
ZSBzdXBwb3J0ZWQgb25seSB2aWEgQU5HTEVfcm9idXN0X2NsaWVudF9tZW1vcnkuCi0KKyAgICB2
aXJ0dWFsIHZvaWQgdGV4SW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdD
R0xpbnQgaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwg
R0NHTHNpemVpIGRlcHRoLCBHQ0dMaW50IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51
bSB0eXBlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gcGl4ZWxzKSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIHRleEltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50
IGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xz
aXplaSBkZXB0aCwgR0NHTGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlw
ZSwgR0NHTGludHB0ciBvZmZzZXQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdGV4U3ViSW1hZ2Uz
RChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGlu
dCB5b2Zmc2V0LCBHQ0dMaW50IHpvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhl
aWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdD
R0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBwaXhlbHMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdGV4
U3ViSW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNl
dCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMaW50IHpvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NH
THNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVt
IHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGNvcHlUZXhT
dWJJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0
LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xpbnQgem9mZnNldCwgR0NHTGludCB4LCBHQ0dMaW50IHks
IEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkgPSAwOwotCi0gICAgLy8gY29tcHJl
c3NlZFRleHtTdWJ9SW1hZ2UzRCBhcmUgc3VwcG9ydGVkIG9ubHkgdmlhIEFOR0xFX3JvYnVzdF9j
bGllbnRfbWVtb3J5LgorICAgIHZpcnR1YWwgdm9pZCBjb21wcmVzc2VkVGV4SW1hZ2UzRChHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dM
c2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGludCBi
b3JkZXIsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRh
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNvbXByZXNzZWRUZXhJbWFnZTNEKEdDR0xlbnVtIHRh
cmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3
aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMaW50IGJvcmRlciwg
R0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTGludHB0ciBvZmZzZXQpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgY29tcHJlc3NlZFRleFN1YkltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxl
dmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTGludCB6b2Zmc2V0LCBH
Q0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGVu
dW0gZm9ybWF0LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4g
ZGF0YSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjb21wcmVzc2VkVGV4U3ViSW1hZ2UzRChHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zm
c2V0LCBHQ0dMaW50IHpvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwg
R0NHTHNpemVpIGRlcHRoLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdD
R0xpbnRwdHIgb2Zmc2V0KSA9IDA7CiAKICAgICB2aXJ0dWFsIEdDR0xpbnQgZ2V0RnJhZ0RhdGFM
b2NhdGlvbihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFN0cmluZyYgbmFtZSkgPSAw
OwogCkBAIC0xMTQ4LDI4ICsxMTU4LDI4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgdW5p
Zm9ybTJ1aShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMdWludCB2MCwgR0NHTHVpbnQgdjEpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybTN1aShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMdWludCB2
MCwgR0NHTHVpbnQgdjEsIEdDR0x1aW50IHYyKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHVuaWZv
cm00dWkoR0NHTGludCBsb2NhdGlvbiwgR0NHTHVpbnQgdjAsIEdDR0x1aW50IHYxLCBHQ0dMdWlu
dCB2MiwgR0NHTHVpbnQgdjMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybTF1aXYoR0NH
TGludCBsb2NhdGlvbiwgY29uc3QgR0NHTHVpbnQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwg
R0NHTHVpbnQgc3JjTGVuZ3RoKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHVuaWZvcm0ydWl2KEdD
R0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0x1aW50KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQs
IEdDR0x1aW50IHNyY0xlbmd0aCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtM3VpdihH
Q0dMaW50IGxvY2F0aW9uLCBjb25zdCBHQ0dMdWludCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0
LCBHQ0dMdWludCBzcmNMZW5ndGgpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybTR1aXYo
R0NHTGludCBsb2NhdGlvbiwgY29uc3QgR0NHTHVpbnQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNl
dCwgR0NHTHVpbnQgc3JjTGVuZ3RoKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHVuaWZvcm1NYXRy
aXgyeDNmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdD
R0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpID0g
MDsKLSAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybU1hdHJpeDN4MmZ2KEdDR0xpbnQgbG9jYXRpb24s
IEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBz
cmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB1bmlm
b3JtTWF0cml4Mng0ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBj
b25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVu
Z3RoKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHVuaWZvcm1NYXRyaXg0eDJmdihHQ0dMaW50IGxv
Y2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NH
THVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpID0gMDsKLSAgICB2aXJ0dWFsIHZv
aWQgdW5pZm9ybU1hdHJpeDN4NGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5z
cG9zZSwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50
IHNyY0xlbmd0aCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtTWF0cml4NHgzZnYoR0NH
TGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHQ0dMZmxvYXQqIGRh
dGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIHVuaWZvcm0xdWl2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdD
R0x1aW50PiBkYXRhKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVuaWZvcm0ydWl2KEdDR0xpbnQg
bG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0x1aW50PiBkYXRhKSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIHVuaWZvcm0zdWl2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0x1
aW50PiBkYXRhKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVuaWZvcm00dWl2KEdDR0xpbnQgbG9j
YXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0x1aW50PiBkYXRhKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIHVuaWZvcm1NYXRyaXgyeDNmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFu
c3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gZGF0YSkgPSAwOworICAgIHZpcnR1YWwg
dm9pZCB1bmlmb3JtTWF0cml4M3gyZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJh
bnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgdW5pZm9ybU1hdHJpeDJ4NGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRy
YW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiBkYXRhKSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIHVuaWZvcm1NYXRyaXg0eDJmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0
cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gZGF0YSkgPSAwOworICAgIHZpcnR1
YWwgdm9pZCB1bmlmb3JtTWF0cml4M3g0ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4g
dHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgdW5pZm9ybU1hdHJpeDR4M2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFu
IHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiBkYXRhKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIHZlcnRleEF0dHJpYkk0aShHQ0dMdWludCBpbmRleCwgR0NHTGludCB4LCBHQ0dM
aW50IHksIEdDR0xpbnQgeiwgR0NHTGludCB3KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHZlcnRl
eEF0dHJpYkk0aXYoR0NHTHVpbnQgaW5kZXgsIGNvbnN0IEdDR0xpbnQqIHZhbHVlcykgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCB2ZXJ0ZXhBdHRyaWJJNGl2KEdDR0x1aW50IGluZGV4LCBHQ0dMU3Bh
bjxjb25zdCBHQ0dMaW50LCA0PiB2YWx1ZXMpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdmVydGV4
QXR0cmliSTR1aShHQ0dMdWludCBpbmRleCwgR0NHTHVpbnQgeCwgR0NHTHVpbnQgeSwgR0NHTHVp
bnQgeiwgR0NHTHVpbnQgdykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB2ZXJ0ZXhBdHRyaWJJNHVp
dihHQ0dMdWludCBpbmRleCwgY29uc3QgR0NHTHVpbnQqIHZhbHVlcykgPSAwOworICAgIHZpcnR1
YWwgdm9pZCB2ZXJ0ZXhBdHRyaWJJNHVpdihHQ0dMdWludCBpbmRleCwgR0NHTFNwYW48Y29uc3Qg
R0NHTHVpbnQsIDQ+IHZhbHVlcykgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB2ZXJ0ZXhBdHRyaWJJ
UG9pbnRlcihHQ0dMdWludCBpbmRleCwgR0NHTGludCBzaXplLCBHQ0dMZW51bSB0eXBlLCBHQ0dM
c2l6ZWkgc3RyaWRlLCBHQ0dMaW50cHRyIG9mZnNldCkgPSAwOwogCiAgICAgdmlydHVhbCB2b2lk
IGRyYXdSYW5nZUVsZW1lbnRzKEdDR0xlbnVtIG1vZGUsIEdDR0x1aW50IHN0YXJ0LCBHQ0dMdWlu
dCBlbmQsIEdDR0xzaXplaSBjb3VudCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQp
ID0gMDsKIAotICAgIHZpcnR1YWwgdm9pZCBkcmF3QnVmZmVycyhHQ0dMc2l6ZWkgbiwgY29uc3Qg
R0NHTGVudW0qIGJ1ZnMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgY2xlYXJCdWZmZXJpdihHQ0dM
ZW51bSBidWZmZXIsIEdDR0xpbnQgZHJhd2J1ZmZlciwgY29uc3QgR0NHTGludCogdmFsdWVzLCBH
Q0dMdWludCBzcmNPZmZzZXQpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgY2xlYXJCdWZmZXJ1aXYo
R0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50IGRyYXdidWZmZXIsIGNvbnN0IEdDR0x1aW50KiB2YWx1
ZXMsIEdDR0x1aW50IHNyY09mZnNldCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBjbGVhckJ1ZmZl
cmZ2KEdDR0xlbnVtIGJ1ZmZlciwgR0NHTGludCBkcmF3YnVmZmVyLCBjb25zdCBHQ0dMZmxvYXQq
IHZhbHVlcywgR0NHTHVpbnQgc3JjT2Zmc2V0KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRyYXdC
dWZmZXJzKEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVtPiBidWZzKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIGNsZWFyQnVmZmVyaXYoR0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50IGRyYXdidWZmZXIsIEdD
R0xTcGFuPGNvbnN0IEdDR0xpbnQ+IHZhbHVlcykgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjbGVh
ckJ1ZmZlcnVpdihHQ0dMZW51bSBidWZmZXIsIEdDR0xpbnQgZHJhd2J1ZmZlciwgR0NHTFNwYW48
Y29uc3QgR0NHTHVpbnQ+IHZhbHVlcykgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjbGVhckJ1ZmZl
cmZ2KEdDR0xlbnVtIGJ1ZmZlciwgR0NHTGludCBkcmF3YnVmZmVyLCBHQ0dMU3Bhbjxjb25zdCBH
Q0dMZmxvYXQ+IHZhbHVlcykgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjbGVhckJ1ZmZlcmZpKEdD
R0xlbnVtIGJ1ZmZlciwgR0NHTGludCBkcmF3YnVmZmVyLCBHQ0dMZmxvYXQgZGVwdGgsIEdDR0xp
bnQgc3RlbmNpbCkgPSAwOwogCiAgICAgdmlydHVhbCBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZVF1
ZXJ5KCkgPSAwOwpAQCAtMTIyMSwyMCArMTIzMSw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFN0
cmluZyBnZXRBY3RpdmVVbmlmb3JtQmxvY2tOYW1lKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwg
R0NHTHVpbnQgdW5pZm9ybUJsb2NrSW5kZXgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdW5pZm9y
bUJsb2NrQmluZGluZyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1aW50IHVuaWZvcm1C
bG9ja0luZGV4LCBHQ0dMdWludCB1bmlmb3JtQmxvY2tCaW5kaW5nKSA9IDA7CiAKLSAgICB2aXJ0
dWFsIHZvaWQgdW5pZm9ybTFmdihHQ0dMaW50IGxvY2F0aW9uLCBjb25zdCBHQ0dMZmxvYXQqIGRh
dGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKSA9IDA7Ci0gICAgdmly
dHVhbCB2b2lkIHVuaWZvcm0yZnYoR0NHTGludCBsb2NhdGlvbiwgY29uc3QgR0NHTGZsb2F0KiBk
YXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkgPSAwOwotICAgIHZp
cnR1YWwgdm9pZCB1bmlmb3JtM2Z2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0xmbG9hdCog
ZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpID0gMDsKLSAgICB2
aXJ0dWFsIHZvaWQgdW5pZm9ybTRmdihHQ0dMaW50IGxvY2F0aW9uLCBjb25zdCBHQ0dMZmxvYXQq
IGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKSA9IDA7Ci0KLSAg
ICB2aXJ0dWFsIHZvaWQgdW5pZm9ybTFpdihHQ0dMaW50IGxvY2F0aW9uLCBjb25zdCBHQ0dMaW50
KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkgPSAwOwotICAg
IHZpcnR1YWwgdm9pZCB1bmlmb3JtMml2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0xpbnQq
IGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKSA9IDA7Ci0gICAg
dmlydHVhbCB2b2lkIHVuaWZvcm0zaXYoR0NHTGludCBsb2NhdGlvbiwgY29uc3QgR0NHTGludCog
ZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpID0gMDsKLSAgICB2
aXJ0dWFsIHZvaWQgdW5pZm9ybTRpdihHQ0dMaW50IGxvY2F0aW9uLCBjb25zdCBHQ0dMaW50KiBk
YXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkgPSAwOwotCi0gICAg
dmlydHVhbCB2b2lkIHVuaWZvcm1NYXRyaXgyZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xl
YW4gdHJhbnNwb3NlLCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwg
R0NHTHVpbnQgc3JjTGVuZ3RoKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHVuaWZvcm1NYXRyaXgz
ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHQ0dMZmxv
YXQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKSA9IDA7Ci0g
ICAgdmlydHVhbCB2b2lkIHVuaWZvcm1NYXRyaXg0ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJv
b2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNl
dCwgR0NHTHVpbnQgc3JjTGVuZ3RoKSA9IDA7Ci0KICAgICB2aXJ0dWFsIHZvaWQgZ2V0QWN0aXZl
VW5pZm9ybUJsb2NraXYoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTHVpbnQgdW5pZm9ybUJsb2NrSW5k
ZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMaW50PiBwYXJhbXMpID0gMDsKIAogICAg
IC8vIE90aGVyIGZ1bmN0aW9ucy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzVHlwZXNHTC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NUeXBlc0dMLmgKaW5kZXggZTdjNjliMjhkY2U0NjU4MjU3NTc3MzMzMjVi
OGY0NGRmMjcyMDdiOS4uOTg1ZmI3OTQ1MTM0NTA4OTNkODIwZDZlOTU1NTNkMmEzZjg5ZDE0ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBl
c0dMLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBl
c0dMLmgKQEAgLTY4LDYgKzY4LDEwIEBAIHN0cnVjdCBHQ0dMU3BhbiB7CiAgICAgR0NHTFNwYW4o
VCAoJmFycmF5KVtFeHRlbnRdKQogICAgICAgICA6IGRhdGEoYXJyYXkpCiAgICAgeyB9CisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgVT4KKyAgICBHQ0dMU3Bhbihjb25zdCBHQ0dMU3BhbjxVLCBFeHRl
bnQ+JiBvdGhlciwgc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2NvbnZlcnRpYmxlX3Y8VSgqKVtd
LCBUKCopW10+LCBudWxscHRyX3Q+ID0gbnVsbHB0cikKKyAgICAgICAgOiBkYXRhKG90aGVyLmRh
dGEpCisgICAgeyB9CiAgICAgVCYgb3BlcmF0b3JbXShzaXplX3QgaSkgeyBSRUxFQVNFX0FTU0VS
VChkYXRhICYmIGkgPCBidWZTaXplKTsgcmV0dXJuIGRhdGFbaV07IH0KICAgICBUJiBvcGVyYXRv
ciooKSB7IFJFTEVBU0VfQVNTRVJUKGRhdGEgJiYgYnVmU2l6ZSk7IHJldHVybiAqZGF0YTsgfQog
ICAgIFQqIGRhdGE7CkBAIC04MCwxMSArODQsMTggQEAgc3RydWN0IEdDR0xTcGFuPFQsIHN0ZDo6
bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCk+IHsKICAgICAgICAgOiBkYXRhKGFycmF5KQog
ICAgICAgICAsIGJ1ZlNpemUoYnVmU2l6ZV8pCiAgICAgeyB9Ci0gICAgdGVtcGxhdGU8c2l6ZV90
IFN6PiBHQ0dMU3BhbihUICgmYXJyYXkpW1N6XSkKKyAgICB0ZW1wbGF0ZTxzaXplX3QgU3o+Cisg
ICAgR0NHTFNwYW4oVCAoJmFycmF5KVtTel0pCiAgICAgICAgIDogZGF0YShhcnJheSkKICAgICAg
ICAgLCBidWZTaXplKFN6KQogICAgIHsgfQotICAgIEdDR0xTcGFuKFdURjo6VmVjdG9yPFQ+JiBh
cnJheSkKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVLCBzaXplX3QgVUV4dGVudD4KKyAgICBHQ0dM
U3Bhbihjb25zdCBHQ0dMU3BhbjxVLCBVRXh0ZW50PiYgb3RoZXIsIHN0ZDo6ZW5hYmxlX2lmX3Q8
c3RkOjppc19jb252ZXJ0aWJsZV92PFUoKilbXSwgVCgqKVtdPiwgbnVsbHB0cl90PiA9IG51bGxw
dHIpCisgICAgICAgIDogZGF0YShvdGhlci5kYXRhKQorICAgICAgICAsIGJ1ZlNpemUob3RoZXIu
YnVmU2l6ZSkKKyAgICB7IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVLCBzaXplX3QgaW5saW5l
Q2FwYWNpdHk+CisgICAgR0NHTFNwYW4oV1RGOjpWZWN0b3I8VSwgaW5saW5lQ2FwYWNpdHk+JiBh
cnJheSwgc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2NvbnZlcnRpYmxlX3Y8VSgqKVtdLCBUKCop
W10+LCBudWxscHRyX3Q+ID0gbnVsbHB0cikKICAgICAgICAgOiBkYXRhKGFycmF5LmRhdGEoKSkK
ICAgICAgICAgLCBidWZTaXplKGFycmF5LnNpemUoKSkKICAgICB7IH0KQEAgLTk0LDYgKzEwNSw1
MCBAQCBzdHJ1Y3QgR0NHTFNwYW48VCwgc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgo
KT4gewogICAgIGNvbnN0IHNpemVfdCBidWZTaXplOwogfTsKIAordGVtcGxhdGU8Pgorc3RydWN0
IEdDR0xTcGFuPEdDR0x2b2lkPiB7CisgICAgR0NHTFNwYW4oR0NHTHZvaWQqIGFycmF5LCBzaXpl
X3QgYnVmU2l6ZV8pCisgICAgICAgIDogZGF0YShhcnJheSkKKyAgICAgICAgLCBidWZTaXplKGJ1
ZlNpemVfKQorICAgIHsgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUsIHNpemVfdCBTej4KKyAg
ICBHQ0dMU3BhbihVICgmYXJyYXkpW1N6XSkKKyAgICAgICAgOiBkYXRhKGFycmF5KQorICAgICAg
ICAsIGJ1ZlNpemUoU3ogKiBzaXplb2YoVSkpCisgICAgeyB9CisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgVSwgc2l6ZV90IFVFeHRlbnQ+CisgICAgR0NHTFNwYW4oY29uc3QgR0NHTFNwYW48VSwgVUV4
dGVudD4mIG90aGVyKQorICAgICAgICA6IGRhdGEob3RoZXIuZGF0YSkKKyAgICAgICAgLCBidWZT
aXplKG90aGVyLmJ1ZlNpemUgKiBzaXplb2YoVSkpCisgICAgeyB9CisgICAgR0NHTHZvaWQqIGRh
dGE7CisgICAgY29uc3Qgc2l6ZV90IGJ1ZlNpemU7Cit9OworCit0ZW1wbGF0ZTw+CitzdHJ1Y3Qg
R0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IHsKKyAgICBHQ0dMU3Bhbihjb25zdCBHQ0dMdm9pZCog
YXJyYXksIHNpemVfdCBidWZTaXplXykKKyAgICAgICAgOiBkYXRhKGFycmF5KQorICAgICAgICAs
IGJ1ZlNpemUoYnVmU2l6ZV8pCisgICAgeyB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVSwgc2l6
ZV90IFN6PgorICAgIEdDR0xTcGFuKFUgKCZhcnJheSlbU3pdKQorICAgICAgICA6IGRhdGEoYXJy
YXkpCisgICAgICAgICwgYnVmU2l6ZShTeiAqIHNpemVvZihVKSkKKyAgICB7IH0KKyAgICBHQ0dM
U3Bhbihjb25zdCBHQ0dMU3BhbjxHQ0dMdm9pZD4mIG90aGVyKQorICAgICAgICA6IGRhdGEob3Ro
ZXIuZGF0YSkKKyAgICAgICAgLCBidWZTaXplKG90aGVyLmJ1ZlNpemUpCisgICAgeyB9CisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgVSwgc2l6ZV90IFVFeHRlbnQ+CisgICAgR0NHTFNwYW4oY29uc3Qg
R0NHTFNwYW48VSwgVUV4dGVudD4mIG90aGVyKQorICAgICAgICA6IGRhdGEob3RoZXIuZGF0YSkK
KyAgICAgICAgLCBidWZTaXplKG90aGVyLmJ1ZlNpemUgKiBzaXplb2YoVSkpCisgICAgeyB9Cisg
ICAgY29uc3QgR0NHTHZvaWQqIGRhdGE7CisgICAgY29uc3Qgc2l6ZV90IGJ1ZlNpemU7Cit9Owor
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgTj4KIEdDR0xTcGFuKFQgKCYpW05dKSAtPiBH
Q0dMU3BhbjxULCBOPjsKIApAQCAtMTA1LDMgKzE2MCw5IEBAIEdDR0xTcGFuPFQ+IG1ha2VHQ0dM
U3BhbihUKiBkYXRhLCBzaXplX3QgY291bnQpCiB7CiAgICAgcmV0dXJuIEdDR0xTcGFuPFQ+IHsg
ZGF0YSwgY291bnQgfTsKIH0KKwordGVtcGxhdGU8c2l6ZV90IEV4dGVudCwgdHlwZW5hbWUgVD4K
K0dDR0xTcGFuPFQsIEV4dGVudD4gbWFrZUdDR0xTcGFuKFQqIGRhdGEpCit7CisgICAgcmV0dXJu
IEdDR0xTcGFuPFQsIEV4dGVudD4geyBkYXRhIH07Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5jcHAK
aW5kZXggNGQwMjViOTkzNDIyNzc2YjliNWY0YWFiYzM5YTBjNzg5MTk0MGE5OS4uMjgzZGE4MmM2
YTYwMmVhNGI1NTdjNjg2Y2ZkODIzZDA4MWM1NWU0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmNw
cApAQCAtMjI3LDEyICsyMjcsMTIgQEAgYm9vbCBFeHRlbnNpb25zR0xBTkdMRTo6c3VwcG9ydHNF
eHRlbnNpb24oY29uc3QgU3RyaW5nJiBuYW1lKQogICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVu
c2lvbnMuY29udGFpbnMobmFtZSkgfHwgbV9yZXF1ZXN0YWJsZUV4dGVuc2lvbnMuY29udGFpbnMo
bmFtZSk7CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmRyYXdCdWZmZXJzRVhUKEdDR0xz
aXplaSBuLCBjb25zdCBHQ0dMZW51bSogYnVmcykKK3ZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmRy
YXdCdWZmZXJzRVhUKEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVtPiBidWZzKQogewogICAgIGlmICgh
bV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
Z2w6OkRyYXdCdWZmZXJzRVhUKG4sIGJ1ZnMpOworICAgIGdsOjpEcmF3QnVmZmVyc0VYVChidWZz
LmJ1ZlNpemUsIGJ1ZnMuZGF0YSk7CiB9CiAKIHZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmRyYXdB
cnJheXNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHNpemVpIGNv
dW50LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KQpAQCAtMjg2LDE2ICsyODYsNiBAQCB2b2lkIEV4dGVu
c2lvbnNHTEFOR0xFOjpyZWFkUGl4ZWxzUm9idXN0QU5HTEUoaW50IHgsIGludCB5LCBHQ0dMc2l6
ZWkgd2lkdGgsIEdDRwogICAgIGdsOjpSZWFkUGl4ZWxzUm9idXN0QU5HTEUoeCwgeSwgd2lkdGgs
IGhlaWdodCwgZm9ybWF0LCB0eXBlLCBidWZTaXplLCBsZW5ndGgsIGNvbHVtbnMsIHJvd3MsIHBp
eGVscyk7CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OnRleEltYWdlMkRSb2J1c3RBTkdM
RShHQ0dMZW51bSB0YXJnZXQsIGludCBsZXZlbCwgaW50IGludGVybmFsZm9ybWF0LCBHQ0dMc2l6
ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwg
R0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IHZvaWQgKnBpeGVscykKLXsK
LSAgICBpZiAoIW1fY29udGV4dC0+bV9pc0ZvcldlYkdMMikKLSAgICAgICAgaW50ZXJuYWxmb3Jt
YXQgPSBhZGp1c3RXZWJHTDFUZXh0dXJlSW50ZXJuYWxGb3JtYXQoaW50ZXJuYWxmb3JtYXQsIGZv
cm1hdCwgdHlwZSk7Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6VGV4SW1hZ2UyRFJvYnVzdEFOR0xFKHRhcmdldCwg
bGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIsIGZvcm1hdCwgdHlw
ZSwgYnVmU2l6ZSwgcGl4ZWxzKTsKLX0KLQogdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6dGV4UGFy
YW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGZsb2F0ICpwYXJhbXMpCiB7CiAgICAgaWYgKCFtX2Nv
bnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQpAQCAtMzEyLDY2ICszMDIsNiBAQCB2b2lkIEV4
dGVuc2lvbnNHTEFOR0xFOjp0ZXhQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTGVudW0gcG5hbQogICAgIGdsOjpUZXhQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKHRhcmdl
dCwgcG5hbWUsIGJ1ZlNpemUsIHBhcmFtcyk7CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6
OnRleFN1YkltYWdlMkRSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIGludCBsZXZlbCwgaW50
IHhvZmZzZXQsIGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQs
IEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0
IHZvaWQgKnBpeGVscykKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50
KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpUZXhTdWJJbWFnZTJEUm9idXN0QU5HTEUo
dGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0
eXBlLCBidWZTaXplLCBwaXhlbHMpOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpjb21w
cmVzc2VkVGV4SW1hZ2UyRFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgaW50IGxldmVsLCBH
Q0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0
LCBpbnQgYm9yZGVyLCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29u
c3Qgdm9pZCogZGF0YSkKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50
KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpDb21wcmVzc2VkVGV4SW1hZ2UyRFJvYnVz
dEFOR0xFKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBib3Jk
ZXIsIGltYWdlU2l6ZSwgYnVmU2l6ZSwgZGF0YSk7Ci0gICAgbV9jb250ZXh0LT5tX3N0YXRlLnRl
eHR1cmVTZWVkQ291bnQuYWRkKG1fY29udGV4dC0+bV9zdGF0ZS5jdXJyZW50Qm91bmRUZXh0dXJl
KCkpOwotCi19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmNvbXByZXNzZWRUZXhTdWJJbWFn
ZTJEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWwsIGludCB4b2Zmc2V0LCBp
bnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBm
b3JtYXQsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCB2b2lk
KiBkYXRhKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkNvbXByZXNzZWRUZXhTdWJJbWFnZTJEUm9idXN0QU5H
TEUodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0
LCBpbWFnZVNpemUsIGJ1ZlNpemUsIGRhdGEpOwotICAgIG1fY29udGV4dC0+bV9zdGF0ZS50ZXh0
dXJlU2VlZENvdW50LmFkZChtX2NvbnRleHQtPm1fc3RhdGUuY3VycmVudEJvdW5kVGV4dHVyZSgp
KTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Y29tcHJlc3NlZFRleEltYWdlM0RSb2J1
c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3Jt
YXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBp
bnQgYm9yZGVyLCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3Qg
dm9pZCogZGF0YSkKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpDb21wcmVzc2VkVGV4SW1hZ2UzRFJvYnVzdEFO
R0xFKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwg
Ym9yZGVyLCBpbWFnZVNpemUsIGJ1ZlNpemUsIGRhdGEpOwotfQotCi12b2lkIEV4dGVuc2lvbnNH
TEFOR0xFOjpjb21wcmVzc2VkVGV4U3ViSW1hZ2UzRFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdl
dCwgaW50IGxldmVsLCBpbnQgeG9mZnNldCwgaW50IHlvZmZzZXQsIGludCB6b2Zmc2V0LCBHQ0dM
c2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGVudW0g
Zm9ybWF0LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3Qgdm9p
ZCogZGF0YSkKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIGdsOjpDb21wcmVzc2VkVGV4U3ViSW1hZ2UzRFJvYnVzdEFO
R0xFKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHpvZmZzZXQsIHdpZHRoLCBoZWln
aHQsIGRlcHRoLCBmb3JtYXQsIGltYWdlU2l6ZSwgYnVmU2l6ZSwgZGF0YSk7Ci19Ci0KLQotdm9p
ZCBFeHRlbnNpb25zR0xBTkdMRTo6dGV4SW1hZ2UzRFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdl
dCwgaW50IGxldmVsLCBpbnQgaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNp
emVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQs
IEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCB2b2lkICpwaXhlbHMpCi17
Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBnbDo6VGV4SW1hZ2UzRFJvYnVzdEFOR0xFKHRhcmdldCwgbGV2ZWwsIGludGVy
bmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgYm9yZGVyLCBmb3JtYXQsIHR5cGUsIGJ1
ZlNpemUsIHBpeGVscyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OnRleFN1YkltYWdl
M0RSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIGludCBsZXZlbCwgaW50IHhvZmZzZXQsIGlu
dCB5b2Zmc2V0LCBpbnQgem9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0
LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNp
emVpIGJ1ZlNpemUsIGNvbnN0IHZvaWQgKnBpeGVscykKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+
bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpUZXhTdWJJ
bWFnZTNEUm9idXN0QU5HTEUodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgem9mZnNl
dCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGZvcm1hdCwgdHlwZSwgYnVmU2l6ZSwgcGl4ZWxzKTsK
LX0KLQogdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0UXVlcnlpdlJvYnVzdEFOR0xFKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkg
Kmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKQogewogICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29u
dGV4dEN1cnJlbnQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5oCmluZGV4IDU3YmI5M2JjODRjMzM1OTBm
YmNmNGIzZjdhMWViNWE1NWM1OTI1NmMuLmE3NzMxZGZkMjBjNWYwM2EzMzU5MDNmYWE2ZTM4ZmY3
MmY0YjIzMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Fu
Z2xlL0V4dGVuc2lvbnNHTEFOR0xFLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuaApAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCBpbnNlcnRFdmVudE1hcmtlckVYVChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsK
ICAgICB2b2lkIHB1c2hHcm91cE1hcmtlckVYVChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKICAg
ICB2b2lkIHBvcEdyb3VwTWFya2VyRVhUKHZvaWQpIG92ZXJyaWRlOwotICAgIHZvaWQgZHJhd0J1
ZmZlcnNFWFQoR0NHTHNpemVpLCBjb25zdCBHQ0dMZW51bSopIG92ZXJyaWRlOworICAgIHZvaWQg
ZHJhd0J1ZmZlcnNFWFQoR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+KSBvdmVycmlkZTsKIAogICAg
IFN0cmluZyBnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUoUGxhdGZvcm1HTE9iamVjdCkg
b3ZlcnJpZGU7CiAKQEAgLTc0LDE3ICs3NCw4IEBAIHB1YmxpYzoKIAogICAgIC8vIEdMX0FOR0xF
X3JvYnVzdF9jbGllbnRfbWVtb3J5CiAgICAgdm9pZCByZWFkUGl4ZWxzUm9idXN0QU5HTEUoR0NH
TGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NH
TGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
ICpsZW5ndGgsIEdDR0xzaXplaSAqY29sdW1ucywgR0NHTHNpemVpICpyb3dzLCB2b2lkICpwaXhl
bHMpIG92ZXJyaWRlOwotICAgIHZvaWQgdGV4SW1hZ2UyRFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRh
cmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdp
ZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0LCBH
Q0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3Qgdm9pZCAqcGl4ZWxzKSBvdmVy
cmlkZTsKICAgICB2b2lkIHRleFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xmbG9hdCAqcGFy
YW1zKSBvdmVycmlkZTsKICAgICB2b2lkIHRleFBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xp
bnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCB0ZXhTdWJJbWFnZTJEUm9idXN0QU5HTEUo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQg
eW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3Jt
YXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCB2b2lkICpwaXhlbHMp
IG92ZXJyaWRlOwotICAgIHZvaWQgY29tcHJlc3NlZFRleEltYWdlMkRSb2J1c3RBTkdMRShHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dM
c2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMc2l6ZWkg
aW1hZ2VTaXplLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTHZvaWQqIGRhdGEpIG92ZXJy
aWRlOwotICAgIHZvaWQgY29tcHJlc3NlZFRleFN1YkltYWdlMkRSb2J1c3RBTkdMRShHQ0dMZW51
bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0
LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NH
THNpemVpIGltYWdlU2l6ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0x2b2lkKiBkYXRh
KSBvdmVycmlkZTsKLSAgICB2b2lkIGNvbXByZXNzZWRUZXhJbWFnZTNEUm9idXN0QU5HTEUoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NH
THNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xpbnQg
Ym9yZGVyLCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NH
THZvaWQqIGRhdGEpIG92ZXJyaWRlOwotICAgIHZvaWQgY29tcHJlc3NlZFRleFN1YkltYWdlM0RS
b2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNl
dCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMaW50IHpvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NH
THNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXpl
aSBpbWFnZVNpemUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMdm9pZCogZGF0YSkgb3Zl
cnJpZGU7Ci0KLSAgICB2b2lkIHRleEltYWdlM0RSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQs
IEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwg
R0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMaW50IGJvcmRlciwgR0NHTGVu
dW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3Qgdm9pZCAq
cGl4ZWxzKSBvdmVycmlkZTsKLSAgICB2b2lkIHRleFN1YkltYWdlM0RSb2J1c3RBTkdMRShHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zm
c2V0LCBHQ0dMaW50IHpvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwg
R0NHTHNpemVpIGRlcHRoLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXpl
aSBidWZTaXplLCBjb25zdCB2b2lkICpwaXhlbHMpIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0UXVl
cnlpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsK
ICAgICB2b2lkIGdldFF1ZXJ5T2JqZWN0dWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xl
bnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50
ICpwYXJhbXMpIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0QnVmZmVyUG9pbnRlcnZSb2J1c3RBTkdM
RShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NH
THNpemVpICpsZW5ndGgsIHZvaWQgKipwYXJhbXMpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdM
RS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0Nv
bnRleHRHTEFOR0xFLmNwcAppbmRleCBmZWIwYmViZWYzMTVmMGUxMzhiYTk5ZDYyZWI2Y2ZjZWQ1
MTkzNjdhLi4xMjdhM2I4ZGJhM2MzZjQ0Y2Q3NjVkZDhmYzcxMWNkZDg3OGRlOWE0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRl
eHRHTEFOR0xFLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmds
ZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcApAQCAtMzYyLDE1ICszNjIsNjIgQEAgdm9pZCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0KEdDR0xlbnVt
IHNoYWRlclR5cGUsIEdDR0wKICAgICBnbDo6R2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0KHNoYWRl
clR5cGUsIHByZWNpc2lvblR5cGUsIHJhbmdlLmRhdGEsIHByZWNpc2lvbik7CiB9CiAKLWJvb2wg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
aW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dM
c2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0
eXBlLCBjb25zdCB2b2lkKiBwaXhlbHMpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp0
ZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJu
YWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3Jk
ZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZv
aWQ+IHBpeGVscykKIHsKLSAgICBpZiAod2lkdGggJiYgaGVpZ2h0ICYmICFwaXhlbHMpIHsKLSAg
ICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoSU5WQUxJRF9WQUxVRSk7Ci0gICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICBpZiAoIW1faXNGb3JXZWJHTDIpCisgICAgICAgIGludGVybmFsZm9ybWF0ID0g
c3RhdGljX2Nhc3Q8RXh0ZW5zaW9uc0dMQU5HTEUmPihnZXRFeHRlbnNpb25zKCkpLmFkanVzdFdl
YkdMMVRleHR1cmVJbnRlcm5hbEZvcm1hdChpbnRlcm5hbGZvcm1hdCwgZm9ybWF0LCB0eXBlKTsK
KyAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQorICAgICAgICByZXR1cm47CisgICAgZ2w6
OlRleEltYWdlMkRSb2J1c3RBTkdMRSh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lk
dGgsIGhlaWdodCwgYm9yZGVyLCBmb3JtYXQsIHR5cGUsIHBpeGVscy5idWZTaXplLCBwaXhlbHMu
ZGF0YSk7CisgICAgbV9zdGF0ZS50ZXh0dXJlU2VlZENvdW50LmFkZChtX3N0YXRlLmN1cnJlbnRC
b3VuZFRleHR1cmUoKSk7CiAgICAgfQogCi0gICAgdGV4SW1hZ2UyRERpcmVjdCh0YXJnZXQsIGxl
dmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgYm9yZGVyLCBmb3JtYXQsIHR5cGUs
IHBpeGVscyk7Ci0gICAgcmV0dXJuIHRydWU7Cit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
Ojp0ZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50
ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBi
b3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQp
Cit7CisgICAgdGV4SW1hZ2UyRCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgs
IGhlaWdodCwgYm9yZGVyLCBmb3JtYXQsIHR5cGUsIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9j
YXN0PGNvbnN0IEdDR0x2b2lkKj4ob2Zmc2V0KSwgMCkpOworfQorCit2b2lkIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjp0ZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZl
bCwgR0NHTGludCB4b2ZmLCBHQ0dMaW50IHlvZmYsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVp
IGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bhbjxjb25zdCBH
Q0dMdm9pZD4gcGl4ZWxzKQoreworICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCisgICAg
ICAgIHJldHVybjsKKworICAgIC8vIEZJWE1FOiB3ZSB3aWxsIG5lZWQgdG8gZGVhbCB3aXRoIFBp
eGVsU3RvcmUgcGFyYW1zIHdoZW4gZGVhbGluZyB3aXRoIGltYWdlIGJ1ZmZlcnMgdGhhdCBkaWZm
ZXIgZnJvbSB0aGUgc3ViaW1hZ2Ugc2l6ZS4KKyAgICBnbDo6VGV4U3ViSW1hZ2UyRFJvYnVzdEFO
R0xFKHRhcmdldCwgbGV2ZWwsIHhvZmYsIHlvZmYsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlw
ZSwgcGl4ZWxzLmJ1ZlNpemUsIHBpeGVscy5kYXRhKTsKKyAgICBtX3N0YXRlLnRleHR1cmVTZWVk
Q291bnQuYWRkKG1fc3RhdGUuY3VycmVudEJvdW5kVGV4dHVyZSgpKTsKK30KKwordm9pZCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6dGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xp
bnQgbGV2ZWwsIEdDR0xpbnQgeG9mZiwgR0NHTGludCB5b2ZmLCBHQ0dMc2l6ZWkgd2lkdGgsIEdD
R0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0
ciBvZmZzZXQpCit7CisgICAgdGV4U3ViSW1hZ2UyRCh0YXJnZXQsIGxldmVsLCB4b2ZmLCB5b2Zm
LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9j
YXN0PGNvbnN0IEdDR0x2b2lkKj4ob2Zmc2V0KSwgMCkpOworfQorCit2b2lkIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpjb21wcmVzc2VkVGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIGludCBs
ZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVp
IGhlaWdodCwgaW50IGJvcmRlciwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTFNwYW48Y29uc3Qg
R0NHTHZvaWQ+IGRhdGEpCit7CisgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgZ2w6OkNvbXByZXNzZWRUZXhJbWFnZTJEUm9idXN0QU5HTEUodGFy
Z2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGJvcmRlciwgaW1hZ2VT
aXplLCBkYXRhLmJ1ZlNpemUsIGRhdGEuZGF0YSk7CisgICAgbV9zdGF0ZS50ZXh0dXJlU2VlZENv
dW50LmFkZChtX3N0YXRlLmN1cnJlbnRCb3VuZFRleHR1cmUoKSk7Cit9CisKK3ZvaWQgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmNvbXByZXNzZWRUZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwg
aW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dM
c2l6ZWkgaGVpZ2h0LCBpbnQgYm9yZGVyLCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMaW50cHRy
IG9mZnNldCkKK3sKKyAgICBjb21wcmVzc2VkVGV4SW1hZ2UyRCh0YXJnZXQsIGxldmVsLCBpbnRl
cm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgYm9yZGVyLCBpbWFnZVNpemUsIG1ha2VHQ0dMU3Bh
bihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0x2b2lkKj4ob2Zmc2V0KSwgMCkpOworfQorCit2
b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChHQ0dM
ZW51bSB0YXJnZXQsIGludCBsZXZlbCwgaW50IHhvZmZzZXQsIGludCB5b2Zmc2V0LCBHQ0dMc2l6
ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTHNpemVpIGlt
YWdlU2l6ZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEpCit7CisgICAgaWYgKCFtYWtl
Q29udGV4dEN1cnJlbnQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgZ2w6OkNvbXByZXNzZWRU
ZXhTdWJJbWFnZTJEUm9idXN0QU5HTEUodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwg
d2lkdGgsIGhlaWdodCwgZm9ybWF0LCBpbWFnZVNpemUsIGRhdGEuYnVmU2l6ZSwgZGF0YS5kYXRh
KTsKKyAgICBtX3N0YXRlLnRleHR1cmVTZWVkQ291bnQuYWRkKG1fc3RhdGUuY3VycmVudEJvdW5k
VGV4dHVyZSgpKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y29tcHJlc3Nl
ZFRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWwsIGludCB4b2Zmc2V0LCBp
bnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBm
b3JtYXQsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xpbnRwdHIgb2Zmc2V0KQoreworICAgIGNv
bXByZXNzZWRUZXhTdWJJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdp
ZHRoLCBoZWlnaHQsIGZvcm1hdCwgaW1hZ2VTaXplLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBHQ0dMdm9pZCo+KG9mZnNldCksIDApKTsKIH0KIAogdm9pZCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6ZGVwdGhSYW5nZShHQ0dMY2xhbXBmIHpOZWFyLCBHQ0dMY2xhbXBmIHpG
YXIpCkBAIC04MzUsMjAgKzg4MiwyMCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpi
dWZmZXJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpcHRyIHNpemUsIEdDRwogICAgIGds
OjpCdWZmZXJEYXRhKHRhcmdldCwgc2l6ZSwgMCwgdXNhZ2UpOwogfQogCi12b2lkIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpidWZmZXJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpcHRy
IHNpemUsIGNvbnN0IHZvaWQqIGRhdGEsIEdDR0xlbnVtIHVzYWdlKQordm9pZCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6YnVmZmVyRGF0YShHQ0dMZW51bSB0YXJnZXQsIEdDR0xTcGFuPGNvbnN0
IEdDR0x2b2lkPiBkYXRhLCBHQ0dMZW51bSB1c2FnZSkKIHsKICAgICBpZiAoIW1ha2VDb250ZXh0
Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBnbDo6QnVmZmVyRGF0YSh0YXJnZXQs
IHNpemUsIGRhdGEsIHVzYWdlKTsKKyAgICBnbDo6QnVmZmVyRGF0YSh0YXJnZXQsIGRhdGEuYnVm
U2l6ZSwgZGF0YS5kYXRhLCB1c2FnZSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OmJ1ZmZlclN1YkRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50cHRyIG9mZnNldCwgR0NH
THNpemVpcHRyIHNpemUsIGNvbnN0IHZvaWQqIGRhdGEpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpidWZmZXJTdWJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludHB0ciBvZmZzZXQs
IEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRhKQogewogICAgIGlmICghbWFrZUNvbnRleHRD
dXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGdsOjpCdWZmZXJTdWJEYXRhKHRhcmdl
dCwgb2Zmc2V0LCBzaXplLCBkYXRhKTsKKyAgICBnbDo6QnVmZmVyU3ViRGF0YSh0YXJnZXQsIG9m
ZnNldCwgZGF0YS5idWZTaXplLCBkYXRhLmRhdGEpOwogfQogCiB2b2lkKiBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6bWFwQnVmZmVyUmFuZ2UoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50cHRyIG9m
ZnNldCwgR0NHTHNpemVpcHRyIGxlbmd0aCwgR0NHTGJpdGZpZWxkIGFjY2VzcykKQEAgLTkwOSw2
ICs5NTYsNTggQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dGV4U3RvcmFnZTNEKEdD
R0xlbnVtIHRhcmdldCwgR0NHTHNpemVpIGxldmVscywgR0MKICAgICBtX3N0YXRlLnRleHR1cmVT
ZWVkQ291bnQuYWRkKG1fc3RhdGUuY3VycmVudEJvdW5kVGV4dHVyZSgpKTsKIH0KIAordm9pZCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dGV4SW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIGludCBs
ZXZlbCwgaW50IGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWln
aHQsIEdDR0xzaXplaSBkZXB0aCwgaW50IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51
bSB0eXBlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gcGl4ZWxzKQoreworICAgIGlmICghbWFr
ZUNvbnRleHRDdXJyZW50KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGdsOjpUZXhJbWFnZTNE
Um9idXN0QU5HTEUodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQs
IGRlcHRoLCBib3JkZXIsIGZvcm1hdCwgdHlwZSwgcGl4ZWxzLmJ1ZlNpemUsIHBpeGVscy5kYXRh
KTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dGV4SW1hZ2UzRChHQ0dMZW51
bSB0YXJnZXQsIGludCBsZXZlbCwgaW50IGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgs
IEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgaW50IGJvcmRlciwgR0NHTGVudW0g
Zm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCkKK3sKKyAgICB0ZXhJbWFn
ZTNEKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwg
Ym9yZGVyLCBmb3JtYXQsIHR5cGUsIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0
IEdDR0x2b2lkKj4ob2Zmc2V0KSwgMCkpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjp0ZXhTdWJJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgaW50IGxldmVsLCBpbnQgeG9mZnNl
dCwgaW50IHlvZmZzZXQsIGludCB6b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBo
ZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBH
Q0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gcGl4ZWxzKQoreworICAgIGlmICghbWFrZUNvbnRleHRD
dXJyZW50KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGdsOjpUZXhTdWJJbWFnZTNEUm9idXN0
QU5HTEUodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgem9mZnNldCwgd2lkdGgsIGhl
aWdodCwgZGVwdGgsIGZvcm1hdCwgdHlwZSwgcGl4ZWxzLmJ1ZlNpemUsIHBpeGVscy5kYXRhKTsK
K30KKwordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dGV4U3ViSW1hZ2UzRChHQ0dMZW51
bSB0YXJnZXQsIGludCBsZXZlbCwgaW50IHhvZmZzZXQsIGludCB5b2Zmc2V0LCBpbnQgem9mZnNl
dCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdD
R0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpCit7CisgICAg
dGV4U3ViSW1hZ2UzRCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB6b2Zmc2V0LCB3
aWR0aCwgaGVpZ2h0LCBkZXB0aCwgZm9ybWF0LCB0eXBlLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBHQ0dMdm9pZCo+KG9mZnNldCksIDApKTsKK30KKwordm9pZCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6Y29tcHJlc3NlZFRleEltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBp
bnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xz
aXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgaW50IGJvcmRlciwgR0NHTHNpemVpIGltYWdl
U2l6ZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEpCit7CisgICAgaWYgKCFtYWtlQ29u
dGV4dEN1cnJlbnQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgZ2w6OkNvbXByZXNzZWRUZXhJ
bWFnZTNEUm9idXN0QU5HTEUodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBo
ZWlnaHQsIGRlcHRoLCBib3JkZXIsIGltYWdlU2l6ZSwgZGF0YS5idWZTaXplLCBkYXRhLmRhdGEp
OworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjb21wcmVzc2VkVGV4SW1hZ2Uz
RChHQ0dMZW51bSB0YXJnZXQsIGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdD
R0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBpbnQgYm9y
ZGVyLCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMaW50cHRyIG9mZnNldCkKK3sKKyAgICBjb21w
cmVzc2VkVGV4SW1hZ2UzRCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhl
aWdodCwgZGVwdGgsIGJvcmRlciwgaW1hZ2VTaXplLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBHQ0dMdm9pZCo+KG9mZnNldCksIDApKTsKK30KKwordm9pZCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6Y29tcHJlc3NlZFRleFN1YkltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBp
bnQgbGV2ZWwsIGludCB4b2Zmc2V0LCBpbnQgeW9mZnNldCwgaW50IHpvZmZzZXQsIEdDR0xzaXpl
aSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMZW51bSBmb3Jt
YXQsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRhKQor
eworICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCisgICAgICAgIHJldHVybjsKKworICAg
IGdsOjpDb21wcmVzc2VkVGV4U3ViSW1hZ2UzRFJvYnVzdEFOR0xFKHRhcmdldCwgbGV2ZWwsIHhv
ZmZzZXQsIHlvZmZzZXQsIHpvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBmb3JtYXQsIGlt
YWdlU2l6ZSwgZGF0YS5idWZTaXplLCBkYXRhLmRhdGEpOworfQorCit2b2lkIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpjb21wcmVzc2VkVGV4U3ViSW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIGlu
dCBsZXZlbCwgaW50IHhvZmZzZXQsIGludCB5b2Zmc2V0LCBpbnQgem9mZnNldCwgR0NHTHNpemVp
IHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xlbnVtIGZvcm1h
dCwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTGludHB0ciBvZmZzZXQpCit7CisgICAgY29tcHJl
c3NlZFRleFN1YkltYWdlM0QodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgem9mZnNl
dCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGZvcm1hdCwgaW1hZ2VTaXplLCBtYWtlR0NHTFNwYW4o
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMdm9pZCo+KG9mZnNldCksIDApKTsKK30KKwogdm9p
ZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0QWN0aXZlVW5pZm9ybXMoUGxhdGZvcm1HTE9i
amVjdCBwcm9ncmFtLCBjb25zdCBWZWN0b3I8R0NHTHVpbnQ+JiB1bmlmb3JtSW5kaWNlcywgR0NH
TGVudW0gcG5hbWUsIFZlY3RvcjxHQ0dMaW50PiYgcGFyYW1zKQogewogICAgIEFTU0VSVChwcm9n
cmFtKTsKQEAgLTE1MDEsMTIgKzE2MDAsMTIgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6dW5pZm9ybTFmKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xmbG9hdCB2MCkKICAgICBnbDo6VW5p
Zm9ybTFmKGxvY2F0aW9uLCB2MCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OnVuaWZvcm0xZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIHNpemUsIGNvbnN0IEdDR0xm
bG9hdCogYXJyYXkpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMWZ2KEdD
R0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gYXJyYXkpCiB7CiAgICAg
aWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZ2w6OlVu
aWZvcm0xZnYobG9jYXRpb24sIHNpemUsIGFycmF5KTsKKyAgICBnbDo6VW5pZm9ybTFmdihsb2Nh
dGlvbiwgYXJyYXkuYnVmU2l6ZSwgYXJyYXkuZGF0YSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OnVuaWZvcm0yZihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMZmxvYXQgdjAsIEdD
R0xmbG9hdCB2MSkKQEAgLTE1MTcsMTMgKzE2MTYsMTMgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6dW5pZm9ybTJmKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xmbG9hdCB2MCwgR0NHTGZs
b2EKICAgICBnbDo6VW5pZm9ybTJmKGxvY2F0aW9uLCB2MCwgdjEpOwogfQogCi12b2lkIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXpl
aSBzaXplLCBjb25zdCBHQ0dMZmxvYXQqIGFycmF5KQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6dW5pZm9ybTJmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxv
YXQ+IGFycmF5KQogewotICAgIC8vIEZJWE1FOiBsZW5ndGggbmVlZHMgdG8gYmUgYSBtdWx0aXBs
ZSBvZiAyLgorICAgIEFTU0VSVCghKGFycmF5LmJ1ZlNpemUgJSAyKSk7CiAgICAgaWYgKCFtYWtl
Q29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZ2w6OlVuaWZvcm0yZnYo
bG9jYXRpb24sIHNpemUsIGFycmF5KTsKKyAgICBnbDo6VW5pZm9ybTJmdihsb2NhdGlvbiwgYXJy
YXkuYnVmU2l6ZSAvIDIsIGFycmF5LmRhdGEpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjp1bmlmb3JtM2YoR0NHTGludCBsb2NhdGlvbiwgR0NHTGZsb2F0IHYwLCBHQ0dMZmxv
YXQgdjEsIEdDR0xmbG9hdCB2MikKQEAgLTE1MzQsMTMgKzE2MzMsMTMgQEAgdm9pZCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTNmKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xmbG9hdCB2
MCwgR0NHTGZsb2EKICAgICBnbDo6VW5pZm9ybTNmKGxvY2F0aW9uLCB2MCwgdjEsIHYyKTsKIH0K
IAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTNmdihHQ0dMaW50IGxvY2F0
aW9uLCBHQ0dMc2l6ZWkgc2l6ZSwgY29uc3QgR0NHTGZsb2F0KiBhcnJheSkKK3ZvaWQgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0zZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48
Y29uc3QgR0NHTGZsb2F0PiBhcnJheSkKIHsKLSAgICAvLyBGSVhNRTogbGVuZ3RoIG5lZWRzIHRv
IGJlIGEgbXVsdGlwbGUgb2YgMy4KKyAgICBBU1NFUlQoIShhcnJheS5idWZTaXplICUgMykpOwog
ICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGds
OjpVbmlmb3JtM2Z2KGxvY2F0aW9uLCBzaXplLCBhcnJheSk7CisgICAgZ2w6OlVuaWZvcm0zZnYo
bG9jYXRpb24sIGFycmF5LmJ1ZlNpemUgLyAzLCBhcnJheS5kYXRhKTsKIH0KIAogdm9pZCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTRmKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xmbG9h
dCB2MCwgR0NHTGZsb2F0IHYxLCBHQ0dMZmxvYXQgdjIsIEdDR0xmbG9hdCB2MykKQEAgLTE1NTEs
MTMgKzE2NTAsMTMgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTRmKEdD
R0xpbnQgbG9jYXRpb24sIEdDR0xmbG9hdCB2MCwgR0NHTGZsb2EKICAgICBnbDo6VW5pZm9ybTRm
KGxvY2F0aW9uLCB2MCwgdjEsIHYyLCB2Myk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OnVuaWZvcm00ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIHNpemUsIGNvbnN0
IEdDR0xmbG9hdCogYXJyYXkpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3Jt
NGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gYXJyYXkpCiB7
Ci0gICAgLy8gRklYTUU6IGxlbmd0aCBuZWVkcyB0byBiZSBhIG11bHRpcGxlIG9mIDQuCisgICAg
QVNTRVJUKCEoYXJyYXkuYnVmU2l6ZSAlIDQpKTsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVu
dCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBnbDo6VW5pZm9ybTRmdihsb2NhdGlvbiwgc2l6
ZSwgYXJyYXkpOworICAgIGdsOjpVbmlmb3JtNGZ2KGxvY2F0aW9uLCBhcnJheS5idWZTaXplIC8g
NCwgYXJyYXkuZGF0YSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZv
cm0xaShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMaW50IHYwKQpAQCAtMTU2OCwxMiArMTY2NywxMiBA
QCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMWkoR0NHTGludCBsb2NhdGlv
biwgR0NHTGludCB2MCkKICAgICBnbDo6VW5pZm9ybTFpKGxvY2F0aW9uLCB2MCk7CiB9CiAKLXZv
aWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0xaXYoR0NHTGludCBsb2NhdGlvbiwg
R0NHTHNpemVpIHNpemUsIGNvbnN0IEdDR0xpbnQqIGFycmF5KQordm9pZCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6dW5pZm9ybTFpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBH
Q0dMaW50PiBhcnJheSkKIHsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBnbDo6VW5pZm9ybTFpdihsb2NhdGlvbiwgc2l6ZSwgYXJyYXkpOwor
ICAgIGdsOjpVbmlmb3JtMWl2KGxvY2F0aW9uLCBhcnJheS5idWZTaXplLCBhcnJheS5kYXRhKTsK
IH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTJpKEdDR0xpbnQgbG9j
YXRpb24sIEdDR0xpbnQgdjAsIEdDR0xpbnQgdjEpCkBAIC0xNTg0LDEzICsxNjgzLDEzIEBAIHZv
aWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0yaShHQ0dMaW50IGxvY2F0aW9uLCBH
Q0dMaW50IHYwLCBHQ0dMaW50IHYxCiAgICAgZ2w6OlVuaWZvcm0yaShsb2NhdGlvbiwgdjAsIHYx
KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTJpdihHQ0dMaW50
IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgc2l6ZSwgY29uc3QgR0NHTGludCogYXJyYXkpCit2b2lkIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMml2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xT
cGFuPGNvbnN0IEdDR0xpbnQ+IGFycmF5KQogewotICAgIC8vIEZJWE1FOiBsZW5ndGggbmVlZHMg
dG8gYmUgYSBtdWx0aXBsZSBvZiAyLgorICAgIEFTU0VSVCghKGFycmF5LmJ1ZlNpemUgJSAyKSk7
CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
Z2w6OlVuaWZvcm0yaXYobG9jYXRpb24sIHNpemUsIGFycmF5KTsKKyAgICBnbDo6VW5pZm9ybTJp
dihsb2NhdGlvbiwgYXJyYXkuYnVmU2l6ZSAvIDIsIGFycmF5LmRhdGEpOwogfQogCiB2b2lkIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtM2koR0NHTGludCBsb2NhdGlvbiwgR0NHTGlu
dCB2MCwgR0NHTGludCB2MSwgR0NHTGludCB2MikKQEAgLTE2MDEsMTMgKzE3MDAsMTMgQEAgdm9p
ZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTNpKEdDR0xpbnQgbG9jYXRpb24sIEdD
R0xpbnQgdjAsIEdDR0xpbnQgdjEKICAgICBnbDo6VW5pZm9ybTNpKGxvY2F0aW9uLCB2MCwgdjEs
IHYyKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTNpdihHQ0dM
aW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgc2l6ZSwgY29uc3QgR0NHTGludCogYXJyYXkpCit2b2lk
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtM2l2KEdDR0xpbnQgbG9jYXRpb24sIEdD
R0xTcGFuPGNvbnN0IEdDR0xpbnQ+IGFycmF5KQogewotICAgIC8vIEZJWE1FOiBsZW5ndGggbmVl
ZHMgdG8gYmUgYSBtdWx0aXBsZSBvZiAzLgorICAgIEFTU0VSVCghKGFycmF5LmJ1ZlNpemUgJSAz
KSk7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgZ2w6OlVuaWZvcm0zaXYobG9jYXRpb24sIHNpemUsIGFycmF5KTsKKyAgICBnbDo6VW5pZm9y
bTNpdihsb2NhdGlvbiwgYXJyYXkuYnVmU2l6ZSAvIDMsIGFycmF5LmRhdGEpOwogfQogCiB2b2lk
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtNGkoR0NHTGludCBsb2NhdGlvbiwgR0NH
TGludCB2MCwgR0NHTGludCB2MSwgR0NHTGludCB2MiwgR0NHTGludCB2MykKQEAgLTE2MTgsNDAg
KzE3MTcsMzkgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTRpKEdDR0xp
bnQgbG9jYXRpb24sIEdDR0xpbnQgdjAsIEdDR0xpbnQgdjEKICAgICBnbDo6VW5pZm9ybTRpKGxv
Y2F0aW9uLCB2MCwgdjEsIHYyLCB2Myk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OnVuaWZvcm00aXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIHNpemUsIGNvbnN0IEdD
R0xpbnQqIGFycmF5KQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTRpdihH
Q0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50PiBhcnJheSkKIHsKLSAgICAv
LyBGSVhNRTogbGVuZ3RoIG5lZWRzIHRvIGJlIGEgbXVsdGlwbGUgb2YgNC4KKyAgICBBU1NFUlQo
IShhcnJheS5idWZTaXplICUgNCkpOwogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIGdsOjpVbmlmb3JtNGl2KGxvY2F0aW9uLCBzaXplLCBhcnJh
eSk7CisgICAgZ2w6OlVuaWZvcm00aXYobG9jYXRpb24sIGFycmF5LmJ1ZlNpemUgLyA0LCBhcnJh
eS5kYXRhKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybU1hdHJp
eDJmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgc2l6ZSwgR0NHTGJvb2xlYW4gdHJhbnNw
b3NlLCBjb25zdCBHQ0dMZmxvYXQqIGFycmF5KQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6dW5pZm9ybU1hdHJpeDJmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bv
c2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gYXJyYXkpCiB7Ci0gICAgLy8gRklYTUU6IGxl
bmd0aCBuZWVkcyB0byBiZSBhIG11bHRpcGxlIG9mIDQuCiAgICAgaWYgKCFtYWtlQ29udGV4dEN1
cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZ2w6OlVuaWZvcm1NYXRyaXgyZnYobG9j
YXRpb24sIHNpemUsIHRyYW5zcG9zZSwgYXJyYXkpOworICAgIGdsOjpVbmlmb3JtTWF0cml4MmZ2
KGxvY2F0aW9uLCBhcnJheS5idWZTaXplIC8gNCwgdHJhbnNwb3NlLCBhcnJheS5kYXRhKTsKIH0K
IAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybU1hdHJpeDNmdihHQ0dMaW50
IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgc2l6ZSwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBH
Q0dMZmxvYXQqIGFycmF5KQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybU1h
dHJpeDNmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFu
PGNvbnN0IEdDR0xmbG9hdD4gYXJyYXkpCiB7Ci0gICAgLy8gRklYTUU6IGxlbmd0aCBuZWVkcyB0
byBiZSBhIG11bHRpcGxlIG9mIDkuCisgICAgQVNTRVJUKCEoYXJyYXkuYnVmU2l6ZSAlIDkpKTsK
ICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBn
bDo6VW5pZm9ybU1hdHJpeDNmdihsb2NhdGlvbiwgc2l6ZSwgdHJhbnNwb3NlLCBhcnJheSk7Cisg
ICAgZ2w6OlVuaWZvcm1NYXRyaXgzZnYobG9jYXRpb24sIGFycmF5LmJ1ZlNpemUgLyA5LCB0cmFu
c3Bvc2UsIGFycmF5LmRhdGEpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1
bmlmb3JtTWF0cml4NGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBzaXplLCBHQ0dMYm9v
bGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogYXJyYXkpCit2b2lkIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4NGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29s
ZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiBhcnJheSkKIHsKLSAgICAv
LyBGSVhNRTogbGVuZ3RoIG5lZWRzIHRvIGJlIGEgbXVsdGlwbGUgb2YgMTYuCisgICAgQVNTRVJU
KCEoYXJyYXkuYnVmU2l6ZSAlIDE2KSk7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgZ2w6OlVuaWZvcm1NYXRyaXg0ZnYobG9jYXRpb24sIHNp
emUsIHRyYW5zcG9zZSwgYXJyYXkpOworICAgIGdsOjpVbmlmb3JtTWF0cml4NGZ2KGxvY2F0aW9u
LCBhcnJheS5idWZTaXplIC8gMTYsIHRyYW5zcG9zZSwgYXJyYXkuZGF0YSk7CiB9CiAKIHZvaWQg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVzZVByb2dyYW0oUGxhdGZvcm1HTE9iamVjdCBwcm9n
cmFtKQpAQCAtMTY4MCwxMiArMTc3OCwxMiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
Ojp2ZXJ0ZXhBdHRyaWIxZihHQ0dMdWludCBpbmRleCwgR0NHTGZsb2F0IHYwKQogICAgIGdsOjpW
ZXJ0ZXhBdHRyaWIxZihpbmRleCwgdjApOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjp2ZXJ0ZXhBdHRyaWIxZnYoR0NHTHVpbnQgaW5kZXgsIGNvbnN0IEdDR0xmbG9hdCogYXJy
YXkpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2ZXJ0ZXhBdHRyaWIxZnYoR0NHTHVp
bnQgaW5kZXgsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdCwgMT4gYXJyYXkpCiB7CiAgICAgaWYg
KCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZ2w6OlZlcnRl
eEF0dHJpYjFmdihpbmRleCwgYXJyYXkpOworICAgIGdsOjpWZXJ0ZXhBdHRyaWIxZnYoaW5kZXgs
IGFycmF5LmRhdGEpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2ZXJ0ZXhB
dHRyaWIyZihHQ0dMdWludCBpbmRleCwgR0NHTGZsb2F0IHYwLCBHQ0dMZmxvYXQgdjEpCkBAIC0x
Njk2LDEyICsxNzk0LDEyIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZlcnRleEF0
dHJpYjJmKEdDR0x1aW50IGluZGV4LCBHQ0dMZmxvYXQgdjAsIEdDR0xmCiAgICAgZ2w6OlZlcnRl
eEF0dHJpYjJmKGluZGV4LCB2MCwgdjEpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjp2ZXJ0ZXhBdHRyaWIyZnYoR0NHTHVpbnQgaW5kZXgsIGNvbnN0IEdDR0xmbG9hdCogYXJy
YXkpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2ZXJ0ZXhBdHRyaWIyZnYoR0NHTHVp
bnQgaW5kZXgsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdCwgMj4gYXJyYXkpCiB7CiAgICAgaWYg
KCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZ2w6OlZlcnRl
eEF0dHJpYjJmdihpbmRleCwgYXJyYXkpOworICAgIGdsOjpWZXJ0ZXhBdHRyaWIyZnYoaW5kZXgs
IGFycmF5LmRhdGEpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2ZXJ0ZXhB
dHRyaWIzZihHQ0dMdWludCBpbmRleCwgR0NHTGZsb2F0IHYwLCBHQ0dMZmxvYXQgdjEsIEdDR0xm
bG9hdCB2MikKQEAgLTE3MTIsMTIgKzE4MTAsMTIgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6dmVydGV4QXR0cmliM2YoR0NHTHVpbnQgaW5kZXgsIEdDR0xmbG9hdCB2MCwgR0NHTGYK
ICAgICBnbDo6VmVydGV4QXR0cmliM2YoaW5kZXgsIHYwLCB2MSwgdjIpOwogfQogCi12b2lkIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2ZXJ0ZXhBdHRyaWIzZnYoR0NHTHVpbnQgaW5kZXgsIGNv
bnN0IEdDR0xmbG9hdCogYXJyYXkpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2ZXJ0
ZXhBdHRyaWIzZnYoR0NHTHVpbnQgaW5kZXgsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdCwgMz4g
YXJyYXkpCiB7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgZ2w6OlZlcnRleEF0dHJpYjNmdihpbmRleCwgYXJyYXkpOworICAgIGdsOjpWZXJ0
ZXhBdHRyaWIzZnYoaW5kZXgsIGFycmF5LmRhdGEpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjp2ZXJ0ZXhBdHRyaWI0ZihHQ0dMdWludCBpbmRleCwgR0NHTGZsb2F0IHYwLCBH
Q0dMZmxvYXQgdjEsIEdDR0xmbG9hdCB2MiwgR0NHTGZsb2F0IHYzKQpAQCAtMTcyOCwxMiArMTgy
NiwxMiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2ZXJ0ZXhBdHRyaWI0ZihHQ0dM
dWludCBpbmRleCwgR0NHTGZsb2F0IHYwLCBHQ0dMZgogICAgIGdsOjpWZXJ0ZXhBdHRyaWI0Zihp
bmRleCwgdjAsIHYxLCB2MiwgdjMpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
Ojp2ZXJ0ZXhBdHRyaWI0ZnYoR0NHTHVpbnQgaW5kZXgsIGNvbnN0IEdDR0xmbG9hdCogYXJyYXkp
Cit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2ZXJ0ZXhBdHRyaWI0ZnYoR0NHTHVpbnQg
aW5kZXgsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdCwgND4gYXJyYXkpCiB7CiAgICAgaWYgKCFt
YWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZ2w6OlZlcnRleEF0
dHJpYjRmdihpbmRleCwgYXJyYXkpOworICAgIGdsOjpWZXJ0ZXhBdHRyaWI0ZnYoaW5kZXgsIGFy
cmF5LmRhdGEpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2ZXJ0ZXhBdHRy
aWJQb2ludGVyKEdDR0x1aW50IGluZGV4LCBHQ0dMaW50IHNpemUsIEdDR0xlbnVtIHR5cGUsIEdD
R0xib29sZWFuIG5vcm1hbGl6ZWQsIEdDR0xzaXplaSBzdHJpZGUsIEdDR0xpbnRwdHIgb2Zmc2V0
KQpAQCAtMjAyOSwxNiArMjEyNyw2IEBAIEdDR0xzaXplaXB0ciBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6Z2V0VmVydGV4QXR0cmliT2Zmc2V0KEdDR0x1aW50IGluZGV4LCBHQ0dMCiAgICAgcmV0
dXJuIHN0YXRpY19jYXN0PEdDR0xzaXplaXB0cj4ocmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4o
cG9pbnRlcikpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp0ZXhTdWJJbWFn
ZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2ZmLCBHQ0dMaW50
IHlvZmYsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0
LCBHQ0dMZW51bSB0eXBlLCBjb25zdCB2b2lkKiBwaXhlbHMpCi17Ci0gICAgaWYgKCFtYWtlQ29u
dGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gRklYTUU6IHdlIHdpbGwg
bmVlZCB0byBkZWFsIHdpdGggUGl4ZWxTdG9yZSBwYXJhbXMgd2hlbiBkZWFsaW5nIHdpdGggaW1h
Z2UgYnVmZmVycyB0aGF0IGRpZmZlciBmcm9tIHRoZSBzdWJpbWFnZSBzaXplLgotICAgIGdsOjpU
ZXhTdWJJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIHhvZmYsIHlvZmYsIHdpZHRoLCBoZWlnaHQsIGZv
cm1hdCwgdHlwZSwgcGl4ZWxzKTsKLSAgICBtX3N0YXRlLnRleHR1cmVTZWVkQ291bnQuYWRkKG1f
c3RhdGUuY3VycmVudEJvdW5kVGV4dHVyZSgpKTsKLX0KLQogUGxhdGZvcm1HTE9iamVjdCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6Y3JlYXRlQnVmZmVyKCkKIHsKICAgICBpZiAoIW1ha2VDb250
ZXh0Q3VycmVudCgpKQpAQCAtMjIwMywxNyArMjI5MSw2IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmRpc3BhdGNoQ29udGV4dENoYW5nZWROb3RpZmljYXRpb24oKQogICAgICAgICBj
bGllbnQtPmRpc3BhdGNoQ29udGV4dENoYW5nZWROb3RpZmljYXRpb24oKTsKIH0KIAotdm9pZCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dGV4SW1hZ2UyRERpcmVjdChHQ0dMZW51bSB0YXJnZXQs
IEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgs
IEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xl
bnVtIHR5cGUsIGNvbnN0IHZvaWQqIHBpeGVscykKLXsKLSAgICBpZiAoIW1ha2VDb250ZXh0Q3Vy
cmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoIW1faXNGb3JXZWJHTDIgJiYgbV9l
eHRlbnNpb25zKQotICAgICAgICBpbnRlcm5hbGZvcm1hdCA9IG1fZXh0ZW5zaW9ucy0+YWRqdXN0
V2ViR0wxVGV4dHVyZUludGVybmFsRm9ybWF0KGludGVybmFsZm9ybWF0LCBmb3JtYXQsIHR5cGUp
OwotICAgIGdsOjpUZXhJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0
aCwgaGVpZ2h0LCBib3JkZXIsIGZvcm1hdCwgdHlwZSwgcGl4ZWxzKTsKLSAgICBtX3N0YXRlLnRl
eHR1cmVTZWVkQ291bnQuYWRkKG1fc3RhdGUuY3VycmVudEJvdW5kVGV4dHVyZSgpKTsKLX0KLQog
dm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6ZHJhd0FycmF5c0luc3RhbmNlZChHQ0dMZW51
bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xzaXplaSBwcmltY291
bnQpCiB7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKQEAgLTI0MzYsMjAgKzI1MTMs
MjAgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6ZnJhbWVidWZmZXJUZXh0dXJlTGF5
ZXIoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bQogICAgIGdsOjpGcmFtZWJ1ZmZlclRleHR1cmVM
YXllcih0YXJnZXQsIGF0dGFjaG1lbnQsIHRleHR1cmUsIGxldmVsLCBsYXllcik7CiB9CiAKLXZv
aWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmludmFsaWRhdGVGcmFtZWJ1ZmZlcihHQ0dMZW51
bSB0YXJnZXQsIEdDR0xzaXplaSBudW1BdHRhY2htZW50cywgY29uc3QgR0NHTGVudW0qIGF0dGFj
aG1lbnRzKQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6aW52YWxpZGF0ZUZyYW1lYnVm
ZmVyKEdDR0xlbnVtIHRhcmdldCwgR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+IGF0dGFjaG1lbnRz
KQogewogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIGdsOjpJbnZhbGlkYXRlRnJhbWVidWZmZXIodGFyZ2V0LCBudW1BdHRhY2htZW50cywgYXR0
YWNobWVudHMpOworICAgIGdsOjpJbnZhbGlkYXRlRnJhbWVidWZmZXIodGFyZ2V0LCBhdHRhY2ht
ZW50cy5idWZTaXplLCBhdHRhY2htZW50cy5kYXRhKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6aW52YWxpZGF0ZVN1YkZyYW1lYnVmZmVyKEdDR0xlbnVtIHRhcmdldCwgR0NH
THNpemVpIG51bUF0dGFjaG1lbnRzLCBjb25zdCBHQ0dMZW51bSogYXR0YWNobWVudHMsIEdDR0xp
bnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpCit2b2lk
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjppbnZhbGlkYXRlU3ViRnJhbWVidWZmZXIoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4gYXR0YWNobWVudHMsIEdDR0xpbnQg
eCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpCiB7CiAgICAg
aWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZ2w6Oklu
dmFsaWRhdGVTdWJGcmFtZWJ1ZmZlcih0YXJnZXQsIG51bUF0dGFjaG1lbnRzLCBhdHRhY2htZW50
cywgeCwgeSwgd2lkdGgsIGhlaWdodCk7CisgICAgZ2w6OkludmFsaWRhdGVTdWJGcmFtZWJ1ZmZl
cih0YXJnZXQsIGF0dGFjaG1lbnRzLmJ1ZlNpemUsIGF0dGFjaG1lbnRzLmRhdGEsIHgsIHksIHdp
ZHRoLCBoZWlnaHQpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkQnVm
ZmVyKEdDR0xlbnVtIHNyYykKQEAgLTI1MTcsODQgKzI1OTQsOTMgQEAgdm9pZCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6dW5pZm9ybTR1aShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMdWludCB2MCwg
R0NHTHVpbnQKICAgICBnbDo6VW5pZm9ybTR1aShsb2NhdGlvbiwgdjAsIHYxLCB2MiwgdjMpOwog
fQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMXVpdihHQ0dMaW50IGxv
Y2F0aW9uLCBjb25zdCBHQ0dMdWludCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWlu
dCBzcmNMZW5ndGgpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMXVpdihH
Q0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdWludD4gZGF0YSkKIHsKICAgICBp
ZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBnbDo6VW5p
Zm9ybTF1aXYobG9jYXRpb24sIHNyY0xlbmd0aCwgZGF0YSArIHNyY09mZnNldCk7CisgICAgZ2w6
OlVuaWZvcm0xdWl2KGxvY2F0aW9uLCBkYXRhLmJ1ZlNpemUsIGRhdGEuZGF0YSk7CiB9CiAKLXZv
aWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0ydWl2KEdDR0xpbnQgbG9jYXRpb24s
IGNvbnN0IEdDR0x1aW50KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xl
bmd0aCkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0ydWl2KEdDR0xpbnQg
bG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0x1aW50PiBkYXRhKQogeworICAgIEFTU0VSVCgh
KGRhdGEuYnVmU2l6ZSAlIDIpKTsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBnbDo6VW5pZm9ybTJ1aXYobG9jYXRpb24sIHNyY0xlbmd0aCwg
ZGF0YSArIHNyY09mZnNldCk7CisgICAgZ2w6OlVuaWZvcm0ydWl2KGxvY2F0aW9uLCBkYXRhLmJ1
ZlNpemUgLyAyLCBkYXRhLmRhdGEpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
Ojp1bmlmb3JtM3VpdihHQ0dMaW50IGxvY2F0aW9uLCBjb25zdCBHQ0dMdWludCogZGF0YSwgR0NH
THVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCit2b2lkIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjp1bmlmb3JtM3VpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBH
Q0dMdWludD4gZGF0YSkKIHsKKyAgICBBU1NFUlQoIShkYXRhLmJ1ZlNpemUgJSAzKSk7CiAgICAg
aWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZ2w6OlVu
aWZvcm0zdWl2KGxvY2F0aW9uLCBzcmNMZW5ndGgsIGRhdGEgKyBzcmNPZmZzZXQpOworICAgIGds
OjpVbmlmb3JtM3Vpdihsb2NhdGlvbiwgZGF0YS5idWZTaXplIC8gMywgZGF0YS5kYXRhKTsKIH0K
IAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTR1aXYoR0NHTGludCBsb2Nh
dGlvbiwgY29uc3QgR0NHTHVpbnQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQg
c3JjTGVuZ3RoKQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTR1aXYoR0NH
TGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTHVpbnQ+IGRhdGEpCiB7CisgICAgQVNT
RVJUKCEoZGF0YS5idWZTaXplICUgNCkpOwogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkp
CiAgICAgICAgIHJldHVybjsKIAotICAgIGdsOjpVbmlmb3JtNHVpdihsb2NhdGlvbiwgc3JjTGVu
Z3RoLCBkYXRhICsgc3JjT2Zmc2V0KTsKKyAgICBnbDo6VW5pZm9ybTR1aXYobG9jYXRpb24sIGRh
dGEuYnVmU2l6ZSAvIDQsIGRhdGEuZGF0YSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OnVuaWZvcm1NYXRyaXgyeDNmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0
cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dM
dWludCBzcmNMZW5ndGgpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0
cml4MngzZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bh
bjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEpCiB7CisgICAgQVNTRVJUKCEoZGF0YS5idWZTaXplICUg
NikpOwogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIGdsOjpVbmlmb3JtTWF0cml4MngzZnYobG9jYXRpb24sIHNyY0xlbmd0aCwgdHJhbnNwb3Nl
LCBkYXRhICsgc3JjT2Zmc2V0KTsKKyAgICBnbDo6VW5pZm9ybU1hdHJpeDJ4M2Z2KGxvY2F0aW9u
LCBkYXRhLmJ1ZlNpemUgLyA2LCB0cmFuc3Bvc2UsIGRhdGEuZGF0YSk7CiB9CiAKLXZvaWQgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXgzeDJmdihHQ0dMaW50IGxvY2F0aW9u
LCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQg
c3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjp1bmlmb3JtTWF0cml4M3gyZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJh
bnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEpCiB7CisgICAgQVNTRVJUKCEo
ZGF0YS5idWZTaXplICUgNikpOwogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIGdsOjpVbmlmb3JtTWF0cml4M3gyZnYobG9jYXRpb24sIHNyY0xl
bmd0aCwgdHJhbnNwb3NlLCBkYXRhICsgc3JjT2Zmc2V0KTsKKyAgICBnbDo6VW5pZm9ybU1hdHJp
eDN4MmZ2KGxvY2F0aW9uLCBkYXRhLmJ1ZlNpemUgLyA2LCB0cmFuc3Bvc2UsIGRhdGEuZGF0YSk7
CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXgyeDRmdihH
Q0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCog
ZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCit2b2lkIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4Mng0ZnYoR0NHTGludCBsb2NhdGlvbiwg
R0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEpCiB7
CisgICAgQVNTRVJUKCEoZGF0YS5idWZTaXplICUgOCkpOwogICAgIGlmICghbWFrZUNvbnRleHRD
dXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGdsOjpVbmlmb3JtTWF0cml4Mng0ZnYo
bG9jYXRpb24sIHNyY0xlbmd0aCwgdHJhbnNwb3NlLCBkYXRhICsgc3JjT2Zmc2V0KTsKKyAgICBn
bDo6VW5pZm9ybU1hdHJpeDJ4NGZ2KGxvY2F0aW9uLCBkYXRhLmJ1ZlNpemUgLyA4LCB0cmFuc3Bv
c2UsIGRhdGEuZGF0YSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZv
cm1NYXRyaXg0eDJmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNv
bnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5n
dGgpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4NHgyZnYoR0NH
TGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dM
ZmxvYXQ+IGRhdGEpCiB7CisgICAgQVNTRVJUKCEoZGF0YS5idWZTaXplICUgOCkpOwogICAgIGlm
ICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGdsOjpVbmlm
b3JtTWF0cml4NHgyZnYobG9jYXRpb24sIHNyY0xlbmd0aCwgdHJhbnNwb3NlLCBkYXRhICsgc3Jj
T2Zmc2V0KTsKKyAgICBnbDo6VW5pZm9ybU1hdHJpeDR4MmZ2KGxvY2F0aW9uLCBkYXRhLmJ1ZlNp
emUgLyA4LCB0cmFuc3Bvc2UsIGRhdGEuZGF0YSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXgzeDRmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVh
biB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBH
Q0dMdWludCBzcmNMZW5ndGgpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3Jt
TWF0cml4M3g0ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dM
U3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEpCiB7CisgICAgQVNTRVJUKCEoZGF0YS5idWZTaXpl
ICUgMTIpKTsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47
CiAKLSAgICBnbDo6VW5pZm9ybU1hdHJpeDN4NGZ2KGxvY2F0aW9uLCBzcmNMZW5ndGgsIHRyYW5z
cG9zZSwgZGF0YSArIHNyY09mZnNldCk7CisgICAgZ2w6OlVuaWZvcm1NYXRyaXgzeDRmdihsb2Nh
dGlvbiwgZGF0YS5idWZTaXplIC8gMTIsIHRyYW5zcG9zZSwgZGF0YS5kYXRhKTsKIH0KIAotdm9p
ZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybU1hdHJpeDR4M2Z2KEdDR0xpbnQgbG9j
YXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dM
dWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXg0eDNmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVh
biB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gZGF0YSkKIHsKKyAgICBBU1NF
UlQoIShkYXRhLmJ1ZlNpemUgJSAxMikpOwogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkp
CiAgICAgICAgIHJldHVybjsKIAotICAgIGdsOjpVbmlmb3JtTWF0cml4NHgzZnYobG9jYXRpb24s
IHNyY0xlbmd0aCwgdHJhbnNwb3NlLCBkYXRhICsgc3JjT2Zmc2V0KTsKKyAgICBnbDo6VW5pZm9y
bU1hdHJpeDR4M2Z2KGxvY2F0aW9uLCBkYXRhLmJ1ZlNpemUgLyAxMiwgdHJhbnNwb3NlLCBkYXRh
LmRhdGEpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2ZXJ0ZXhBdHRyaWJJ
NGkoR0NHTHVpbnQgaW5kZXgsIEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMaW50IHosIEdDR0xp
bnQgdykKQEAgLTI2MDUsMTIgKzI2OTEsMTIgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6dmVydGV4QXR0cmliSTRpKEdDR0x1aW50IGluZGV4LCBHQ0dMaW50IHgsIEdDR0xpbnQKICAg
ICBnbDo6VmVydGV4QXR0cmliSTRpKGluZGV4LCB4LCB5LCB6LCB3KTsKIH0KIAotdm9pZCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliSTRpdihHQ0dMdWludCBpbmRleCwgY29u
c3QgR0NHTGludCogdmFsdWVzKQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4
QXR0cmliSTRpdihHQ0dMdWludCBpbmRleCwgR0NHTFNwYW48Y29uc3QgR0NHTGludCwgND4gdmFs
dWVzKQogewogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIGdsOjpWZXJ0ZXhBdHRyaWJJNGl2KGluZGV4LCB2YWx1ZXMpOworICAgIGdsOjpWZXJ0
ZXhBdHRyaWJJNGl2KGluZGV4LCB2YWx1ZXMuZGF0YSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYkk0dWkoR0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50IHgs
IEdDR0x1aW50IHksIEdDR0x1aW50IHosIEdDR0x1aW50IHcpCkBAIC0yNjIxLDEyICsyNzA3LDEy
IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYkk0dWkoR0NHTHVp
bnQgaW5kZXgsIEdDR0x1aW50IHgsIEdDR0x1CiAgICAgZ2w6OlZlcnRleEF0dHJpYkk0dWkoaW5k
ZXgsIHgsIHksIHosIHcpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2ZXJ0
ZXhBdHRyaWJJNHVpdihHQ0dMdWludCBpbmRleCwgY29uc3QgR0NHTHVpbnQqIHZhbHVlcykKK3Zv
aWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYkk0dWl2KEdDR0x1aW50IGlu
ZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdWludCwgND4gdmFsdWVzKQogewogICAgIGlmICghbWFr
ZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGdsOjpWZXJ0ZXhBdHRy
aWJJNHVpdihpbmRleCwgdmFsdWVzKTsKKyAgICBnbDo6VmVydGV4QXR0cmliSTR1aXYoaW5kZXgs
IHZhbHVlcy5kYXRhKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6ZHJhd1Jh
bmdlRWxlbWVudHMoR0NHTGVudW0gbW9kZSwgR0NHTHVpbnQgc3RhcnQsIEdDR0x1aW50IGVuZCwg
R0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCkKQEAgLTI2
MzcsMzYgKzI3MjMsMzYgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6ZHJhd1Jhbmdl
RWxlbWVudHMoR0NHTGVudW0gbW9kZSwgR0NHTHVpbnQgc3RhcnQsIEcKICAgICBnbDo6RHJhd1Jh
bmdlRWxlbWVudHMobW9kZSwgc3RhcnQsIGVuZCwgY291bnQsIHR5cGUsIHJlaW50ZXJwcmV0X2Nh
c3Q8dm9pZCo+KG9mZnNldCkpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpk
cmF3QnVmZmVycyhHQ0dMc2l6ZWkgbiwgY29uc3QgR0NHTGVudW0qIGJ1ZnMpCit2b2lkIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpkcmF3QnVmZmVycyhHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4g
YnVmcykKIHsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47
CiAKLSAgICBnbDo6RHJhd0J1ZmZlcnMobiwgYnVmcyk7CisgICAgZ2w6OkRyYXdCdWZmZXJzKGJ1
ZnMuYnVmU2l6ZSwgYnVmcy5kYXRhKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6Y2xlYXJCdWZmZXJpdihHQ0dMZW51bSBidWZmZXIsIEdDR0xpbnQgZHJhd2J1ZmZlciwgY29u
c3QgR0NHTGludCogdmFsdWVzLCBHQ0dMdWludCBzcmNPZmZzZXQpCit2b2lkIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpjbGVhckJ1ZmZlcml2KEdDR0xlbnVtIGJ1ZmZlciwgR0NHTGludCBkcmF3
YnVmZmVyLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50PiB2YWx1ZXMpCiB7CiAgICAgaWYgKCFtYWtl
Q29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZ2w6OkNsZWFyQnVmZmVy
aXYoYnVmZmVyLCBkcmF3YnVmZmVyLCB2YWx1ZXMgKyBzcmNPZmZzZXQpOworICAgIGdsOjpDbGVh
ckJ1ZmZlcml2KGJ1ZmZlciwgZHJhd2J1ZmZlciwgdmFsdWVzLmRhdGEpOwogfQogCi12b2lkIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjbGVhckJ1ZmZlcnVpdihHQ0dMZW51bSBidWZmZXIsIEdD
R0xpbnQgZHJhd2J1ZmZlciwgY29uc3QgR0NHTHVpbnQqIHZhbHVlcywgR0NHTHVpbnQgc3JjT2Zm
c2V0KQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y2xlYXJCdWZmZXJ1aXYoR0NHTGVu
dW0gYnVmZmVyLCBHQ0dMaW50IGRyYXdidWZmZXIsIEdDR0xTcGFuPGNvbnN0IEdDR0x1aW50PiB2
YWx1ZXMpCiB7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgZ2w6OkNsZWFyQnVmZmVydWl2KGJ1ZmZlciwgZHJhd2J1ZmZlciwgdmFsdWVzICsg
c3JjT2Zmc2V0KTsKKyAgICBnbDo6Q2xlYXJCdWZmZXJ1aXYoYnVmZmVyLCBkcmF3YnVmZmVyLCB2
YWx1ZXMuZGF0YSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNsZWFyQnVm
ZmVyZnYoR0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50IGRyYXdidWZmZXIsIGNvbnN0IEdDR0xmbG9h
dCogdmFsdWVzLCBHQ0dMdWludCBzcmNPZmZzZXQpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpjbGVhckJ1ZmZlcmZ2KEdDR0xlbnVtIGJ1ZmZlciwgR0NHTGludCBkcmF3YnVmZmVyLCBH
Q0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IHZhbHVlcykKIHsKICAgICBpZiAoIW1ha2VDb250ZXh0
Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBnbDo6Q2xlYXJCdWZmZXJmdihidWZm
ZXIsIGRyYXdidWZmZXIsIHZhbHVlcyArIHNyY09mZnNldCk7CisgICAgZ2w6OkNsZWFyQnVmZmVy
ZnYoYnVmZmVyLCBkcmF3YnVmZmVyLCB2YWx1ZXMuZGF0YSk7CiB9CiAKIHZvaWQgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OmNsZWFyQnVmZmVyZmkoR0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50IGRy
YXdidWZmZXIsIEdDR0xmbG9hdCBkZXB0aCwgR0NHTGludCBzdGVuY2lsKQpAQCAtMjg1NCw5NCAr
Mjk0MCw2IEBAIFZlY3RvcjxHQ0dMdWludD4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFVu
aWZvcm1JbmRpY2VzKFBsYXRmb3JtR0xPYmplY3QgcHJvCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0K
IAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTFmdihHQ0dMaW50IGxvY2F0
aW9uLCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQg
c3JjTGVuZ3RoKQotewotICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIGdsOjpVbmlmb3JtMWZ2KGxvY2F0aW9uLCBzcmNMZW5ndGgsIGRhdGEgKyBz
cmNPZmZzZXQpOwotfQotCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMmZ2
KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zm
c2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCi17Ci0gICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQo
KSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OlVuaWZvcm0yZnYobG9jYXRpb24sIHNyY0xl
bmd0aCwgZGF0YSArIHNyY09mZnNldCk7Ci19Ci0KLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OnVuaWZvcm0zZnYoR0NHTGludCBsb2NhdGlvbiwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBH
Q0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKLXsKLSAgICBpZiAoIW1ha2VD
b250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6VW5pZm9ybTNmdihs
b2NhdGlvbiwgc3JjTGVuZ3RoLCBkYXRhICsgc3JjT2Zmc2V0KTsKLX0KLQotdm9pZCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTRmdihHQ0dMaW50IGxvY2F0aW9uLCBjb25zdCBHQ0dM
ZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQotewot
ICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGds
OjpVbmlmb3JtNGZ2KGxvY2F0aW9uLCBzcmNMZW5ndGgsIGRhdGEgKyBzcmNPZmZzZXQpOwotfQot
Ci12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMWl2KEdDR0xpbnQgbG9jYXRp
b24sIGNvbnN0IEdDR0xpbnQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3Jj
TGVuZ3RoKQotewotICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIGdsOjpVbmlmb3JtMWl2KGxvY2F0aW9uLCBzcmNMZW5ndGgsIGRhdGEgKyBzcmNP
ZmZzZXQpOwotfQotCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMml2KEdD
R0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0xpbnQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwg
R0NHTHVpbnQgc3JjTGVuZ3RoKQotewotICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIGdsOjpVbmlmb3JtMml2KGxvY2F0aW9uLCBzcmNMZW5ndGgs
IGRhdGEgKyBzcmNPZmZzZXQpOwotfQotCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1
bmlmb3JtM2l2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0xpbnQqIGRhdGEsIEdDR0x1aW50
IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQotewotICAgIGlmICghbWFrZUNvbnRleHRD
dXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpVbmlmb3JtM2l2KGxvY2F0aW9u
LCBzcmNMZW5ndGgsIGRhdGEgKyBzcmNPZmZzZXQpOwotfQotCi12b2lkIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjp1bmlmb3JtNGl2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0xpbnQqIGRh
dGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQotewotICAgIGlmICgh
bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpVbmlmb3Jt
NGl2KGxvY2F0aW9uLCBzcmNMZW5ndGgsIGRhdGEgKyBzcmNPZmZzZXQpOwotfQotCi12b2lkIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4MmZ2KEdDR0xpbnQgbG9jYXRpb24s
IEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBz
cmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKLXsKLSAgICBpZiAoIW1ha2VDb250ZXh0Q3Vy
cmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6VW5pZm9ybU1hdHJpeDJmdihsb2Nh
dGlvbiwgc3JjTGVuZ3RoLCB0cmFuc3Bvc2UsIGRhdGEgKyBzcmNPZmZzZXQpOwotfQotCi12b2lk
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4M2Z2KEdDR0xpbnQgbG9jYXRp
b24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWlu
dCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKLXsKLSAgICBpZiAoIW1ha2VDb250ZXh0
Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6VW5pZm9ybU1hdHJpeDNmdihs
b2NhdGlvbiwgc3JjTGVuZ3RoLCB0cmFuc3Bvc2UsIGRhdGEgKyBzcmNPZmZzZXQpOwotfQotCi12
b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4NGZ2KEdDR0xpbnQgbG9j
YXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dM
dWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKLXsKLSAgICBpZiAoIW1ha2VDb250
ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6VW5pZm9ybU1hdHJpeDRm
dihsb2NhdGlvbiwgc3JjTGVuZ3RoLCB0cmFuc3Bvc2UsIGRhdGEgKyBzcmNPZmZzZXQpOwotfQot
CiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRBY3RpdmVVbmlmb3JtQmxvY2tpdihH
Q0dMdWludCBwcm9ncmFtLCBHQ0dMdWludCB1bmlmb3JtQmxvY2tJbmRleCwgR0NHTGVudW0gcG5h
bWUsIEdDR0xTcGFuPEdDR0xpbnQ+IHBhcmFtcykKIHsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3Vy
cmVudCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3Yv
R3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2N2L0dyYXBoaWNzQ29udGV4dEdMQ1ZBTkdMRS5jcHAKaW5kZXggZjliZmNhM2M0OGNl
MjhlYWIxOTQ0YTRmNWU4NTMwYTQyNWY4NjJmZS4uMDM0ODA2YThiY2RhMjI5YmM2YTgwODc5MzRh
MTAzMDMyNDYxZjEwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY3YvR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jdi9HcmFwaGljc0NvbnRleHRHTENWQU5HTEUuY3BwCkBAIC0yMzUs
MTggKzIzNSwxMyBAQCBzdHJ1Y3QgR0xmbG9hdENvbG9ycyB7CiB9OwogCiBzdHJ1Y3QgWUNiQ3JN
YXRyaXggewotICAgIHVuaW9uIHsKICAgICAgICAgR0xmbG9hdCByb3dzWzRdWzRdOwotICAgICAg
ICBHTGZsb2F0IGRhdGFbMTZdOwotICAgIH07CiAKICAgICBjb25zdGV4cHIgWUNiQ3JNYXRyaXgo
UGl4ZWxSYW5nZSwgR0xmbG9hdCBjYkNvZWZmaWNpZW50LCBHTGZsb2F0IGNyQ29lZmZpY2llbnQp
OwogCi0gICAgb3BlcmF0b3IgVmVjdG9yPEdMZmxvYXQ+KCkgY29uc3QKKyAgICBvcGVyYXRvciBH
Q0dMU3Bhbjxjb25zdCBHTGZsb2F0LCAxNj4oKSBjb25zdAogICAgIHsKLSAgICAgICAgVmVjdG9y
PEdMZmxvYXQ+IHZlY3RvcjsKLSAgICAgICAgdmVjdG9yLmFwcGVuZChkYXRhLCAxNik7Ci0gICAg
ICAgIHJldHVybiB2ZWN0b3I7CisgICAgICAgIHJldHVybiBtYWtlR0NHTFNwYW48MTY+KCZyb3dz
WzBdWzBdKTsKICAgICB9CiAKICAgICBjb25zdGV4cHIgR0xmbG9hdENvbG9yIG9wZXJhdG9yKihj
b25zdCBHTGZsb2F0Q29sb3ImKSBjb25zdDsKQEAgLTMxOCwxMCArMzEzLDEwIEBAIGNvbnN0ZXhw
ciBHTGZsb2F0Q29sb3IgWUNiQ3JNYXRyaXg6Om9wZXJhdG9yKihjb25zdCBHTGZsb2F0Q29sb3Im
IGNvbG9yKSBjb25zdAogICAgICk7CiB9CiAKLXN0YXRpYyBjb25zdCBWZWN0b3I8R0xmbG9hdD4g
WUNiQ3JUb1JHQk1hdHJpeEZvclJhbmdlQW5kVHJhbnNmZXJGdW5jdGlvbihQaXhlbFJhbmdlIHJh
bmdlLCBUcmFuc2ZlckZ1bmN0aW9uQ1YgdHJhbnNmZXJGdW5jdGlvbikKK3N0YXRpYyBHQ0dMU3Bh
bjxjb25zdCBHTGZsb2F0LCAxNj4gWUNiQ3JUb1JHQk1hdHJpeEZvclJhbmdlQW5kVHJhbnNmZXJG
dW5jdGlvbihQaXhlbFJhbmdlIHJhbmdlLCBUcmFuc2ZlckZ1bmN0aW9uQ1YgdHJhbnNmZXJGdW5j
dGlvbikKIHsKICAgICB1c2luZyBNYXBLZXkgPSBzdGQ6OnBhaXI8UGl4ZWxSYW5nZSwgVHJhbnNm
ZXJGdW5jdGlvbkNWPjsKLSAgICB1c2luZyBNYXRyaXhNYXAgPSBTdGRNYXA8TWFwS2V5LCBWZWN0
b3I8R0xmbG9hdD4+OworICAgIHVzaW5nIE1hdHJpeE1hcCA9IFN0ZE1hcDxNYXBLZXksIGNvbnN0
IFlDYkNyTWF0cml4Jj47CiAKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8TWF0cml4TWFwPiBt
YXRyaWNlczsKICAgICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90IG9uY2VUb2tlbjsKQEAgLTUyNiw3
ICs1MjEsNyBAQCBib29sIEdyYXBoaWNzQ29udGV4dEdMQ1ZBTkdMRTo6aW5pdGlhbGl6ZVVWQ29u
dGV4dE9iamVjdHMoKQogICAgIGZsb2F0IHZlcnRpY2VzWzEyXSA9IHsgLTEsIC0xLCAxLCAtMSwg
MSwgMSwgMSwgMSwgLTEsIDEsIC0xLCAtMSB9OwogCiAgICAgbV9jb250ZXh0LT5iaW5kQnVmZmVy
KEdyYXBoaWNzQ29udGV4dEdMOjpBUlJBWV9CVUZGRVIsIG1feXV2VmVydGV4QnVmZmVyKTsKLSAg
ICBtX2NvbnRleHQtPmJ1ZmZlckRhdGEoR3JhcGhpY3NDb250ZXh0R0w6OkFSUkFZX0JVRkZFUiwg
c2l6ZW9mKHZlcnRpY2VzKSwgdmVydGljZXMsIEdyYXBoaWNzQ29udGV4dEdMOjpTVEFUSUNfRFJB
Vyk7CisgICAgbV9jb250ZXh0LT5idWZmZXJEYXRhKEdyYXBoaWNzQ29udGV4dEdMOjpBUlJBWV9C
VUZGRVIsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPih2ZXJ0aWNlcywgc2l6ZW9mKHZlcnRpY2Vz
KSksIEdyYXBoaWNzQ29udGV4dEdMOjpTVEFUSUNfRFJBVyk7CiAgICAgbV9jb250ZXh0LT5lbmFi
bGVWZXJ0ZXhBdHRyaWJBcnJheShtX3l1dlBvc2l0aW9uQXR0cmlidXRlTG9jYXRpb24pOwogICAg
IG1fY29udGV4dC0+dmVydGV4QXR0cmliUG9pbnRlcihtX3l1dlBvc2l0aW9uQXR0cmlidXRlTG9j
YXRpb24sIDIsIEdyYXBoaWNzQ29udGV4dEdMOjpGTE9BVCwgZmFsc2UsIDAsIDApOwogCkBAIC02
MjUsNyArNjIwLDcgQEAgYm9vbCBHcmFwaGljc0NvbnRleHRHTENWQU5HTEU6OmNvcHlQaXhlbEJ1
ZmZlclRvVGV4dHVyZShDVlBpeGVsQnVmZmVyUmVmIGltYWdlLAogICAgIG1fY29udGV4dC0+dGV4
UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0
R0w6OlRFWFRVUkVfTUlOX0ZJTFRFUiwgR3JhcGhpY3NDb250ZXh0R0w6OkxJTkVBUik7CiAgICAg
bV9jb250ZXh0LT50ZXhQYXJhbWV0ZXJpKEdyYXBoaWNzQ29udGV4dEdMOjpURVhUVVJFXzJELCBH
cmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV9XUkFQX1MsIEdyYXBoaWNzQ29udGV4dEdMOjpDTEFN
UF9UT19FREdFKTsKICAgICBtX2NvbnRleHQtPnRleFBhcmFtZXRlcmkoR3JhcGhpY3NDb250ZXh0
R0w6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4dEdMOjpURVhUVVJFX1dSQVBfVCwgR3JhcGhp
Y3NDb250ZXh0R0w6OkNMQU1QX1RPX0VER0UpOwotICAgIG1fY29udGV4dC0+dGV4SW1hZ2UyRERp
cmVjdChHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV8yRCwgbGV2ZWwsIGludGVybmFsRm9ybWF0
LCB3aWR0aCwgaGVpZ2h0LCAwLCBmb3JtYXQsIHR5cGUsIG51bGxwdHIpOworICAgIGdsOjpUZXhJ
bWFnZTJEKEdMX1RFWFRVUkVfMkQsIGxldmVsLCBpbnRlcm5hbEZvcm1hdCwgd2lkdGgsIGhlaWdo
dCwgMCwgZm9ybWF0LCB0eXBlLCBudWxscHRyKTsKIAogICAgIG1fY29udGV4dC0+ZnJhbWVidWZm
ZXJUZXh0dXJlMkQoR3JhcGhpY3NDb250ZXh0R0w6OkZSQU1FQlVGRkVSLCBHcmFwaGljc0NvbnRl
eHRHTDo6Q09MT1JfQVRUQUNITUVOVDAsIEdyYXBoaWNzQ29udGV4dEdMOjpURVhUVVJFXzJELCBv
dXRwdXRUZXh0dXJlLCBsZXZlbCk7CiAgICAgR0NHTGVudW0gc3RhdHVzID0gbV9jb250ZXh0LT5j
aGVja0ZyYW1lYnVmZmVyU3RhdHVzKEdyYXBoaWNzQ29udGV4dEdMOjpGUkFNRUJVRkZFUik7CkBA
IC02ODIsOCArNjc3LDggQEAgYm9vbCBHcmFwaGljc0NvbnRleHRHTENWQU5HTEU6OmNvcHlQaXhl
bEJ1ZmZlclRvVGV4dHVyZShDVlBpeGVsQnVmZmVyUmVmIGltYWdlLAogCiAgICAgYXV0byByYW5n
ZSA9IHBpeGVsUmFuZ2VGcm9tUGl4ZWxGb3JtYXQocGl4ZWxGb3JtYXQpOwogICAgIGF1dG8gdHJh
bnNmZXJGdW5jdGlvbiA9IHRyYW5zZmVyRnVuY3Rpb25Gcm9tU3RyaW5nKChDRlN0cmluZ1JlZilD
VkJ1ZmZlckdldEF0dGFjaG1lbnQoaW1hZ2UsIGtDVkltYWdlQnVmZmVyWUNiQ3JNYXRyaXhLZXks
IG5pbCkpOwotICAgIGF1dG8mIGNvbG9yTWF0cml4ID0gWUNiQ3JUb1JHQk1hdHJpeEZvclJhbmdl
QW5kVHJhbnNmZXJGdW5jdGlvbihyYW5nZSwgdHJhbnNmZXJGdW5jdGlvbik7Ci0gICAgbV9jb250
ZXh0LT51bmlmb3JtTWF0cml4NGZ2KG1fY29sb3JNYXRyaXhVbmlmb3JtTG9jYXRpb24sIDEsIEdM
X0ZBTFNFLCBjb2xvck1hdHJpeC5kYXRhKCkpOworICAgIGF1dG8gY29sb3JNYXRyaXggPSBZQ2JD
clRvUkdCTWF0cml4Rm9yUmFuZ2VBbmRUcmFuc2ZlckZ1bmN0aW9uKHJhbmdlLCB0cmFuc2ZlckZ1
bmN0aW9uKTsKKyAgICBtX2NvbnRleHQtPnVuaWZvcm1NYXRyaXg0ZnYobV9jb2xvck1hdHJpeFVu
aWZvcm1Mb2NhdGlvbiwgR0xfRkFMU0UsIGNvbG9yTWF0cml4KTsKIAogICAgIC8vIERvIHRoZSBh
Y3R1YWwgZHJhd2luZy4KICAgICBtX2NvbnRleHQtPmRyYXdBcnJheXMoR3JhcGhpY3NDb250ZXh0
R0w6OlRSSUFOR0xFUywgMCwgNik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuY3BwCmluZGV4IDE3
Nzg2YTY0YmE0ZTFkYTAwOTY0ZWFlOTk3ZDI5Mjc2NGRhZDE4OTYuLjdlYzgxY2Y0YWU1NzcyY2Fl
OTcyODhiYzgwZTM2NTY0NmQ2MjdjN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuY3BwCkBA
IC0yMDgsMTQgKzIwOCwxNCBAQCBib29sIEV4dGVuc2lvbnNHTE9wZW5HTDo6c3VwcG9ydHNFeHRl
bnNpb24oY29uc3QgU3RyaW5nJiBuYW1lKQogICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lv
bnMuY29udGFpbnMobmFtZSk7CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMOjpkcmF3QnVm
ZmVyc0VYVChHQ0dMc2l6ZWkgbiwgY29uc3QgR0NHTGVudW0qIGJ1ZnMpCit2b2lkIEV4dGVuc2lv
bnNHTE9wZW5HTDo6ZHJhd0J1ZmZlcnNFWFQoR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+IGJ1ZnMp
CiB7CiAgICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICBy
ZXR1cm47CiAKICAgICAvLyAgRklYTUU6IGltcGxlbWVudCBzdXBwb3J0IGZvciBvdGhlciBwbGF0
Zm9ybXMuCiAjaWYgUExBVEZPUk0oR1RLKQotICAgIDo6Z2xEcmF3QnVmZmVycyhuLCBidWZzKTsK
KyAgICA6OmdsRHJhd0J1ZmZlcnMoYnVmcy5idWZTaXplLCBidWZzLmRhdGEpOwogI2Vsc2UKICAg
ICBVTlVTRURfUEFSQU0obik7CiAgICAgVU5VU0VEX1BBUkFNKGJ1ZnMpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5H
TC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNH
TE9wZW5HTC5oCmluZGV4IGQzYmU4Y2MyOGMxN2MyZGY1ZDNiNDg2NmJiM2M1Zjk0NGM0NTVmMjEu
LjQ5NjI4OWNlYTBlNmEwOWQ2ZGI3MzFmODY4YjU0OTkzYTQ0NDQ5YTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9u
c0dMT3BlbkdMLmgKQEAgLTUwLDcgKzUwLDcgQEAgcHVibGljOgogICAgIHZvaWQgaW5zZXJ0RXZl
bnRNYXJrZXJFWFQoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBwdXNoR3JvdXBN
YXJrZXJFWFQoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBwb3BHcm91cE1hcmtl
ckVYVCh2b2lkKSBvdmVycmlkZTsKLSAgICB2b2lkIGRyYXdCdWZmZXJzRVhUKEdDR0xzaXplaSwg
Y29uc3QgR0NHTGVudW0qKSBvdmVycmlkZTsKKyAgICB2b2lkIGRyYXdCdWZmZXJzRVhUKEdDR0xT
cGFuPGNvbnN0IEdDR0xlbnVtPikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGRyYXdBcnJheXNJbnN0
YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHNpemVpIGNvdW50LCBHQ0dM
c2l6ZWkgcHJpbWNvdW50KSBvdmVycmlkZTsKICAgICB2b2lkIGRyYXdFbGVtZW50c0luc3RhbmNl
ZChHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIGxvbmcgbG9u
ZyBvZmZzZXQsIEdDR0xzaXplaSBwcmltY291bnQpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENv
bW1vbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5z
aW9uc0dMT3BlbkdMQ29tbW9uLmNwcAppbmRleCA2ODZmMmQ1MTE0OGVmOWIxMmZlZjEwYjNjMmFj
NzBiMmEzNWQyMTU3Li40M2I1MTYxZmJhNzc4ZjhmYjQzODRiMWJjMmRiMzhlY2Y2YzQ4M2ViIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5z
aW9uc0dMT3BlbkdMQ29tbW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmNwcApAQCAtMjU5LDExICsyNTks
NiBAQCB2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6cmVhZFBpeGVsc1JvYnVzdEFOR0xF
KGludCwgaW50LCBHQ0dMc2l6ZWksIEdDR0xzaQogICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdM
RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwogfQogCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5H
TENvbW1vbjo6dGV4SW1hZ2UyRFJvYnVzdEFOR0xFKEdDR0xlbnVtLCBpbnQsIGludCwgR0NHTHNp
emVpLCBHQ0dMc2l6ZWksIGludCwgR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIGNvbnN0
IHZvaWQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURf
T1BFUkFUSU9OKTsKLX0KLQogdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OnRleFBhcmFt
ZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIGNvbnN0IEdD
R0xmbG9hdCAqKQogewogICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJ
RF9PUEVSQVRJT04pOwpAQCAtMjc0LDQyICsyNjksNiBAQCB2b2lkIEV4dGVuc2lvbnNHTE9wZW5H
TENvbW1vbjo6dGV4UGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSwgR0NHTGVudW0sIEdD
RwogICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04p
OwogfQogCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6dGV4U3ViSW1hZ2UyRFJvYnVz
dEFOR0xFKEdDR0xlbnVtLCBpbnQsIGludCwgaW50LCBHQ0dMc2l6ZWksIEdDR0xzaXplaSwgR0NH
TGVudW0sIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIGNvbnN0IHZvaWQgKikKLXsKLSAgICBtX2NvbnRl
eHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBF
eHRlbnNpb25zR0xPcGVuR0xDb21tb246OmNvbXByZXNzZWRUZXhJbWFnZTJEUm9idXN0QU5HTEUo
R0NHTGVudW0sIGludCwgR0NHTGVudW0sIEdDR0xzaXplaSwgR0NHTHNpemVpLCBpbnQsIEdDR0xz
aXplaSwgR0NHTHNpemVpLCBjb25zdCB2b2lkKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNp
emVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xP
cGVuR0xDb21tb246OmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEUm9idXN0QU5HTEUoR0NHTGVudW0s
IGludCwgaW50LCBpbnQsIEdDR0xzaXplaSwgR0NHTHNpemVpLCBHQ0dMZW51bSwgR0NHTHNpemVp
LCBHQ0dMc2l6ZWksIGNvbnN0IHZvaWQqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdM
RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5H
TENvbW1vbjo6Y29tcHJlc3NlZFRleEltYWdlM0RSb2J1c3RBTkdMRShHQ0dMZW51bSwgaW50LCBH
Q0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSwgaW50LCBHQ0dMc2l6ZWks
IEdDR0xzaXplaSwgY29uc3Qgdm9pZCopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xF
cnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdM
Q29tbW9uOjpjb21wcmVzc2VkVGV4U3ViSW1hZ2UzRFJvYnVzdEFOR0xFKEdDR0xlbnVtLCBpbnQs
IGludCwgaW50LCBpbnQsIEdDR0xzaXplaSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWksIEdDR0xlbnVt
LCBHQ0dMc2l6ZWksIEdDR0xzaXplaSwgY29uc3Qgdm9pZCopCi17Ci0gICAgbV9jb250ZXh0LT5z
eW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLQotdm9pZCBFeHRl
bnNpb25zR0xPcGVuR0xDb21tb246OnRleEltYWdlM0RSb2J1c3RBTkdMRShHQ0dMZW51bSwgaW50
LCBpbnQsIEdDR0xzaXplaSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWksIGludCwgR0NHTGVudW0sIEdD
R0xlbnVtLCBHQ0dMc2l6ZWksIGNvbnN0IHZvaWQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRo
ZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25z
R0xPcGVuR0xDb21tb246OnRleFN1YkltYWdlM0RSb2J1c3RBTkdMRShHQ0dMZW51bSwgaW50LCBp
bnQsIGludCwgaW50LCBHQ0dMc2l6ZWksIEdDR0xzaXplaSwgR0NHTHNpemVpLCBHQ0dMZW51bSwg
R0NHTGVudW0sIEdDR0xzaXplaSwgY29uc3Qgdm9pZCAqKQotewotICAgIG1fY29udGV4dC0+c3lu
dGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCiB2b2lkIEV4dGVuc2lv
bnNHTE9wZW5HTENvbW1vbjo6Z2V0UXVlcnlpdlJvYnVzdEFOR0xFKEdDR0xlbnVtLCBHQ0dMZW51
bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NHTGludCAqKQogewogICAgIG1fY29udGV4dC0+
c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENv
bW1vbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lv
bnNHTE9wZW5HTENvbW1vbi5oCmluZGV4IDk3ZWVkZmI3NDg1YzgzMmY3OTNjOGNmZjBmYTE3ZmJm
ZmJlNjU4OGQuLmJmZTQ1MjE1NDNmZjRiMjcyMTM3ZjM0NGNlZTRhMjJkOGZiMjhjNjQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25z
R0xPcGVuR0xDb21tb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmgKQEAgLTUwLDcgKzUwLDcgQEAgcHVibGlj
OgogICAgIEdDR0xib29sZWFuIGlzVmVydGV4QXJyYXlPRVMoUGxhdGZvcm1HTE9iamVjdCkgb3Zl
cnJpZGUgPSAwOwogICAgIHZvaWQgYmluZFZlcnRleEFycmF5T0VTKFBsYXRmb3JtR0xPYmplY3Qp
IG92ZXJyaWRlID0gMDsKIAotICAgIHZvaWQgZHJhd0J1ZmZlcnNFWFQoR0NHTHNpemVpLCBjb25z
dCBHQ0dMZW51bSopIG92ZXJyaWRlID0gMDsKKyAgICB2b2lkIGRyYXdCdWZmZXJzRVhUKEdDR0xT
cGFuPGNvbnN0IEdDR0xlbnVtPikgb3ZlcnJpZGUgPSAwOwogCiAgICAgU3RyaW5nIGdldFRyYW5z
bGF0ZWRTaGFkZXJTb3VyY2VBTkdMRShQbGF0Zm9ybUdMT2JqZWN0KSBvdmVycmlkZTsKIApAQCAt
NzAsMTcgKzcwLDggQEAgcHVibGljOgogCiAgICAgLy8gR0xfQU5HTEVfcm9idXN0X2NsaWVudF9t
ZW1vcnkKICAgICB2b2lkIHJlYWRQaXhlbHNSb2J1c3RBTkdMRShpbnQgeCwgaW50IHksIEdDR0xz
aXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0
eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xzaXplaSAqY29s
dW1ucywgR0NHTHNpemVpICpyb3dzLCB2b2lkICpwaXhlbHMpIG92ZXJyaWRlOwotICAgIHZvaWQg
dGV4SW1hZ2UyRFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgaW50IGxldmVsLCBpbnQgaW50
ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgaW50IGJvcmRl
ciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29u
c3Qgdm9pZCAqcGl4ZWxzKSBvdmVycmlkZTsKICAgICB2b2lkIHRleFBhcmFtZXRlcmZ2Um9idXN0
QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUs
IGNvbnN0IEdDR0xmbG9hdCAqcGFyYW1zKSBvdmVycmlkZTsKICAgICB2b2lkIHRleFBhcmFtZXRl
cml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCB0ZXhT
dWJJbWFnZTJEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWwsIGludCB4b2Zm
c2V0LCBpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dM
ZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCB2b2lk
ICpwaXhlbHMpIG92ZXJyaWRlOwotICAgIHZvaWQgY29tcHJlc3NlZFRleEltYWdlMkRSb2J1c3RB
TkdMRShHQ0dMZW51bSB0YXJnZXQsIGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQs
IEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgaW50IGJvcmRlciwgR0NHTHNpemVp
IGltYWdlU2l6ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IHZvaWQqIGRhdGEpIG92ZXJyaWRl
OwotICAgIHZvaWQgY29tcHJlc3NlZFRleFN1YkltYWdlMkRSb2J1c3RBTkdMRShHQ0dMZW51bSB0
YXJnZXQsIGludCBsZXZlbCwgaW50IHhvZmZzZXQsIGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lk
dGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTHNpemVpIGltYWdlU2l6
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IHZvaWQqIGRhdGEpIG92ZXJyaWRlOwotICAgIHZv
aWQgY29tcHJlc3NlZFRleEltYWdlM0RSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIGludCBs
ZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVp
IGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBpbnQgYm9yZGVyLCBHQ0dMc2l6ZWkgaW1hZ2VTaXpl
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3Qgdm9pZCogZGF0YSkgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCBjb21wcmVzc2VkVGV4U3ViSW1hZ2UzRFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgaW50
IGxldmVsLCBpbnQgeG9mZnNldCwgaW50IHlvZmZzZXQsIGludCB6b2Zmc2V0LCBHQ0dMc2l6ZWkg
d2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGVudW0gZm9ybWF0
LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3Qgdm9pZCogZGF0
YSkgb3ZlcnJpZGU7Ci0KLSAgICB2b2lkIHRleEltYWdlM0RSb2J1c3RBTkdMRShHQ0dMZW51bSB0
YXJnZXQsIGludCBsZXZlbCwgaW50IGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdD
R0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgaW50IGJvcmRlciwgR0NHTGVudW0gZm9y
bWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3Qgdm9pZCAqcGl4ZWxz
KSBvdmVycmlkZTsKLSAgICB2b2lkIHRleFN1YkltYWdlM0RSb2J1c3RBTkdMRShHQ0dMZW51bSB0
YXJnZXQsIGludCBsZXZlbCwgaW50IHhvZmZzZXQsIGludCB5b2Zmc2V0LCBpbnQgem9mZnNldCwg
R0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xl
bnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IHZvaWQg
KnBpeGVscykgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRRdWVyeWl2Um9idXN0QU5HTEUoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAq
bGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0UXVlcnlPYmpl
Y3R1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBi
dWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFtcykgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBnZXRCdWZmZXJQb2ludGVydlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NH
TGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgdm9pZCAq
KnBhcmFtcykgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmNwcAppbmRleCBk
MjhmNGEwMzFlYmRjNDgzODc1ZDM5ODQ4N2Q1Nzg3NDhmZGU0N2U3Li4zNmMzZWYzOGY5OGI5OWFm
MDExNTA2OTkxNDI3YmFjZWZjYmI4YWMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5j
cHAKQEAgLTE4MCw3ICsxODAsNyBAQCB2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTEVTOjpiaW5kVmVy
dGV4QXJyYXlPRVMoUGxhdGZvcm1HTE9iamVjdCBhcnJheSkKICAgICAgICAgbV9jb250ZXh0LT5z
eW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CiB9CiAKLXZvaWQgRXh0ZW5z
aW9uc0dMT3BlbkdMRVM6OmRyYXdCdWZmZXJzRVhUKEdDR0xzaXplaSAvKiBuICovLCBjb25zdCBH
Q0dMZW51bSogLyogYnVmcyAqLykKK3ZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMRVM6OmRyYXdCdWZm
ZXJzRVhUKEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVtPiAvKiBidWZzICovKQogewogICAgIC8vIEZJ
WE1FOiBpbXBsZW1lbnQgdGhlIHN1cHBvcnQuCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25z
R0xPcGVuR0xFUy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4
dGVuc2lvbnNHTE9wZW5HTEVTLmgKaW5kZXggYzc0ODI1YzgxZWFkMGE3NDYwYWVhMWRhZjFjOWFl
MTgzNzAyOTM5Ni4uMDE3YTQ1YjczOThkMDk5MmVkMTQ3NjdmMDc2N2UwNGI0NjQxNjI4MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lv
bnNHTE9wZW5HTEVTLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmgKQEAgLTg1LDcgKzg1LDcgQEAgcHVibGljOgogICAg
IHZvaWQgZGVsZXRlVmVydGV4QXJyYXlPRVMoUGxhdGZvcm1HTE9iamVjdCkgb3ZlcnJpZGU7CiAg
ICAgR0NHTGJvb2xlYW4gaXNWZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybUdMT2JqZWN0KSBvdmVycmlk
ZTsKICAgICB2b2lkIGJpbmRWZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybUdMT2JqZWN0KSBvdmVycmlk
ZTsKLSAgICB2b2lkIGRyYXdCdWZmZXJzRVhUKEdDR0xzaXplaSwgY29uc3QgR0NHTGVudW0qKSBv
dmVycmlkZTsKKyAgICB2b2lkIGRyYXdCdWZmZXJzRVhUKEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVt
Pikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGRyYXdBcnJheXNJbnN0YW5jZWQoR0NHTGVudW0gbW9k
ZSwgR0NHTGludCBmaXJzdCwgR0NHTHNpemVpIGNvdW50LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSBv
dmVycmlkZTsKICAgICB2b2lkIGRyYXdFbGVtZW50c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBH
Q0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIGxvbmcgbG9uZyBvZmZzZXQsIEdDR0xzaXpl
aSBwcmltY291bnQpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5j
cHAKaW5kZXggZjE1YjdmMjk1YTk1MWIyZDg5NGVjMGZhOTE5NTRlOTZmNDdhNGMxMy4uODQyYjZh
YmY3YjY2YTUxODk5ZmVmMjkyODNkOGI5ZGQ5ODcwNGRlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0wuY3BwCkBAIC03Niw4ICs3Niw4IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OnRleEltYWdlMkRSZXNvdXJjZVNhZmUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50
IGxlCiB7CiAgICAgQVNTRVJUKHVucGFja0FsaWdubWVudCA9PSAxIHx8IHVucGFja0FsaWdubWVu
dCA9PSAyIHx8IHVucGFja0FsaWdubWVudCA9PSA0IHx8IHVucGFja0FsaWdubWVudCA9PSA4KTsK
ICAgICBVbmlxdWVBcnJheTx1bnNpZ25lZCBjaGFyPiB6ZXJvOworICAgIHVuc2lnbmVkIHNpemUg
PSAwOwogICAgIGlmICh3aWR0aCA+IDAgJiYgaGVpZ2h0ID4gMCkgewotICAgICAgICB1bnNpZ25l
ZCBzaXplOwogICAgICAgICBQaXhlbFN0b3JlUGFyYW1zIHBhcmFtczsKICAgICAgICAgcGFyYW1z
LmFsaWdubWVudCA9IHVucGFja0FsaWdubWVudDsKICAgICAgICAgR0NHTGVudW0gZXJyb3IgPSBj
b21wdXRlSW1hZ2VTaXplSW5CeXRlcyhmb3JtYXQsIHR5cGUsIHdpZHRoLCBoZWlnaHQsIDEsIHBh
cmFtcywgJnNpemUsIG51bGxwdHIsIG51bGxwdHIpOwpAQCAtOTIsNyArOTIsNyBAQCBib29sIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjp0ZXhJbWFnZTJEUmVzb3VyY2VTYWZlKEdDR0xlbnVtIHRh
cmdldCwgR0NHTGludCBsZQogICAgICAgICB9CiAgICAgICAgIG1lbXNldCh6ZXJvLmdldCgpLCAw
LCBzaXplKTsKICAgICB9Ci0gICAgcmV0dXJuIHRleEltYWdlMkQodGFyZ2V0LCBsZXZlbCwgaW50
ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGJvcmRlciwgZm9ybWF0LCB0eXBlLCB6ZXJvLmdl
dCgpKTsKKyAgICByZXR1cm4gdGV4SW1hZ2UyRCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1h
dCwgd2lkdGgsIGhlaWdodCwgYm9yZGVyLCBmb3JtYXQsIHR5cGUsIG1ha2VHQ0dMU3Bhbih6ZXJv
LmdldCgpLCBzaXplKSk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0wuaAppbmRleCAwOTkyNjc4YjhkYzFlMTgzZDk4MjU5Yjc3MzE1YzM2MTIxNzAxMzBmLi5jMjU1
YjBjMTJmNGZjYmZhNDZkYjAyZDU1YzgwYjRjYjc3ZDE3YjcwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0wuaApAQCAtMTE5LDkgKzExOSw2IEBAIHB1YmxpYzoKICAgICAvLyBXaXRo
IG11bHRpc2FtcGxpbmcgb24sIGJsaXQgZnJvbSBtdWx0aXNhbXBsZUZCTyB0byByZWd1bGFyIEZC
Ty4KICAgICB2b2lkIHByZXBhcmVUZXh0dXJlKCk7CiAKLSAgICAvLyBFcXVpdmFsZW50IHRvIDo6
Z2xUZXhJbWFnZTJEKCkuIEFsbG93cyBwaXhlbHM9PTAgd2l0aCBubyBhbGxvY2F0aW9uLgotICAg
IHZvaWQgdGV4SW1hZ2UyRERpcmVjdChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdD
R0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQs
IEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIGNvbnN0IHZv
aWQqIHBpeGVscyk7Ci0KICAgICAvLyBHZXQgYW4gYXR0cmlidXRlIGxvY2F0aW9uIHdpdGhvdXQg
Y2hlY2tpbmcgdGhlIG5hbWUgLT4gbWFuZ2xlZG5hbWUgbWFwcGluZy4KICAgICBpbnQgZ2V0QXR0
cmliTG9jYXRpb25EaXJlY3QoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBjb25zdCBTdHJpbmcm
IG5hbWUpOwogCkBAIC0xMjksNiArMTI2LDkgQEAgcHVibGljOgogICAgIHZvaWQgY29tcGlsZVNo
YWRlckRpcmVjdChQbGF0Zm9ybUdMT2JqZWN0KTsKIAogI2lmICFVU0UoQU5HTEUpCisgICAgLy8g
RXF1aXZhbGVudCB0byA6OmdsVGV4SW1hZ2UyRCgpLiBBbGxvd3MgcGl4ZWxzPT0wIHdpdGggbm8g
YWxsb2NhdGlvbi4KKyAgICB2b2lkIHRleEltYWdlMkREaXJlY3QoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBH
Q0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51
bSB0eXBlLCBjb25zdCB2b2lkKiBwaXhlbHMpOworCiAgICAgLy8gSGVscGVyIHRvIHRleEltYWdl
MkQgd2l0aCBwaXhlbD09MCBjYXNlOiBwaXhlbHMgYXJlIGluaXRpYWxpemVkIHRvIDAuCiAgICAg
Ly8gUmV0dXJuIHRydWUgaWYgbm8gR0wgZXJyb3IgaXMgc3ludGhlc2l6ZWQuCiAgICAgLy8gQnkg
ZGVmYXVsdCwgYWxpZ25tZW50IGlzIDQsIHRoZSBPcGVuR0wgZGVmYXVsdCBzZXR0aW5nLgpAQCAt
MTU1LDggKzE1NSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGJsZW5kRnVuY1NlcGFyYXRlKEdDR0xl
bnVtIHNyY1JHQiwgR0NHTGVudW0gZHN0UkdCLCBHQ0dMZW51bSBzcmNBbHBoYSwgR0NHTGVudW0g
ZHN0QWxwaGEpIGZpbmFsOwogCiAgICAgdm9pZCBidWZmZXJEYXRhKEdDR0xlbnVtIHRhcmdldCwg
R0NHTHNpemVpcHRyIHNpemUsIEdDR0xlbnVtIHVzYWdlKSBmaW5hbDsKLSAgICB2b2lkIGJ1ZmZl
ckRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWlwdHIgc2l6ZSwgY29uc3Qgdm9pZCogZGF0
YSwgR0NHTGVudW0gdXNhZ2UpIGZpbmFsOwotICAgIHZvaWQgYnVmZmVyU3ViRGF0YShHQ0dMZW51
bSB0YXJnZXQsIEdDR0xpbnRwdHIgb2Zmc2V0LCBHQ0dMc2l6ZWlwdHIgc2l6ZSwgY29uc3Qgdm9p
ZCogZGF0YSkgZmluYWw7CisgICAgdm9pZCBidWZmZXJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NH
TFNwYW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEsIEdDR0xlbnVtIHVzYWdlKSBmaW5hbDsKKyAgICB2
b2lkIGJ1ZmZlclN1YkRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50cHRyIG9mZnNldCwgR0NH
TFNwYW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEpIGZpbmFsOwogCiAgICAgR0NHTGVudW0gY2hlY2tG
cmFtZWJ1ZmZlclN0YXR1cyhHQ0dMZW51bSB0YXJnZXQpIGZpbmFsOwogICAgIHZvaWQgY2xlYXIo
R0NHTGJpdGZpZWxkIG1hc2spIGZpbmFsOwpAQCAtMTY2LDEwICsxNjYsNiBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBjb2xvck1hc2soR0NHTGJvb2xlYW4gcmVkLCBHQ0dMYm9vbGVhbiBncmVlbiwgR0NH
TGJvb2xlYW4gYmx1ZSwgR0NHTGJvb2xlYW4gYWxwaGEpIGZpbmFsOwogICAgIHZvaWQgY29tcGls
ZVNoYWRlcihQbGF0Zm9ybUdMT2JqZWN0KSBmaW5hbDsKIAotI2lmICFVU0UoQU5HTEUpCi0gICAg
dm9pZCBjb21wcmVzc2VkVGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWws
IEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWln
aHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBjb25zdCB2b2lkKiBkYXRh
KTsKLSAgICB2b2lkIGNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NH
TGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3
aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMc2l6ZWkgaW1hZ2VT
aXplLCBjb25zdCB2b2lkKiBkYXRhKTsKLSNlbmRpZgogICAgIHZvaWQgY29weVRleEltYWdlMkQo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwg
R0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwg
R0NHTGludCBib3JkZXIpIGZpbmFsOwogICAgIHZvaWQgY29weVRleFN1YkltYWdlMkQoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNl
dCwgR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdo
dCkgZmluYWw7CiAgICAgdm9pZCBjdWxsRmFjZShHQ0dMZW51bSBtb2RlKSBmaW5hbDsKQEAgLTI1
MywzMCArMjQ5LDM3IEBAIHB1YmxpYzoKICAgICB2b2lkIHN0ZW5jaWxPcChHQ0dMZW51bSBmYWls
LCBHQ0dMZW51bSB6ZmFpbCwgR0NHTGVudW0genBhc3MpIGZpbmFsOwogICAgIHZvaWQgc3RlbmNp
bE9wU2VwYXJhdGUoR0NHTGVudW0gZmFjZSwgR0NHTGVudW0gZmFpbCwgR0NHTGVudW0gemZhaWws
IEdDR0xlbnVtIHpwYXNzKSBmaW5hbDsKIAotICAgIGJvb2wgdGV4SW1hZ2UyRChHQ0dMZW51bSB0
YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkg
d2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQs
IEdDR0xlbnVtIHR5cGUsIGNvbnN0IHZvaWQqIHBpeGVscykgZmluYWw7CisgICAgdm9pZCB0ZXhJ
bWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxm
b3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIs
IEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+
IHBpeGVscykgZmluYWw7CisgICAgdm9pZCB0ZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NH
TGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NH
THNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0g
dHlwZSwgR0NHTGludHB0ciBvZmZzZXQpIGZpbmFsOworICAgIHZvaWQgdGV4U3ViSW1hZ2UyRChH
Q0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5
b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1h
dCwgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IHBpeGVscykgZmluYWw7
CisgICAgdm9pZCB0ZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwg
R0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNp
emVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9m
ZnNldCkgZmluYWw7CisgICAgdm9pZCBjb21wcmVzc2VkVGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lk
dGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMc2l6ZWkgaW1hZ2VTaXpl
LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gZGF0YSkgZmluYWw7CisgICAgdm9pZCBjb21wcmVz
c2VkVGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGlu
dGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQg
Ym9yZGVyLCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMaW50cHRyIG9mZnNldCkgZmluYWw7IAor
ICAgIHZvaWQgY29tcHJlc3NlZFRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50
IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRo
LCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFnZVNpemUs
IEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRhKSBmaW5hbDsKKyAgICB2b2lkIGNvbXByZXNz
ZWRUZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4
b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdo
dCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMaW50cHRyIG9mZnNl
dCkgZmluYWw7CisKICAgICB2b2lkIHRleFBhcmFtZXRlcmYoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTGZsb2F0IHBhcmFtKSBmaW5hbDsKICAgICB2b2lkIHRleFBhcmFtZXRl
cmkoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCBwYXJhbSkgZmluYWw7
Ci0gICAgdm9pZCB0ZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwg
R0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNp
emVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBjb25zdCB2b2lkKiBw
aXhlbHMpIGZpbmFsOwogCiAgICAgdm9pZCB1bmlmb3JtMWYoR0NHTGludCBsb2NhdGlvbiwgR0NH
TGZsb2F0IHgpIGZpbmFsOwotICAgIHZvaWQgdW5pZm9ybTFmdihHQ0dMaW50IGxvY2F0aW9uLCBH
Q0dMc2l6ZWksIGNvbnN0IEdDR0xmbG9hdCogdikgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtMWZ2
KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gdikgZmluYWw7CiAg
ICAgdm9pZCB1bmlmb3JtMWkoR0NHTGludCBsb2NhdGlvbiwgR0NHTGludCB4KSBmaW5hbDsKLSAg
ICB2b2lkIHVuaWZvcm0xaXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpLCBjb25zdCBHQ0dM
aW50KiB2KSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm0xaXYoR0NHTGludCBsb2NhdGlvbiwgR0NH
TFNwYW48Y29uc3QgR0NHTGludD4gdikgZmluYWw7CiAgICAgdm9pZCB1bmlmb3JtMmYoR0NHTGlu
dCBsb2NhdGlvbiwgR0NHTGZsb2F0IHgsIEdDR0xmbG9hdCB5KSBmaW5hbDsKLSAgICB2b2lkIHVu
aWZvcm0yZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpLCBjb25zdCBHQ0dMZmxvYXQqIHYp
IGZpbmFsOworICAgIHZvaWQgdW5pZm9ybTJmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxj
b25zdCBHQ0dMZmxvYXQ+IHYpIGZpbmFsOwogICAgIHZvaWQgdW5pZm9ybTJpKEdDR0xpbnQgbG9j
YXRpb24sIEdDR0xpbnQgeCwgR0NHTGludCB5KSBmaW5hbDsKLSAgICB2b2lkIHVuaWZvcm0yaXYo
R0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpLCBjb25zdCBHQ0dMaW50KiB2KSBmaW5hbDsKKyAg
ICB2b2lkIHVuaWZvcm0yaXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGlu
dD4gdikgZmluYWw7CiAgICAgdm9pZCB1bmlmb3JtM2YoR0NHTGludCBsb2NhdGlvbiwgR0NHTGZs
b2F0IHgsIEdDR0xmbG9hdCB5LCBHQ0dMZmxvYXQgeikgZmluYWw7Ci0gICAgdm9pZCB1bmlmb3Jt
M2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSwgY29uc3QgR0NHTGZsb2F0KiB2KSBmaW5h
bDsKKyAgICB2b2lkIHVuaWZvcm0zZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3Qg
R0NHTGZsb2F0PiB2KSBmaW5hbDsKICAgICB2b2lkIHVuaWZvcm0zaShHQ0dMaW50IGxvY2F0aW9u
LCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTGludCB6KSBmaW5hbDsKLSAgICB2b2lkIHVuaWZv
cm0zaXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpLCBjb25zdCBHQ0dMaW50KiB2KSBmaW5h
bDsKKyAgICB2b2lkIHVuaWZvcm0zaXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3Qg
R0NHTGludD4gdikgZmluYWw7CiAgICAgdm9pZCB1bmlmb3JtNGYoR0NHTGludCBsb2NhdGlvbiwg
R0NHTGZsb2F0IHgsIEdDR0xmbG9hdCB5LCBHQ0dMZmxvYXQgeiwgR0NHTGZsb2F0IHcpIGZpbmFs
OwotICAgIHZvaWQgdW5pZm9ybTRmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWksIGNvbnN0
IEdDR0xmbG9hdCogdikgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtNGZ2KEdDR0xpbnQgbG9jYXRp
b24sIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gdikgZmluYWw7CiAgICAgdm9pZCB1bmlmb3Jt
NGkoR0NHTGludCBsb2NhdGlvbiwgR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xpbnQgeiwgR0NH
TGludCB3KSBmaW5hbDsKLSAgICB2b2lkIHVuaWZvcm00aXYoR0NHTGludCBsb2NhdGlvbiwgR0NH
THNpemVpLCBjb25zdCBHQ0dMaW50KiB2KSBmaW5hbDsKLSAgICB2b2lkIHVuaWZvcm1NYXRyaXgy
ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNv
bnN0IEdDR0xmbG9hdCogdmFsdWUpIGZpbmFsOwotICAgIHZvaWQgdW5pZm9ybU1hdHJpeDNmdihH
Q0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWksIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3Qg
R0NHTGZsb2F0KiB2YWx1ZSkgZmluYWw7Ci0gICAgdm9pZCB1bmlmb3JtTWF0cml4NGZ2KEdDR0xp
bnQgbG9jYXRpb24sIEdDR0xzaXplaSwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHQ0dM
ZmxvYXQqIHZhbHVlKSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm00aXYoR0NHTGludCBsb2NhdGlv
biwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gdikgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtTWF0
cml4MmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48
Y29uc3QgR0NHTGZsb2F0PiB2YWx1ZSkgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtTWF0cml4M2Z2
KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3Qg
R0NHTGZsb2F0PiB2YWx1ZSkgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtTWF0cml4NGZ2KEdDR0xp
bnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZs
b2F0PiB2YWx1ZSkgZmluYWw7CiAKICAgICB2b2lkIHVzZVByb2dyYW0oUGxhdGZvcm1HTE9iamVj
dCkgZmluYWw7CiAgICAgdm9pZCB2YWxpZGF0ZVByb2dyYW0oUGxhdGZvcm1HTE9iamVjdCkgZmlu
YWw7CkBAIC0yODYsMTMgKzI4OSwxMyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogICAgIHZvaWQgdmVy
dGV4QXR0cmliMWYoR0NHTHVpbnQgaW5kZXgsIEdDR0xmbG9hdCB4KSBmaW5hbDsKLSAgICB2b2lk
IHZlcnRleEF0dHJpYjFmdihHQ0dMdWludCBpbmRleCwgY29uc3QgR0NHTGZsb2F0KiB2YWx1ZXMp
IGZpbmFsOworICAgIHZvaWQgdmVydGV4QXR0cmliMWZ2KEdDR0x1aW50IGluZGV4LCBHQ0dMU3Bh
bjxjb25zdCBHQ0dMZmxvYXQsIDE+IHZhbHVlcykgZmluYWw7CiAgICAgdm9pZCB2ZXJ0ZXhBdHRy
aWIyZihHQ0dMdWludCBpbmRleCwgR0NHTGZsb2F0IHgsIEdDR0xmbG9hdCB5KSBmaW5hbDsKLSAg
ICB2b2lkIHZlcnRleEF0dHJpYjJmdihHQ0dMdWludCBpbmRleCwgY29uc3QgR0NHTGZsb2F0KiB2
YWx1ZXMpIGZpbmFsOworICAgIHZvaWQgdmVydGV4QXR0cmliMmZ2KEdDR0x1aW50IGluZGV4LCBH
Q0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQsIDI+IHZhbHVlcykgZmluYWw7CiAgICAgdm9pZCB2ZXJ0
ZXhBdHRyaWIzZihHQ0dMdWludCBpbmRleCwgR0NHTGZsb2F0IHgsIEdDR0xmbG9hdCB5LCBHQ0dM
ZmxvYXQgeikgZmluYWw7Ci0gICAgdm9pZCB2ZXJ0ZXhBdHRyaWIzZnYoR0NHTHVpbnQgaW5kZXgs
IGNvbnN0IEdDR0xmbG9hdCogdmFsdWVzKSBmaW5hbDsKKyAgICB2b2lkIHZlcnRleEF0dHJpYjNm
dihHQ0dMdWludCBpbmRleCwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0LCAzPiB2YWx1ZXMpIGZp
bmFsOwogICAgIHZvaWQgdmVydGV4QXR0cmliNGYoR0NHTHVpbnQgaW5kZXgsIEdDR0xmbG9hdCB4
LCBHQ0dMZmxvYXQgeSwgR0NHTGZsb2F0IHosIEdDR0xmbG9hdCB3KSBmaW5hbDsKLSAgICB2b2lk
IHZlcnRleEF0dHJpYjRmdihHQ0dMdWludCBpbmRleCwgY29uc3QgR0NHTGZsb2F0KiB2YWx1ZXMp
IGZpbmFsOworICAgIHZvaWQgdmVydGV4QXR0cmliNGZ2KEdDR0x1aW50IGluZGV4LCBHQ0dMU3Bh
bjxjb25zdCBHQ0dMZmxvYXQsIDQ+IHZhbHVlcykgZmluYWw7CiAgICAgdm9pZCB2ZXJ0ZXhBdHRy
aWJQb2ludGVyKEdDR0x1aW50IGluZGV4LCBHQ0dMaW50IHNpemUsIEdDR0xlbnVtIHR5cGUsIEdD
R0xib29sZWFuIG5vcm1hbGl6ZWQsIEdDR0xzaXplaSBzdHJpZGUsIEdDR0xpbnRwdHIgb2Zmc2V0
KSBmaW5hbDsKIAogICAgIHZvaWQgdmlld3BvcnQoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xz
aXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkgZmluYWw7CkBAIC0zMjMsOCArMzI2LDggQEAg
cHVibGljOgogCiAgICAgdm9pZCBibGl0RnJhbWVidWZmZXIoR0NHTGludCBzcmNYMCwgR0NHTGlu
dCBzcmNZMCwgR0NHTGludCBzcmNYMSwgR0NHTGludCBzcmNZMSwgR0NHTGludCBkc3RYMCwgR0NH
TGludCBkc3RZMCwgR0NHTGludCBkc3RYMSwgR0NHTGludCBkc3RZMSwgR0NHTGJpdGZpZWxkIG1h
c2ssIEdDR0xlbnVtIGZpbHRlcikgZmluYWw7CiAgICAgdm9pZCBmcmFtZWJ1ZmZlclRleHR1cmVM
YXllcihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGF0dGFjaG1lbnQsIFBsYXRmb3JtR0xPYmpl
Y3QgdGV4dHVyZSwgR0NHTGludCBsZXZlbCwgR0NHTGludCBsYXllcikgZmluYWw7Ci0gICAgdm9p
ZCBpbnZhbGlkYXRlRnJhbWVidWZmZXIoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgbnVtQXR0
YWNobWVudHMsIGNvbnN0IEdDR0xlbnVtKiBhdHRhY2htZW50cykgZmluYWw7Ci0gICAgdm9pZCBp
bnZhbGlkYXRlU3ViRnJhbWVidWZmZXIoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgbnVtQXR0
YWNobWVudHMsIGNvbnN0IEdDR0xlbnVtKiBhdHRhY2htZW50cywgR0NHTGludCB4LCBHQ0dMaW50
IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkgZmluYWw7CisgICAgdm9pZCBp
bnZhbGlkYXRlRnJhbWVidWZmZXIoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMU3Bhbjxjb25zdCBHQ0dM
ZW51bT4gYXR0YWNobWVudHMpIGZpbmFsOworICAgIHZvaWQgaW52YWxpZGF0ZVN1YkZyYW1lYnVm
ZmVyKEdDR0xlbnVtIHRhcmdldCwgR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+IGF0dGFjaG1lbnRz
LCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0
KSBmaW5hbDsKICAgICB2b2lkIHJlYWRCdWZmZXIoR0NHTGVudW0gc3JjKSBmaW5hbDsKIAogICAg
IC8vIGdldEludGVybmFsRm9ybWF0UGFyYW1ldGVyCkBAIC0zMzQsNyArMzM3LDE1IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHRleFN0b3JhZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaSBsZXZl
bHMsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBo
ZWlnaHQpIGZpbmFsOwogICAgIHZvaWQgdGV4U3RvcmFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NH
THNpemVpIGxldmVscywgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwg
R0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoKSBmaW5hbDsKIAorICAgIHZvaWQgdGV4
SW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgaW50ZXJuYWxm
b3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRo
LCBHQ0dMaW50IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bh
bjxjb25zdCBHQ0dMdm9pZD4gcGl4ZWxzKSBmaW5hbDsKKyAgICB2b2lkIHRleEltYWdlM0QoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IGludGVybmFsZm9ybWF0LCBHQ0dM
c2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGludCBi
b3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQp
IGZpbmFsOworICAgIHZvaWQgdGV4U3ViSW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQg
bGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMaW50IHpvZmZzZXQs
IEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dM
ZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBwaXhl
bHMpIGZpbmFsOworICAgIHZvaWQgdGV4U3ViSW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xp
bnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMaW50IHpvZmZz
ZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBH
Q0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KSBmaW5hbDsK
ICAgICB2b2lkIGNvcHlUZXhTdWJJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZl
bCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xpbnQgem9mZnNldCwgR0NH
TGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkgZmlu
YWw7CisgICAgdm9pZCBjb21wcmVzc2VkVGV4SW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xp
bnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xz
aXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGludCBib3JkZXIsIEdDR0xzaXplaSBp
bWFnZVNpemUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRhKSBmaW5hbDsKKyAgICB2b2lk
IGNvbXByZXNzZWRUZXhJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NH
TGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwg
R0NHTHNpemVpIGRlcHRoLCBHQ0dMaW50IGJvcmRlciwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NH
TGludHB0ciBvZmZzZXQpIGZpbmFsOworICAgIHZvaWQgY29tcHJlc3NlZFRleFN1YkltYWdlM0Qo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQg
eW9mZnNldCwgR0NHTGludCB6b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWln
aHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMc2l6ZWkgaW1hZ2VTaXpl
LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gZGF0YSkgZmluYWw7CisgICAgdm9pZCBjb21wcmVz
c2VkVGV4U3ViSW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQg
eG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMaW50IHpvZmZzZXQsIEdDR0xzaXplaSB3aWR0
aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMZW51bSBmb3JtYXQsIEdD
R0xzaXplaSBpbWFnZVNpemUsIEdDR0xpbnRwdHIgb2Zmc2V0KSBmaW5hbDsKIAogICAgIEdDR0xp
bnQgZ2V0RnJhZ0RhdGFMb2NhdGlvbihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFN0
cmluZyYgbmFtZSkgZmluYWw7CiAKQEAgLTM0MiwyOCArMzUzLDI4IEBAIHB1YmxpYzoKICAgICB2
b2lkIHVuaWZvcm0ydWkoR0NHTGludCBsb2NhdGlvbiwgR0NHTHVpbnQgdjAsIEdDR0x1aW50IHYx
KSBmaW5hbDsKICAgICB2b2lkIHVuaWZvcm0zdWkoR0NHTGludCBsb2NhdGlvbiwgR0NHTHVpbnQg
djAsIEdDR0x1aW50IHYxLCBHQ0dMdWludCB2MikgZmluYWw7CiAgICAgdm9pZCB1bmlmb3JtNHVp
KEdDR0xpbnQgbG9jYXRpb24sIEdDR0x1aW50IHYwLCBHQ0dMdWludCB2MSwgR0NHTHVpbnQgdjIs
IEdDR0x1aW50IHYzKSBmaW5hbDsKLSAgICB2b2lkIHVuaWZvcm0xdWl2KEdDR0xpbnQgbG9jYXRp
b24sIGNvbnN0IEdDR0x1aW50KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNy
Y0xlbmd0aCkgZmluYWw7Ci0gICAgdm9pZCB1bmlmb3JtMnVpdihHQ0dMaW50IGxvY2F0aW9uLCBj
b25zdCBHQ0dMdWludCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5n
dGgpIGZpbmFsOwotICAgIHZvaWQgdW5pZm9ybTN1aXYoR0NHTGludCBsb2NhdGlvbiwgY29uc3Qg
R0NHTHVpbnQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKSBm
aW5hbDsKLSAgICB2b2lkIHVuaWZvcm00dWl2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0x1
aW50KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkgZmluYWw7
Ci0gICAgdm9pZCB1bmlmb3JtTWF0cml4MngzZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xl
YW4gdHJhbnNwb3NlLCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwg
R0NHTHVpbnQgc3JjTGVuZ3RoKSBmaW5hbDsKLSAgICB2b2lkIHVuaWZvcm1NYXRyaXgzeDJmdihH
Q0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCog
ZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpIGZpbmFsOwotICAg
IHZvaWQgdW5pZm9ybU1hdHJpeDJ4NGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRy
YW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1
aW50IHNyY0xlbmd0aCkgZmluYWw7Ci0gICAgdm9pZCB1bmlmb3JtTWF0cml4NHgyZnYoR0NHTGlu
dCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEs
IEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKSBmaW5hbDsKLSAgICB2b2lk
IHVuaWZvcm1NYXRyaXgzeDRmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bv
c2UsIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBz
cmNMZW5ndGgpIGZpbmFsOwotICAgIHZvaWQgdW5pZm9ybU1hdHJpeDR4M2Z2KEdDR0xpbnQgbG9j
YXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dM
dWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkgZmluYWw7CisgICAgdm9pZCB1bmlm
b3JtMXVpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdWludD4pIGZpbmFs
OworICAgIHZvaWQgdW5pZm9ybTJ1aXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3Qg
R0NHTHVpbnQ+KSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm0zdWl2KEdDR0xpbnQgbG9jYXRpb24s
IEdDR0xTcGFuPGNvbnN0IEdDR0x1aW50PikgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtNHVpdihH
Q0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdWludD4pIGZpbmFsOworICAgIHZv
aWQgdW5pZm9ybU1hdHJpeDJ4M2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5z
cG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiBkYXRhKSBmaW5hbDsKKyAgICB2b2lkIHVu
aWZvcm1NYXRyaXgzeDJmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2Us
IEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gZGF0YSkgZmluYWw7CisgICAgdm9pZCB1bmlmb3Jt
TWF0cml4Mng0ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dM
U3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEpIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybU1hdHJp
eDR4MmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48
Y29uc3QgR0NHTGZsb2F0PiBkYXRhKSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm1NYXRyaXgzeDRm
dihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0
IEdDR0xmbG9hdD4gZGF0YSkgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtTWF0cml4NHgzZnYoR0NH
TGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dM
ZmxvYXQ+IGRhdGEpIGZpbmFsOwogICAgIHZvaWQgdmVydGV4QXR0cmliSTRpKEdDR0x1aW50IGlu
ZGV4LCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTGludCB6LCBHQ0dMaW50IHcpIGZpbmFsOwot
ICAgIHZvaWQgdmVydGV4QXR0cmliSTRpdihHQ0dMdWludCBpbmRleCwgY29uc3QgR0NHTGludCog
dmFsdWVzKSBmaW5hbDsKKyAgICB2b2lkIHZlcnRleEF0dHJpYkk0aXYoR0NHTHVpbnQgaW5kZXgs
IEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQsIDQ+IHZhbHVlcykgZmluYWw7CiAgICAgdm9pZCB2ZXJ0
ZXhBdHRyaWJJNHVpKEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCB4LCBHQ0dMdWludCB5LCBHQ0dM
dWludCB6LCBHQ0dMdWludCB3KSBmaW5hbDsKLSAgICB2b2lkIHZlcnRleEF0dHJpYkk0dWl2KEdD
R0x1aW50IGluZGV4LCBjb25zdCBHQ0dMdWludCogdmFsdWVzKSBmaW5hbDsKKyAgICB2b2lkIHZl
cnRleEF0dHJpYkk0dWl2KEdDR0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdWludCwg
ND4gdmFsdWVzKSBmaW5hbDsKICAgICB2b2lkIHZlcnRleEF0dHJpYklQb2ludGVyKEdDR0x1aW50
IGluZGV4LCBHQ0dMaW50IHNpemUsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBzdHJpZGUsIEdD
R0xpbnRwdHIgb2Zmc2V0KSBmaW5hbDsKIAogICAgIHZvaWQgZHJhd1JhbmdlRWxlbWVudHMoR0NH
TGVudW0gbW9kZSwgR0NHTHVpbnQgc3RhcnQsIEdDR0x1aW50IGVuZCwgR0NHTHNpemVpIGNvdW50
LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCkgZmluYWw7CiAKLSAgICB2b2lkIGRy
YXdCdWZmZXJzKEdDR0xzaXplaSBuLCBjb25zdCBHQ0dMZW51bSogYnVmcykgZmluYWw7Ci0gICAg
dm9pZCBjbGVhckJ1ZmZlcml2KEdDR0xlbnVtIGJ1ZmZlciwgR0NHTGludCBkcmF3YnVmZmVyLCBj
b25zdCBHQ0dMaW50KiB2YWx1ZXMsIEdDR0x1aW50IHNyY09mZnNldCkgZmluYWw7Ci0gICAgdm9p
ZCBjbGVhckJ1ZmZlcnVpdihHQ0dMZW51bSBidWZmZXIsIEdDR0xpbnQgZHJhd2J1ZmZlciwgY29u
c3QgR0NHTHVpbnQqIHZhbHVlcywgR0NHTHVpbnQgc3JjT2Zmc2V0KSBmaW5hbDsKLSAgICB2b2lk
IGNsZWFyQnVmZmVyZnYoR0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50IGRyYXdidWZmZXIsIGNvbnN0
IEdDR0xmbG9hdCogdmFsdWVzLCBHQ0dMdWludCBzcmNPZmZzZXQpIGZpbmFsOworICAgIHZvaWQg
ZHJhd0J1ZmZlcnMoR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+IGJ1ZnMpIGZpbmFsOworICAgIHZv
aWQgY2xlYXJCdWZmZXJpdihHQ0dMZW51bSBidWZmZXIsIEdDR0xpbnQgZHJhd2J1ZmZlciwgR0NH
TFNwYW48Y29uc3QgR0NHTGludD4gdmFsdWVzKSBmaW5hbDsKKyAgICB2b2lkIGNsZWFyQnVmZmVy
dWl2KEdDR0xlbnVtIGJ1ZmZlciwgR0NHTGludCBkcmF3YnVmZmVyLCBHQ0dMU3Bhbjxjb25zdCBH
Q0dMdWludD4gdmFsdWVzKSBmaW5hbDsKKyAgICB2b2lkIGNsZWFyQnVmZmVyZnYoR0NHTGVudW0g
YnVmZmVyLCBHQ0dMaW50IGRyYXdidWZmZXIsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gdmFs
dWVzKSBmaW5hbDsKICAgICB2b2lkIGNsZWFyQnVmZmVyZmkoR0NHTGVudW0gYnVmZmVyLCBHQ0dM
aW50IGRyYXdidWZmZXIsIEdDR0xmbG9hdCBkZXB0aCwgR0NHTGludCBzdGVuY2lsKSBmaW5hbDsK
IAogICAgIFBsYXRmb3JtR0xPYmplY3QgY3JlYXRlUXVlcnkoKSBmaW5hbDsKQEAgLTQxNiwyNyAr
NDI3LDYgQEAgcHVibGljOgogICAgIFN0cmluZyBnZXRBY3RpdmVVbmlmb3JtQmxvY2tOYW1lKFBs
YXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTHVpbnQgdW5pZm9ybUJsb2NrSW5kZXgpIGZpbmFs
OwogICAgIHZvaWQgdW5pZm9ybUJsb2NrQmluZGluZyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0s
IEdDR0x1aW50IHVuaWZvcm1CbG9ja0luZGV4LCBHQ0dMdWludCB1bmlmb3JtQmxvY2tCaW5kaW5n
KSBmaW5hbDsKIAotI2lmICFVU0UoQU5HTEUpCi0gICAgdm9pZCBjb21wcmVzc2VkVGV4SW1hZ2Uy
RChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0
LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dM
c2l6ZWkgaW1hZ2VTaXplLCBHQ0dMaW50cHRyIG9mZnNldCk7Ci0gICAgdm9pZCBjb21wcmVzc2Vk
VGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVy
bmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9y
ZGVyLCBjb25zdCB2b2lkKiBzcmNEYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNy
Y0xlbmd0aE92ZXJyaWRlKTsKLQotICAgIHZvaWQgY29tcHJlc3NlZFRleFN1YkltYWdlMkQoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9m
ZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQs
IEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xpbnRwdHIgb2Zmc2V0KTsKLSAgICB2b2lkIGNvbXBy
ZXNzZWRUZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGlu
dCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhl
aWdodCwgR0NHTGVudW0gZm9ybWF0LCBjb25zdCB2b2lkKiBzcmNEYXRhLCBHQ0dMdWludCBzcmNP
ZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aE92ZXJyaWRlKTsKLSNlbmRpZgotCi0gICAgdm9pZCB1
bmlmb3JtMWZ2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVp
bnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpIGZpbmFsOwotICAgIHZvaWQgdW5pZm9y
bTJmdihHQ0dMaW50IGxvY2F0aW9uLCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNy
Y09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKSBmaW5hbDsKLSAgICB2b2lkIHVuaWZvcm0zZnYo
R0NHTGludCBsb2NhdGlvbiwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZz
ZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkgZmluYWw7Ci0gICAgdm9pZCB1bmlmb3JtNGZ2KEdDR0xp
bnQgbG9jYXRpb24sIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBH
Q0dMdWludCBzcmNMZW5ndGgpIGZpbmFsOwotCi0gICAgdm9pZCB1bmlmb3JtMWl2KEdDR0xpbnQg
bG9jYXRpb24sIGNvbnN0IEdDR0xpbnQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVp
bnQgc3JjTGVuZ3RoKSBmaW5hbDsKLSAgICB2b2lkIHVuaWZvcm0yaXYoR0NHTGludCBsb2NhdGlv
biwgY29uc3QgR0NHTGludCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNM
ZW5ndGgpIGZpbmFsOwotICAgIHZvaWQgdW5pZm9ybTNpdihHQ0dMaW50IGxvY2F0aW9uLCBjb25z
dCBHQ0dMaW50KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkg
ZmluYWw7Ci0gICAgdm9pZCB1bmlmb3JtNGl2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0xp
bnQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKSBmaW5hbDsK
LQotICAgIHZvaWQgdW5pZm9ybU1hdHJpeDJmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVh
biB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBH
Q0dMdWludCBzcmNMZW5ndGgpIGZpbmFsOwotICAgIHZvaWQgdW5pZm9ybU1hdHJpeDNmdihHQ0dM
aW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogZGF0
YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpIGZpbmFsOwotICAgIHZv
aWQgdW5pZm9ybU1hdHJpeDRmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bv
c2UsIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBz
cmNMZW5ndGgpIGZpbmFsOwogICAgIHZvaWQgZ2V0QWN0aXZlVW5pZm9ybUJsb2NraXYoR0NHTHVp
bnQgcHJvZ3JhbSwgR0NHTHVpbnQgdW5pZm9ybUJsb2NrSW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBH
Q0dMU3BhbjxHQ0dMaW50PiBwYXJhbXMpIGZpbmFsOwogCiAjaWYgIVVTRShBTkdMRSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0Nv
bnRleHRHTE9wZW5HTEJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHAKaW5kZXggOWQ3Y2M5MjE2ZTdh
NDJjZjBkOTcxNjQ1NzIwODUxZjE0NTUxNzBkNS4uNjM1NmY4MWY0ODIxYjZhMWVhNmMzNTU3ZWRm
MWY0ZTY4ODEzZjZiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFz
ZS5jcHAKQEAgLTM0MSwxMSArMzQxLDExIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OmdldFNoYWRlclByZWNpc2lvbkZvcm1hdChHQ0dMZW51bSBzaGFkZXJUeXBlLCBHQ0dMCiAgICAg
fQogfQogCi1ib29sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp0ZXhJbWFnZTJEKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXpl
aSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1h
dCwgR0NHTGVudW0gdHlwZSwgY29uc3Qgdm9pZCogcGl4ZWxzKQordm9pZCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6dGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdD
R0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQs
IEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFu
PGNvbnN0IEdDR0x2b2lkPiBwaXhlbHMpCiB7Ci0gICAgaWYgKHdpZHRoICYmIGhlaWdodCAmJiAh
cGl4ZWxzKSB7CisgICAgaWYgKHdpZHRoICYmIGhlaWdodCAmJiAhcGl4ZWxzLmRhdGEpIHsKICAg
ICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoSU5WQUxJRF9WQUxVRSk7Ci0gICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIEdDR0xlbnVtIG9wZW5HTEZvcm1h
dCA9IGZvcm1hdDsKQEAgLTQwMyw4ICs0MDMsNyBAQCBib29sIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjp0ZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudQog
ICAgICAgICB9CiAgICAgfQogCi0gICAgdGV4SW1hZ2UyRERpcmVjdCh0YXJnZXQsIGxldmVsLCBv
cGVuR0xJbnRlcm5hbEZvcm1hdCwgd2lkdGgsIGhlaWdodCwgYm9yZGVyLCBvcGVuR0xGb3JtYXQs
IHR5cGUsIHBpeGVscyk7Ci0gICAgcmV0dXJuIHRydWU7CisgICAgdGV4SW1hZ2UyRERpcmVjdCh0
YXJnZXQsIGxldmVsLCBvcGVuR0xJbnRlcm5hbEZvcm1hdCwgd2lkdGgsIGhlaWdodCwgYm9yZGVy
LCBvcGVuR0xGb3JtYXQsIHR5cGUsIHBpeGVscy5kYXRhKTsKIH0KIAogdm9pZCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6ZGVwdGhSYW5nZShHQ0dMY2xhbXBmIHpOZWFyLCBHQ0dMY2xhbXBmIHpG
YXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wv
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb21tb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29tbW9uLmNwcAppbmRl
eCBhYmI3ZTI1YTA2ZjA4NWNjZWFjZmY1YWI2ZTgyMDQ1N2NlOWEyZDkzLi5iYzQ0Y2Q1Nzc4ODY3
MjAzOWFlYTRmNTk5OTZlNGQ5NGUxYzFhMGZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb21tb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0Nv
bnRleHRHTE9wZW5HTENvbW1vbi5jcHAKQEAgLTU1MiwyMCArNTUyLDIwIEBAIHZvaWQgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmJ1ZmZlckRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWlw
dHIgc2l6ZSwgR0NHCiAgICAgOjpnbEJ1ZmZlckRhdGEodGFyZ2V0LCBzaXplLCAwLCB1c2FnZSk7
CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmJ1ZmZlckRhdGEoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMc2l6ZWlwdHIgc2l6ZSwgY29uc3Qgdm9pZCogZGF0YSwgR0NHTGVudW0gdXNh
Z2UpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpidWZmZXJEYXRhKEdDR0xlbnVtIHRh
cmdldCwgR0NHTFNwYW48Y29uc3Qgdm9pZD4gZGF0YSwgR0NHTGVudW0gdXNhZ2UpCiB7CiAgICAg
aWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgOjpnbEJ1
ZmZlckRhdGEodGFyZ2V0LCBzaXplLCBkYXRhLCB1c2FnZSk7CisgICAgOjpnbEJ1ZmZlckRhdGEo
dGFyZ2V0LCBkYXRhLmJ1ZlNpemUsIGRhdGEuZGF0YSwgdXNhZ2UpOwogfQogCi12b2lkIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpidWZmZXJTdWJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTGlu
dHB0ciBvZmZzZXQsIEdDR0xzaXplaXB0ciBzaXplLCBjb25zdCB2b2lkKiBkYXRhKQordm9pZCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6YnVmZmVyU3ViRGF0YShHQ0dMZW51bSB0YXJnZXQsIEdD
R0xpbnRwdHIgb2Zmc2V0LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gZGF0YSkKIHsKICAgICBp
ZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICA6OmdsQnVm
ZmVyU3ViRGF0YSh0YXJnZXQsIG9mZnNldCwgc2l6ZSwgZGF0YSk7CisgICAgOjpnbEJ1ZmZlclN1
YkRhdGEodGFyZ2V0LCBvZmZzZXQsIGRhdGEuYnVmU2l6ZSwgZGF0YS5kYXRhKTsKIH0KIAogR0NH
TGVudW0gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoR0NH
TGVudW0gdGFyZ2V0KQpAQCAtMTQxNSwxMiArMTQxNSwxMiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjp1bmlmb3JtMWYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGZsb2F0IHYwKQogICAg
IDo6Z2xVbmlmb3JtMWYobG9jYXRpb24sIHYwKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6dW5pZm9ybTFmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgc2l6ZSwgY29u
c3QgR0NHTGZsb2F0KiBhcnJheSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZv
cm0xZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiBhcnJheSkK
IHsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAg
ICA6OmdsVW5pZm9ybTFmdihsb2NhdGlvbiwgc2l6ZSwgYXJyYXkpOworICAgIDo6Z2xVbmlmb3Jt
MWZ2KGxvY2F0aW9uLCBhcnJheS5idWZTaXplLCBhcnJheS5kYXRhKTsKIH0KIAogdm9pZCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTJmKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xmbG9h
dCB2MCwgR0NHTGZsb2F0IHYxKQpAQCAtMTQzMSwxMyArMTQzMSwxMyBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMmYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGZsb2F0IHYw
LCBHQ0dMZmxvYQogICAgIDo6Z2xVbmlmb3JtMmYobG9jYXRpb24sIHYwLCB2MSk7CiB9CiAKLXZv
aWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0yZnYoR0NHTGludCBsb2NhdGlvbiwg
R0NHTHNpemVpIHNpemUsIGNvbnN0IEdDR0xmbG9hdCogYXJyYXkpCit2b2lkIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjp1bmlmb3JtMmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0
IEdDR0xmbG9hdD4gYXJyYXkpCiB7Ci0gICAgLy8gRklYTUU6IGxlbmd0aCBuZWVkcyB0byBiZSBh
IG11bHRpcGxlIG9mIDIuCisgICAgQVNTRVJUKCEoYXJyYXkuYnVmU2l6ZSAlIDIpKTsKICAgICBp
ZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICA6OmdsVW5p
Zm9ybTJmdihsb2NhdGlvbiwgc2l6ZSwgYXJyYXkpOworICAgIDo6Z2xVbmlmb3JtMmZ2KGxvY2F0
aW9uLCBhcnJheS5idWZTaXplIC8gMiwgYXJyYXkuZGF0YSk7CiB9CiAKIHZvaWQgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OnVuaWZvcm0zZihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMZmxvYXQgdjAs
IEdDR0xmbG9hdCB2MSwgR0NHTGZsb2F0IHYyKQpAQCAtMTQ0OCwxMyArMTQ0OCwxMyBAQCB2b2lk
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtM2YoR0NHTGludCBsb2NhdGlvbiwgR0NH
TGZsb2F0IHYwLCBHQ0dMZmxvYQogICAgIDo6Z2xVbmlmb3JtM2YobG9jYXRpb24sIHYwLCB2MSwg
djIpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtM2Z2KEdDR0xp
bnQgbG9jYXRpb24sIEdDR0xzaXplaSBzaXplLCBjb25zdCBHQ0dMZmxvYXQqIGFycmF5KQordm9p
ZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTNmdihHQ0dMaW50IGxvY2F0aW9uLCBH
Q0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGFycmF5KQogewotICAgIC8vIEZJWE1FOiBsZW5ndGgg
bmVlZHMgdG8gYmUgYSBtdWx0aXBsZSBvZiAzLgorICAgIEFTU0VSVCghKGFycmF5LmJ1ZlNpemUg
JSAzKSk7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgOjpnbFVuaWZvcm0zZnYobG9jYXRpb24sIHNpemUsIGFycmF5KTsKKyAgICA6OmdsVW5p
Zm9ybTNmdihsb2NhdGlvbiwgYXJyYXkuYnVmU2l6ZSAvIDMsIGFycmF5LmRhdGEpOwogfQogCiB2
b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtNGYoR0NHTGludCBsb2NhdGlvbiwg
R0NHTGZsb2F0IHYwLCBHQ0dMZmxvYXQgdjEsIEdDR0xmbG9hdCB2MiwgR0NHTGZsb2F0IHYzKQpA
QCAtMTQ2NSwxMyArMTQ2NSwxMyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlm
b3JtNGYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGZsb2F0IHYwLCBHQ0dMZmxvYQogICAgIDo6Z2xV
bmlmb3JtNGYobG9jYXRpb24sIHYwLCB2MSwgdjIsIHYzKTsKIH0KIAotdm9pZCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6dW5pZm9ybTRmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgc2l6
ZSwgY29uc3QgR0NHTGZsb2F0KiBhcnJheSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OnVuaWZvcm00ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiBh
cnJheSkKIHsKLSAgICAvLyBGSVhNRTogbGVuZ3RoIG5lZWRzIHRvIGJlIGEgbXVsdGlwbGUgb2Yg
NC4KKyAgICBBU1NFUlQoIShhcnJheS5idWZTaXplICUgNCkpOwogICAgIGlmICghbWFrZUNvbnRl
eHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIDo6Z2xVbmlmb3JtNGZ2KGxvY2F0
aW9uLCBzaXplLCBhcnJheSk7CisgICAgOjpnbFVuaWZvcm00ZnYobG9jYXRpb24sIGFycmF5LmJ1
ZlNpemUgLyA0LCBhcnJheS5kYXRhKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6dW5pZm9ybTFpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xpbnQgdjApCkBAIC0xNDgyLDEyICsx
NDgyLDEyIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0xaShHQ0dMaW50
IGxvY2F0aW9uLCBHQ0dMaW50IHYwKQogICAgIDo6Z2xVbmlmb3JtMWkobG9jYXRpb24sIHYwKTsK
IH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTFpdihHQ0dMaW50IGxv
Y2F0aW9uLCBHQ0dMc2l6ZWkgc2l6ZSwgY29uc3QgR0NHTGludCogYXJyYXkpCit2b2lkIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMWl2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFu
PGNvbnN0IEdDR0xpbnQ+IGFycmF5KQogewogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkp
CiAgICAgICAgIHJldHVybjsKIAotICAgIDo6Z2xVbmlmb3JtMWl2KGxvY2F0aW9uLCBzaXplLCBh
cnJheSk7CisgICAgOjpnbFVuaWZvcm0xaXYobG9jYXRpb24sIGFycmF5LmJ1ZlNpemUsIGFycmF5
LmRhdGEpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMmkoR0NH
TGludCBsb2NhdGlvbiwgR0NHTGludCB2MCwgR0NHTGludCB2MSkKQEAgLTE0OTgsMTMgKzE0OTgs
MTMgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTJpKEdDR0xpbnQgbG9j
YXRpb24sIEdDR0xpbnQgdjAsIEdDR0xpbnQgdjEKICAgICA6OmdsVW5pZm9ybTJpKGxvY2F0aW9u
LCB2MCwgdjEpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMml2
KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBzaXplLCBjb25zdCBHQ0dMaW50KiBhcnJheSkK
K3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0yaXYoR0NHTGludCBsb2NhdGlv
biwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gYXJyYXkpCiB7Ci0gICAgLy8gRklYTUU6IGxlbmd0
aCBuZWVkcyB0byBiZSBhIG11bHRpcGxlIG9mIDIuCisgICAgQVNTRVJUKCEoYXJyYXkuYnVmU2l6
ZSAlIDIpKTsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47
CiAKLSAgICA6OmdsVW5pZm9ybTJpdihsb2NhdGlvbiwgc2l6ZSwgYXJyYXkpOworICAgIDo6Z2xV
bmlmb3JtMml2KGxvY2F0aW9uLCBhcnJheS5idWZTaXplIC8gMiwgYXJyYXkuZGF0YSk7CiB9CiAK
IHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0zaShHQ0dMaW50IGxvY2F0aW9u
LCBHQ0dMaW50IHYwLCBHQ0dMaW50IHYxLCBHQ0dMaW50IHYyKQpAQCAtMTUxNSwxMyArMTUxNSwx
MyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtM2koR0NHTGludCBsb2Nh
dGlvbiwgR0NHTGludCB2MCwgR0NHTGludCB2MQogICAgIDo6Z2xVbmlmb3JtM2kobG9jYXRpb24s
IHYwLCB2MSwgdjIpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3Jt
M2l2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBzaXplLCBjb25zdCBHQ0dMaW50KiBhcnJh
eSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0zaXYoR0NHTGludCBsb2Nh
dGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gYXJyYXkpCiB7Ci0gICAgLy8gRklYTUU6IGxl
bmd0aCBuZWVkcyB0byBiZSBhIG11bHRpcGxlIG9mIDMuCisgICAgQVNTRVJUKCEoYXJyYXkuYnVm
U2l6ZSAlIDMpKTsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1
cm47CiAKLSAgICA6OmdsVW5pZm9ybTNpdihsb2NhdGlvbiwgc2l6ZSwgYXJyYXkpOworICAgIDo6
Z2xVbmlmb3JtM2l2KGxvY2F0aW9uLCBhcnJheS5idWZTaXplIC8gMywgYXJyYXkuZGF0YSk7CiB9
CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm00aShHQ0dMaW50IGxvY2F0
aW9uLCBHQ0dMaW50IHYwLCBHQ0dMaW50IHYxLCBHQ0dMaW50IHYyLCBHQ0dMaW50IHYzKQpAQCAt
MTUzMiw0MCArMTUzMiw0MCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3Jt
NGkoR0NHTGludCBsb2NhdGlvbiwgR0NHTGludCB2MCwgR0NHTGludCB2MQogICAgIDo6Z2xVbmlm
b3JtNGkobG9jYXRpb24sIHYwLCB2MSwgdjIsIHYzKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6dW5pZm9ybTRpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgc2l6ZSwg
Y29uc3QgR0NHTGludCogYXJyYXkpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlm
b3JtNGl2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+IGFycmF5KQog
ewotICAgIC8vIEZJWE1FOiBsZW5ndGggbmVlZHMgdG8gYmUgYSBtdWx0aXBsZSBvZiA0LgorICAg
IEFTU0VSVCghKGFycmF5LmJ1ZlNpemUgJSA0KSk7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJl
bnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgOjpnbFVuaWZvcm00aXYobG9jYXRpb24sIHNp
emUsIGFycmF5KTsKKyAgICA6OmdsVW5pZm9ybTRpdihsb2NhdGlvbiwgYXJyYXkuYnVmU2l6ZSAv
IDQsIGFycmF5LmRhdGEpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlm
b3JtTWF0cml4MmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBzaXplLCBHQ0dMYm9vbGVh
biB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogYXJyYXkpCit2b2lkIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4MmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFu
IHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiBhcnJheSkKIHsKLSAgICAvLyBG
SVhNRTogbGVuZ3RoIG5lZWRzIHRvIGJlIGEgbXVsdGlwbGUgb2YgNC4KKyAgICBBU1NFUlQoIShh
cnJheS5idWZTaXplICUgNCkpOwogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIDo6Z2xVbmlmb3JtTWF0cml4MmZ2KGxvY2F0aW9uLCBzaXplLCB0
cmFuc3Bvc2UsIGFycmF5KTsKKyAgICA6OmdsVW5pZm9ybU1hdHJpeDJmdihsb2NhdGlvbiwgYXJy
YXkuYnVmU2l6ZSAvIDQsIHRyYW5zcG9zZSwgYXJyYXkuZGF0YSk7CiB9CiAKLXZvaWQgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXgzZnYoR0NHTGludCBsb2NhdGlvbiwgR0NH
THNpemVpIHNpemUsIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiBhcnJh
eSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXgzZnYoR0NHTGlu
dCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxv
YXQ+IGFycmF5KQogewotICAgIC8vIEZJWE1FOiBsZW5ndGggbmVlZHMgdG8gYmUgYSBtdWx0aXBs
ZSBvZiA5LgorICAgIEFTU0VSVCghKGFycmF5LmJ1ZlNpemUgJSA5KSk7CiAgICAgaWYgKCFtYWtl
Q29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgOjpnbFVuaWZvcm1NYXRy
aXgzZnYobG9jYXRpb24sIHNpemUsIHRyYW5zcG9zZSwgYXJyYXkpOworICAgIDo6Z2xVbmlmb3Jt
TWF0cml4M2Z2KGxvY2F0aW9uLCBhcnJheS5idWZTaXplIC8gOSwgdHJhbnNwb3NlLCBhcnJheS5k
YXRhKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybU1hdHJpeDRm
dihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgc2l6ZSwgR0NHTGJvb2xlYW4gdHJhbnNwb3Nl
LCBjb25zdCBHQ0dMZmxvYXQqIGFycmF5KQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
dW5pZm9ybU1hdHJpeDRmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2Us
IEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gYXJyYXkpCiB7Ci0gICAgLy8gRklYTUU6IGxlbmd0
aCBuZWVkcyB0byBiZSBhIG11bHRpcGxlIG9mIDE2LgorICAgIEFTU0VSVCghKGFycmF5LmJ1ZlNp
emUgJSAxNikpOwogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIDo6Z2xVbmlmb3JtTWF0cml4NGZ2KGxvY2F0aW9uLCBzaXplLCB0cmFuc3Bvc2Us
IGFycmF5KTsKKyAgICA6OmdsVW5pZm9ybU1hdHJpeDRmdihsb2NhdGlvbiwgYXJyYXkuYnVmU2l6
ZSAvIDE2LCB0cmFuc3Bvc2UsIGFycmF5LmRhdGEpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjp1c2VQcm9ncmFtKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSkKQEAgLTE1OTQs
MTIgKzE1OTQsMTIgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmli
MWYoR0NHTHVpbnQgaW5kZXgsIEdDR0xmbG9hdCB2MCkKICAgICA6OmdsVmVydGV4QXR0cmliMWYo
aW5kZXgsIHYwKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0
cmliMWZ2KEdDR0x1aW50IGluZGV4LCBjb25zdCBHQ0dMZmxvYXQqIGFycmF5KQordm9pZCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliMWZ2KEdDR0x1aW50IGluZGV4LCBHQ0dM
U3Bhbjxjb25zdCBHQ0dMZmxvYXQsIDE+IGFycmF5KQogewogICAgIGlmICghbWFrZUNvbnRleHRD
dXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIDo6Z2xWZXJ0ZXhBdHRyaWIxZnYoaW5k
ZXgsIGFycmF5KTsKKyAgICA6OmdsVmVydGV4QXR0cmliMWZ2KGluZGV4LCBhcnJheS5kYXRhKTsK
IH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliMmYoR0NHTHVp
bnQgaW5kZXgsIEdDR0xmbG9hdCB2MCwgR0NHTGZsb2F0IHYxKQpAQCAtMTYxMCwxMiArMTYxMCwx
MiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2ZXJ0ZXhBdHRyaWIyZihHQ0dMdWlu
dCBpbmRleCwgR0NHTGZsb2F0IHYwLCBHQ0dMZgogICAgIDo6Z2xWZXJ0ZXhBdHRyaWIyZihpbmRl
eCwgdjAsIHYxKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0
cmliMmZ2KEdDR0x1aW50IGluZGV4LCBjb25zdCBHQ0dMZmxvYXQqIGFycmF5KQordm9pZCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliMmZ2KEdDR0x1aW50IGluZGV4LCBHQ0dM
U3Bhbjxjb25zdCBHQ0dMZmxvYXQsIDI+IGFycmF5KQogewogICAgIGlmICghbWFrZUNvbnRleHRD
dXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIDo6Z2xWZXJ0ZXhBdHRyaWIyZnYoaW5k
ZXgsIGFycmF5KTsKKyAgICA6OmdsVmVydGV4QXR0cmliMmZ2KGluZGV4LCBhcnJheS5kYXRhKTsK
IH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliM2YoR0NHTHVp
bnQgaW5kZXgsIEdDR0xmbG9hdCB2MCwgR0NHTGZsb2F0IHYxLCBHQ0dMZmxvYXQgdjIpCkBAIC0x
NjI2LDEyICsxNjI2LDEyIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZlcnRleEF0
dHJpYjNmKEdDR0x1aW50IGluZGV4LCBHQ0dMZmxvYXQgdjAsIEdDR0xmCiAgICAgOjpnbFZlcnRl
eEF0dHJpYjNmKGluZGV4LCB2MCwgdjEsIHYyKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6dmVydGV4QXR0cmliM2Z2KEdDR0x1aW50IGluZGV4LCBjb25zdCBHQ0dMZmxvYXQq
IGFycmF5KQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliM2Z2KEdD
R0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQsIDM+IGFycmF5KQogewogICAg
IGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIDo6Z2xW
ZXJ0ZXhBdHRyaWIzZnYoaW5kZXgsIGFycmF5KTsKKyAgICA6OmdsVmVydGV4QXR0cmliM2Z2KGlu
ZGV4LCBhcnJheS5kYXRhKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVy
dGV4QXR0cmliNGYoR0NHTHVpbnQgaW5kZXgsIEdDR0xmbG9hdCB2MCwgR0NHTGZsb2F0IHYxLCBH
Q0dMZmxvYXQgdjIsIEdDR0xmbG9hdCB2MykKQEAgLTE2NDIsMTIgKzE2NDIsMTIgQEAgdm9pZCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliNGYoR0NHTHVpbnQgaW5kZXgsIEdD
R0xmbG9hdCB2MCwgR0NHTGYKICAgICA6OmdsVmVydGV4QXR0cmliNGYoaW5kZXgsIHYwLCB2MSwg
djIsIHYzKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmli
NGZ2KEdDR0x1aW50IGluZGV4LCBjb25zdCBHQ0dMZmxvYXQqIGFycmF5KQordm9pZCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliNGZ2KEdDR0x1aW50IGluZGV4LCBHQ0dMU3Bh
bjxjb25zdCBHQ0dMZmxvYXQsIDQ+IGFycmF5KQogewogICAgIGlmICghbWFrZUNvbnRleHRDdXJy
ZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIDo6Z2xWZXJ0ZXhBdHRyaWI0ZnYoaW5kZXgs
IGFycmF5KTsKKyAgICA6OmdsVmVydGV4QXR0cmliNGZ2KGluZGV4LCBhcnJheS5kYXRhKTsKIH0K
IAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliUG9pbnRlcihHQ0dM
dWludCBpbmRleCwgR0NHTGludCBzaXplLCBHQ0dMZW51bSB0eXBlLCBHQ0dMYm9vbGVhbiBub3Jt
YWxpemVkLCBHQ0dMc2l6ZWkgc3RyaWRlLCBHQ0dMaW50cHRyIG9mZnNldCkKQEAgLTIwNTUsNyAr
MjA1NSw3IEBAIEdDR0xzaXplaXB0ciBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VmVydGV4
QXR0cmliT2Zmc2V0KEdDR0x1aW50IGluZGV4LCBHQ0dMCiAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PEdDR0xzaXplaXB0cj4ocmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4ocG9pbnRlcikpOwogfQog
Ci12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp0ZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRh
cmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2ZmLCBHQ0dMaW50IHlvZmYsIEdDR0xzaXpl
aSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBl
LCBjb25zdCB2b2lkKiBwaXhlbHMpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp0ZXhT
dWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2ZmLCBH
Q0dMaW50IHlvZmYsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0g
Zm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gcGl4ZWxzKQog
ewogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTIw
ODMsMjUgKzIwODMsMjUgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dGV4U3ViSW1h
Z2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0wKICAgICB9CiAKICAgICAv
LyBGSVhNRTogd2Ugd2lsbCBuZWVkIHRvIGRlYWwgd2l0aCBQaXhlbFN0b3JlIHBhcmFtcyB3aGVu
IGRlYWxpbmcgd2l0aCBpbWFnZSBidWZmZXJzIHRoYXQgZGlmZmVyIGZyb20gdGhlIHN1YmltYWdl
IHNpemUuCi0gICAgOjpnbFRleFN1YkltYWdlMkQodGFyZ2V0LCBsZXZlbCwgeG9mZiwgeW9mZiwg
d2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBwaXhlbHMpOworICAgIDo6Z2xUZXhTdWJJbWFn
ZTJEKHRhcmdldCwgbGV2ZWwsIHhvZmYsIHlvZmYsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlw
ZSwgcGl4ZWxzLmRhdGEpOwogICAgIG1fc3RhdGUudGV4dHVyZVNlZWRDb3VudC5hZGQobV9zdGF0
ZS5jdXJyZW50Qm91bmRUZXh0dXJlKCkpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpjb21wcmVzc2VkVGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWws
IEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWln
aHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBjb25zdCB2b2lkKiBkYXRh
KQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y29tcHJlc3NlZFRleEltYWdlMkQoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NH
THNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTHNpemVp
IGltYWdlU2l6ZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEpCiB7CiAgICAgaWYgKCFt
YWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgOjpnbENvbXByZXNz
ZWRUZXhJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0
LCBib3JkZXIsIGltYWdlU2l6ZSwgZGF0YSk7CisgICAgOjpnbENvbXByZXNzZWRUZXhJbWFnZTJE
KHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIsIGlt
YWdlU2l6ZSwgZGF0YS5kYXRhKTsKICAgICBtX3N0YXRlLnRleHR1cmVTZWVkQ291bnQuYWRkKG1f
c3RhdGUuY3VycmVudEJvdW5kVGV4dHVyZSgpKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6Y29tcHJlc3NlZFRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50
IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRo
LCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFnZVNpemUs
IGNvbnN0IHZvaWQqIGRhdGEpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjb21wcmVz
c2VkVGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQg
eG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWln
aHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTFNwYW48Y29uc3Qg
R0NHTHZvaWQ+IGRhdGEpCiB7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgOjpnbENvbXByZXNzZWRUZXhTdWJJbWFnZTJEKHRhcmdldCwgbGV2
ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgaW1hZ2VTaXplLCBk
YXRhKTsKKyAgICA6OmdsQ29tcHJlc3NlZFRleFN1YkltYWdlMkQodGFyZ2V0LCBsZXZlbCwgeG9m
ZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCBpbWFnZVNpemUsIGRhdGEuZGF0
YSk7CiAgICAgbV9zdGF0ZS50ZXh0dXJlU2VlZENvdW50LmFkZChtX3N0YXRlLmN1cnJlbnRCb3Vu
ZFRleHR1cmUoKSk7CiB9CiAKQEAgLTIzOTUsMTcgKzIzOTUsMTUgQEAgdm9pZCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6ZnJhbWVidWZmZXJUZXh0dXJlTGF5ZXIoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMZW51bQogICAgIFVOVVNFRF9QQVJBTShsYXllcik7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OmludmFsaWRhdGVGcmFtZWJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQsIEdDR0xz
aXplaSBudW1BdHRhY2htZW50cywgY29uc3QgR0NHTGVudW0qIGF0dGFjaG1lbnRzKQordm9pZCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6aW52YWxpZGF0ZUZyYW1lYnVmZmVyKEdDR0xlbnVtIHRh
cmdldCwgR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+IGF0dGFjaG1lbnRzKQogewogICAgIFVOVVNF
RF9QQVJBTSh0YXJnZXQpOwotICAgIFVOVVNFRF9QQVJBTShudW1BdHRhY2htZW50cyk7CiAgICAg
VU5VU0VEX1BBUkFNKGF0dGFjaG1lbnRzKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6aW52YWxpZGF0ZVN1YkZyYW1lYnVmZmVyKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVp
IG51bUF0dGFjaG1lbnRzLCBjb25zdCBHQ0dMZW51bSogYXR0YWNobWVudHMsIEdDR0xpbnQgeCwg
R0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpCit2b2lkIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjppbnZhbGlkYXRlU3ViRnJhbWVidWZmZXIoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4gYXR0YWNobWVudHMsIEdDR0xpbnQgeCwgR0NH
TGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpCiB7CiAgICAgVU5VU0VE
X1BBUkFNKHRhcmdldCk7Ci0gICAgVU5VU0VEX1BBUkFNKG51bUF0dGFjaG1lbnRzKTsKICAgICBV
TlVTRURfUEFSQU0oYXR0YWNobWVudHMpOwogICAgIFVOVVNFRF9QQVJBTSh4KTsKICAgICBVTlVT
RURfUEFSQU0oeSk7CkBAIC0yNTI5LDkwICsyNTI3LDcwIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OnVuaWZvcm00dWkoR0NHTGludCBsb2NhdGlvbiwgR0NHTHVpbnQgdjAsIEdDR0x1
aW50CiAgICAgVU5VU0VEX1BBUkFNKHYzKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6dW5pZm9ybTF1aXYoR0NHTGludCBsb2NhdGlvbiwgY29uc3QgR0NHTHVpbnQqIGRhdGEs
IEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQordm9pZCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6dW5pZm9ybTF1aXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29u
c3QgR0NHTHVpbnQ+IGRhdGEpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGxvY2F0aW9uKTsKICAgICBV
TlVTRURfUEFSQU0oZGF0YSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY09mZnNldCk7Ci0gICAgVU5V
U0VEX1BBUkFNKHNyY0xlbmd0aCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OnVuaWZvcm0ydWl2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0x1aW50KiBkYXRhLCBHQ0dM
dWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OnVuaWZvcm0ydWl2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdD
R0x1aW50PiBkYXRhKQogewogICAgIFVOVVNFRF9QQVJBTShsb2NhdGlvbik7CiAgICAgVU5VU0VE
X1BBUkFNKGRhdGEpOwotICAgIFVOVVNFRF9QQVJBTShzcmNPZmZzZXQpOwotICAgIFVOVVNFRF9Q
QVJBTShzcmNMZW5ndGgpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlm
b3JtM3VpdihHQ0dMaW50IGxvY2F0aW9uLCBjb25zdCBHQ0dMdWludCogZGF0YSwgR0NHTHVpbnQg
c3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjp1bmlmb3JtM3VpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdWlu
dD4gZGF0YSkKIHsKICAgICBVTlVTRURfUEFSQU0obG9jYXRpb24pOwogICAgIFVOVVNFRF9QQVJB
TShkYXRhKTsKLSAgICBVTlVTRURfUEFSQU0oc3JjT2Zmc2V0KTsKLSAgICBVTlVTRURfUEFSQU0o
c3JjTGVuZ3RoKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTR1
aXYoR0NHTGludCBsb2NhdGlvbiwgY29uc3QgR0NHTHVpbnQqIGRhdGEsIEdDR0x1aW50IHNyY09m
ZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
dW5pZm9ybTR1aXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTHVpbnQ+IGRh
dGEpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGxvY2F0aW9uKTsKICAgICBVTlVTRURfUEFSQU0oZGF0
YSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY09mZnNldCk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY0xl
bmd0aCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXgy
eDNmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xm
bG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCit2b2lk
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4MngzZnYoR0NHTGludCBsb2Nh
dGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRh
dGEpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGxvY2F0aW9uKTsKICAgICBVTlVTRURfUEFSQU0odHJh
bnNwb3NlKTsKICAgICBVTlVTRURfUEFSQU0oZGF0YSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY09m
ZnNldCk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY0xlbmd0aCk7CiB9CiAKLXZvaWQgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXgzeDJmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dM
Ym9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zm
c2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1
bmlmb3JtTWF0cml4M3gyZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3Nl
LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGxv
Y2F0aW9uKTsKICAgICBVTlVTRURfUEFSQU0odHJhbnNwb3NlKTsKICAgICBVTlVTRURfUEFSQU0o
ZGF0YSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY09mZnNldCk7Ci0gICAgVU5VU0VEX1BBUkFNKHNy
Y0xlbmd0aCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRy
aXgyeDRmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdD
R0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCit2
b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4Mng0ZnYoR0NHTGludCBs
b2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+
IGRhdGEpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGxvY2F0aW9uKTsKICAgICBVTlVTRURfUEFSQU0o
dHJhbnNwb3NlKTsKICAgICBVTlVTRURfUEFSQU0oZGF0YSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNy
Y09mZnNldCk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY0xlbmd0aCk7CiB9CiAKLXZvaWQgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXg0eDJmdihHQ0dMaW50IGxvY2F0aW9uLCBH
Q0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3Jj
T2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
Ojp1bmlmb3JtTWF0cml4NHgyZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNw
b3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEpCiB7CiAgICAgVU5VU0VEX1BBUkFN
KGxvY2F0aW9uKTsKICAgICBVTlVTRURfUEFSQU0odHJhbnNwb3NlKTsKICAgICBVTlVTRURfUEFS
QU0oZGF0YSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY09mZnNldCk7Ci0gICAgVU5VU0VEX1BBUkFN
KHNyY0xlbmd0aCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1N
YXRyaXgzeDRmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0
IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgp
Cit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4M3g0ZnYoR0NHTGlu
dCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxv
YXQ+IGRhdGEpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGxvY2F0aW9uKTsKICAgICBVTlVTRURfUEFS
QU0odHJhbnNwb3NlKTsKICAgICBVTlVTRURfUEFSQU0oZGF0YSk7Ci0gICAgVU5VU0VEX1BBUkFN
KHNyY09mZnNldCk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY0xlbmd0aCk7CiB9CiAKLXZvaWQgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXg0eDNmdihHQ0dMaW50IGxvY2F0aW9u
LCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQg
c3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjp1bmlmb3JtTWF0cml4NHgzZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJh
bnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEpCiB7CiAgICAgVU5VU0VEX1BB
UkFNKGxvY2F0aW9uKTsKICAgICBVTlVTRURfUEFSQU0odHJhbnNwb3NlKTsKICAgICBVTlVTRURf
UEFSQU0oZGF0YSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY09mZnNldCk7Ci0gICAgVU5VU0VEX1BB
UkFNKHNyY0xlbmd0aCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZlcnRl
eEF0dHJpYkk0aShHQ0dMdWludCBpbmRleCwgR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xpbnQg
eiwgR0NHTGludCB3KQpAQCAtMjYyNCw3ICsyNjAyLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6dmVydGV4QXR0cmliSTRpKEdDR0x1aW50IGluZGV4LCBHQ0dMaW50IHgsIEdDR0xp
bnQKICAgICBVTlVTRURfUEFSQU0odyk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OnZlcnRleEF0dHJpYkk0aXYoR0NHTHVpbnQgaW5kZXgsIGNvbnN0IEdDR0xpbnQqIHZhbHVl
cykKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYkk0aXYoR0NHTHVp
bnQgaW5kZXgsIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQsIDQ+IHZhbHVlcykKIHsKICAgICBVTlVT
RURfUEFSQU0oaW5kZXgpOwogICAgIFVOVVNFRF9QQVJBTSh2YWx1ZXMpOwpAQCAtMjYzOSw3ICsy
NjE3LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliSTR1aShH
Q0dMdWludCBpbmRleCwgR0NHTHVpbnQgeCwgR0NHTHUKICAgICBVTlVTRURfUEFSQU0odyk7CiB9
CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYkk0dWl2KEdDR0x1
aW50IGluZGV4LCBjb25zdCBHQ0dMdWludCogdmFsdWVzKQordm9pZCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6dmVydGV4QXR0cmliSTR1aXYoR0NHTHVpbnQgaW5kZXgsIEdDR0xTcGFuPGNvbnN0
IEdDR0x1aW50LCA0PiB2YWx1ZXMpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGluZGV4KTsKICAgICBV
TlVTRURfUEFSQU0odmFsdWVzKTsKQEAgLTI2NjQsMzQgKzI2NDIsMzAgQEAgdm9pZCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6ZHJhd1JhbmdlRWxlbWVudHMoR0NHTGVudW0gbW9kZSwgR0NHTHVp
bnQgc3RhcnQsIEcKICAgICBVTlVTRURfUEFSQU0ob2Zmc2V0KTsKIH0KIAotdm9pZCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6ZHJhd0J1ZmZlcnMoR0NHTHNpemVpIG4sIGNvbnN0IEdDR0xlbnVt
KiBidWZzKQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6ZHJhd0J1ZmZlcnMoR0NHTFNw
YW48Y29uc3QgR0NHTGVudW0+IGJ1ZnMpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKG4pOwogICAgIFVO
VVNFRF9QQVJBTShidWZzKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y2xl
YXJCdWZmZXJpdihHQ0dMZW51bSBidWZmZXIsIEdDR0xpbnQgZHJhd2J1ZmZlciwgY29uc3QgR0NH
TGludCogdmFsdWVzLCBHQ0dMdWludCBzcmNPZmZzZXQpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpjbGVhckJ1ZmZlcml2KEdDR0xlbnVtIGJ1ZmZlciwgR0NHTGludCBkcmF3YnVmZmVy
LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50PiB2YWx1ZXMpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGJ1
ZmZlcik7CiAgICAgVU5VU0VEX1BBUkFNKGRyYXdidWZmZXIpOwogICAgIFVOVVNFRF9QQVJBTSh2
YWx1ZXMpOwotICAgIFVOVVNFRF9QQVJBTShzcmNPZmZzZXQpOwogfQogCi12b2lkIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpjbGVhckJ1ZmZlcnVpdihHQ0dMZW51bSBidWZmZXIsIEdDR0xpbnQg
ZHJhd2J1ZmZlciwgY29uc3QgR0NHTHVpbnQqIHZhbHVlcywgR0NHTHVpbnQgc3JjT2Zmc2V0KQor
dm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y2xlYXJCdWZmZXJ1aXYoR0NHTGVudW0gYnVm
ZmVyLCBHQ0dMaW50IGRyYXdidWZmZXIsIEdDR0xTcGFuPGNvbnN0IEdDR0x1aW50PiB2YWx1ZXMp
CiB7CiAgICAgVU5VU0VEX1BBUkFNKGJ1ZmZlcik7CiAgICAgVU5VU0VEX1BBUkFNKGRyYXdidWZm
ZXIpOwogICAgIFVOVVNFRF9QQVJBTSh2YWx1ZXMpOwotICAgIFVOVVNFRF9QQVJBTShzcmNPZmZz
ZXQpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjbGVhckJ1ZmZlcmZ2KEdD
R0xlbnVtIGJ1ZmZlciwgR0NHTGludCBkcmF3YnVmZmVyLCBjb25zdCBHQ0dMZmxvYXQqIHZhbHVl
cywgR0NHTHVpbnQgc3JjT2Zmc2V0KQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y2xl
YXJCdWZmZXJmdihHQ0dMZW51bSBidWZmZXIsIEdDR0xpbnQgZHJhd2J1ZmZlciwgR0NHTFNwYW48
Y29uc3QgR0NHTGZsb2F0PiB2YWx1ZXMpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGJ1ZmZlcik7CiAg
ICAgVU5VU0VEX1BBUkFNKGRyYXdidWZmZXIpOwogICAgIFVOVVNFRF9QQVJBTSh2YWx1ZXMpOwot
ICAgIFVOVVNFRF9QQVJBTShzcmNPZmZzZXQpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpjbGVhckJ1ZmZlcmZpKEdDR0xlbnVtIGJ1ZmZlciwgR0NHTGludCBkcmF3YnVmZmVy
LCBHQ0dMZmxvYXQgZGVwdGgsIEdDR0xpbnQgc3RlbmNpbCkKQEAgLTI5NjksMTc4ICsyOTQzLDgz
IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1CbG9ja0JpbmRpbmcoUGxh
dGZvcm1HTE9iamVjdCwgR0NHTHVpbnQsIEdDCiB9CiAjZW5kaWYKIAotdm9pZCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6Y29tcHJlc3NlZFRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
aW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dM
c2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTGlu
dHB0ciBvZmZzZXQpCi17Ci0gICAgVU5VU0VEX1BBUkFNKHRhcmdldCk7Ci0gICAgVU5VU0VEX1BB
UkFNKGxldmVsKTsKLSAgICBVTlVTRURfUEFSQU0oaW50ZXJuYWxmb3JtYXQpOwotICAgIFVOVVNF
RF9QQVJBTSh3aWR0aCk7Ci0gICAgVU5VU0VEX1BBUkFNKGhlaWdodCk7Ci0gICAgVU5VU0VEX1BB
UkFNKGJvcmRlcik7Ci0gICAgVU5VU0VEX1BBUkFNKGltYWdlU2l6ZSk7Ci0gICAgVU5VU0VEX1BB
UkFNKG9mZnNldCk7Ci19Ci0KLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNvbXByZXNz
ZWRUZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50
ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBi
b3JkZXIsIGNvbnN0IHZvaWQqIHNyY0RhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQg
c3JjTGVuZ3RoT3ZlcnJpZGUpCi17Ci0gICAgVU5VU0VEX1BBUkFNKHRhcmdldCk7Ci0gICAgVU5V
U0VEX1BBUkFNKGxldmVsKTsKLSAgICBVTlVTRURfUEFSQU0oaW50ZXJuYWxmb3JtYXQpOwotICAg
IFVOVVNFRF9QQVJBTSh3aWR0aCk7Ci0gICAgVU5VU0VEX1BBUkFNKGhlaWdodCk7Ci0gICAgVU5V
U0VEX1BBUkFNKGJvcmRlcik7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY0RhdGEpOwotICAgIFVOVVNF
RF9QQVJBTShzcmNPZmZzZXQpOwotICAgIFVOVVNFRF9QQVJBTShzcmNMZW5ndGhPdmVycmlkZSk7
Ci19Ci0KLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNvbXByZXNzZWRUZXhTdWJJbWFn
ZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dM
aW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0g
Zm9ybWF0LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMaW50cHRyIG9mZnNldCkKK3ZvaWQgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRQaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHksIEdD
R0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51
bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCkKIHsKLSAgICBVTlVTRURfUEFSQU0odGFyZ2V0KTsK
LSAgICBVTlVTRURfUEFSQU0obGV2ZWwpOwotICAgIFVOVVNFRF9QQVJBTSh4b2Zmc2V0KTsKLSAg
ICBVTlVTRURfUEFSQU0oeW9mZnNldCk7CisgICAgVU5VU0VEX1BBUkFNKHgpOworICAgIFVOVVNF
RF9QQVJBTSh5KTsKICAgICBVTlVTRURfUEFSQU0od2lkdGgpOwogICAgIFVOVVNFRF9QQVJBTSho
ZWlnaHQpOwogICAgIFVOVVNFRF9QQVJBTShmb3JtYXQpOwotICAgIFVOVVNFRF9QQVJBTShpbWFn
ZVNpemUpOworICAgIFVOVVNFRF9QQVJBTSh0eXBlKTsKICAgICBVTlVTRURfUEFSQU0ob2Zmc2V0
KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y29tcHJlc3NlZFRleFN1Yklt
YWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdD
R0xpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51
bSBmb3JtYXQsIGNvbnN0IHZvaWQqIHNyY0RhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVp
bnQgc3JjTGVuZ3RoT3ZlcnJpZGUpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFk
UGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBo
ZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgY29uc3Qgdm9pZCogZHN0RGF0
YSwgR0NHTHVpbnQgZHN0T2Zmc2V0KQogewotICAgIFVOVVNFRF9QQVJBTSh0YXJnZXQpOwotICAg
IFVOVVNFRF9QQVJBTShsZXZlbCk7Ci0gICAgVU5VU0VEX1BBUkFNKHhvZmZzZXQpOwotICAgIFVO
VVNFRF9QQVJBTSh5b2Zmc2V0KTsKKyAgICBVTlVTRURfUEFSQU0oeCk7CisgICAgVU5VU0VEX1BB
UkFNKHkpOwogICAgIFVOVVNFRF9QQVJBTSh3aWR0aCk7CiAgICAgVU5VU0VEX1BBUkFNKGhlaWdo
dCk7CiAgICAgVU5VU0VEX1BBUkFNKGZvcm1hdCk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY0RhdGEp
OwotICAgIFVOVVNFRF9QQVJBTShzcmNPZmZzZXQpOwotICAgIFVOVVNFRF9QQVJBTShzcmNMZW5n
dGhPdmVycmlkZSk7Ci19Ci0KLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0x
ZnYoR0NHTGludCBsb2NhdGlvbiwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNP
ZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKLXsKLSAgICBVTlVTRURfUEFSQU0obG9jYXRpb24p
OwotICAgIFVOVVNFRF9QQVJBTShkYXRhKTsKLSAgICBVTlVTRURfUEFSQU0oc3JjT2Zmc2V0KTsK
LSAgICBVTlVTRURfUEFSQU0oc3JjTGVuZ3RoKTsKKyAgICBVTlVTRURfUEFSQU0odHlwZSk7Cisg
ICAgVU5VU0VEX1BBUkFNKGRzdERhdGEpOworICAgIFVOVVNFRF9QQVJBTShkc3RPZmZzZXQpOwog
fQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMmZ2KEdDR0xpbnQgbG9j
YXRpb24sIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWlu
dCBzcmNMZW5ndGgpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRBY3RpdmVVbmlm
b3JtQmxvY2tpdihHQ0dMdWludCBwcm9ncmFtLCBHQ0dMdWludCB1bmlmb3JtQmxvY2tJbmRleCwg
R0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xpbnQ+IHBhcmFtcykKIHsKLSAgICBVTlVTRURf
UEFSQU0obG9jYXRpb24pOwotICAgIFVOVVNFRF9QQVJBTShkYXRhKTsKLSAgICBVTlVTRURfUEFS
QU0oc3JjT2Zmc2V0KTsKLSAgICBVTlVTRURfUEFSQU0oc3JjTGVuZ3RoKTsKKyAgICBVTlVTRURf
UEFSQU0ocHJvZ3JhbSk7CisgICAgVU5VU0VEX1BBUkFNKHVuaWZvcm1CbG9ja0luZGV4KTsKKyAg
ICBVTlVTRURfUEFSQU0ocG5hbWUpOworICAgIFVOVVNFRF9QQVJBTShwYXJhbXMpOwogfQogCi12
b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtM2Z2KEdDR0xpbnQgbG9jYXRpb24s
IGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNM
ZW5ndGgpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp0ZXhJbWFnZTJEKEdDR0xlbnVt
LCBHQ0dMaW50LCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWksIEdDR0xpbnQsIEdDR0xl
bnVtLCBHQ0dMZW51bSAsIEdDR0xpbnRwdHIpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGxvY2F0aW9u
KTsKLSAgICBVTlVTRURfUEFSQU0oZGF0YSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY09mZnNldCk7
Ci0gICAgVU5VU0VEX1BBUkFNKHNyY0xlbmd0aCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OnVuaWZvcm00ZnYoR0NHTGludCBsb2NhdGlvbiwgY29uc3QgR0NHTGZsb2F0KiBk
YXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKK3ZvaWQgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OnRleFN1YkltYWdlMkQoR0NHTGVudW0sIEdDR0xpbnQsIEdDR0xp
bnQsIEdDR0xpbnQsIEdDR0xzaXplaSwgR0NHTHNpemVpLCBHQ0dMZW51bSwgR0NHTGVudW0sIEdD
R0xpbnRwdHIpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGxvY2F0aW9uKTsKLSAgICBVTlVTRURfUEFS
QU0oZGF0YSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY09mZnNldCk7Ci0gICAgVU5VU0VEX1BBUkFN
KHNyY0xlbmd0aCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0x
aXYoR0NHTGludCBsb2NhdGlvbiwgY29uc3QgR0NHTGludCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zm
c2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpj
b21wcmVzc2VkVGV4SW1hZ2UyRChHQ0dMZW51bSwgR0NHTGludCwgR0NHTGVudW0sIEdDR0xzaXpl
aSwgR0NHTHNpemVpLCBHQ0dMaW50LCBHQ0dMc2l6ZWksIEdDR0xpbnRwdHIpCiB7Ci0gICAgVU5V
U0VEX1BBUkFNKGxvY2F0aW9uKTsKLSAgICBVTlVTRURfUEFSQU0oZGF0YSk7Ci0gICAgVU5VU0VE
X1BBUkFNKHNyY09mZnNldCk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY0xlbmd0aCk7CiB9CiAKLXZv
aWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0yaXYoR0NHTGludCBsb2NhdGlvbiwg
Y29uc3QgR0NHTGludCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5n
dGgpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjb21wcmVzc2VkVGV4U3ViSW1hZ2Uy
RChHQ0dMZW51bSwgR0NHTGludCwgR0NHTGludCwgR0NHTGludCwgR0NHTHNpemVpLCBHQ0dMc2l6
ZWksIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xpbnRwdHIpCiB7Ci0gICAgVU5VU0VEX1BBUkFN
KGxvY2F0aW9uKTsKLSAgICBVTlVTRURfUEFSQU0oZGF0YSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNy
Y09mZnNldCk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY0xlbmd0aCk7CiB9CiAKLXZvaWQgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0zaXYoR0NHTGludCBsb2NhdGlvbiwgY29uc3QgR0NH
TGludCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCit2b2lk
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp0ZXhJbWFnZTNEKEdDR0xlbnVtLCBHQ0dMaW50LCBH
Q0dMaW50LCBHQ0dMc2l6ZWksIEdDR0xzaXplaSwgR0NHTHNpemVpLCBHQ0dMaW50LCBHQ0dMZW51
bSwgR0NHTGVudW0sIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPikKIHsKLSAgICBVTlVTRURfUEFS
QU0obG9jYXRpb24pOwotICAgIFVOVVNFRF9QQVJBTShkYXRhKTsKLSAgICBVTlVTRURfUEFSQU0o
c3JjT2Zmc2V0KTsKLSAgICBVTlVTRURfUEFSQU0oc3JjTGVuZ3RoKTsKIH0KIAotdm9pZCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTRpdihHQ0dMaW50IGxvY2F0aW9uLCBjb25zdCBH
Q0dMaW50KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKK3Zv
aWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnRleEltYWdlM0QoR0NHTGVudW0sIEdDR0xpbnQs
IEdDR0xpbnQsIEdDR0xzaXplaSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWksIEdDR0xpbnQsIEdDR0xl
bnVtLCBHQ0dMZW51bSwgR0NHTGludHB0cikKIHsKLSAgICBVTlVTRURfUEFSQU0obG9jYXRpb24p
OwotICAgIFVOVVNFRF9QQVJBTShkYXRhKTsKLSAgICBVTlVTRURfUEFSQU0oc3JjT2Zmc2V0KTsK
LSAgICBVTlVTRURfUEFSQU0oc3JjTGVuZ3RoKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6dW5pZm9ybU1hdHJpeDJmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0
cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dM
dWludCBzcmNMZW5ndGgpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp0ZXhTdWJJbWFn
ZTNEKEdDR0xlbnVtLCBHQ0dMaW50LCBHQ0dMaW50LCBHQ0dMaW50LCBHQ0dMaW50LCBHQ0dMc2l6
ZWksIEdDR0xzaXplaSwgR0NHTHNpemVpLCBHQ0dMZW51bSwgR0NHTGVudW0sIEdDR0xTcGFuPGNv
bnN0IEdDR0x2b2lkPikKIHsKLSAgICBVTlVTRURfUEFSQU0obG9jYXRpb24pOwotICAgIFVOVVNF
RF9QQVJBTSh0cmFuc3Bvc2UpOwotICAgIFVOVVNFRF9QQVJBTShkYXRhKTsKLSAgICBVTlVTRURf
UEFSQU0oc3JjT2Zmc2V0KTsKLSAgICBVTlVTRURfUEFSQU0oc3JjTGVuZ3RoKTsKIH0KIAotdm9p
ZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybU1hdHJpeDNmdihHQ0dMaW50IGxvY2F0
aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVp
bnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjp0ZXhTdWJJbWFnZTNEKEdDR0xlbnVtLCBHQ0dMaW50LCBHQ0dMaW50LCBHQ0dMaW50
LCBHQ0dMaW50LCBHQ0dMc2l6ZWksIEdDR0xzaXplaSwgR0NHTHNpemVpLCBHQ0dMZW51bSwgR0NH
TGVudW0sIEdDR0xpbnRwdHIpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGxvY2F0aW9uKTsKLSAgICBV
TlVTRURfUEFSQU0odHJhbnNwb3NlKTsKLSAgICBVTlVTRURfUEFSQU0oZGF0YSk7Ci0gICAgVU5V
U0VEX1BBUkFNKHNyY09mZnNldCk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY0xlbmd0aCk7CiB9CiAK
LXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXg0ZnYoR0NHTGludCBs
b2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdD
R0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQordm9pZCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6Y29tcHJlc3NlZFRleEltYWdlM0QoR0NHTGVudW0sIEdDR0xpbnQsIEdDR0xl
bnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSwgR0NHTHNpemVpLCBHQ0dMaW50LCBHQ0dMc2l6ZWks
IEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPikKIHsKLSAgICBVTlVTRURfUEFSQU0obG9jYXRpb24p
OwotICAgIFVOVVNFRF9QQVJBTSh0cmFuc3Bvc2UpOwotICAgIFVOVVNFRF9QQVJBTShkYXRhKTsK
LSAgICBVTlVTRURfUEFSQU0oc3JjT2Zmc2V0KTsKLSAgICBVTlVTRURfUEFSQU0oc3JjTGVuZ3Ro
KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZFBpeGVscyhHQ0dMaW50
IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51
bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KQordm9pZCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6Y29tcHJlc3NlZFRleEltYWdlM0QoR0NHTGVudW0sIEdDR0xpbnQs
IEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSwgR0NHTHNpemVpLCBHQ0dMaW50LCBHQ0dM
c2l6ZWksIEdDR0xpbnRwdHIpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHgpOwotICAgIFVOVVNFRF9Q
QVJBTSh5KTsKLSAgICBVTlVTRURfUEFSQU0od2lkdGgpOwotICAgIFVOVVNFRF9QQVJBTShoZWln
aHQpOwotICAgIFVOVVNFRF9QQVJBTShmb3JtYXQpOwotICAgIFVOVVNFRF9QQVJBTSh0eXBlKTsK
LSAgICBVTlVTRURfUEFSQU0ob2Zmc2V0KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6cmVhZFBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBH
Q0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIGNvbnN0IHZv
aWQqIGRzdERhdGEsIEdDR0x1aW50IGRzdE9mZnNldCkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OmNvbXByZXNzZWRUZXhTdWJJbWFnZTNEKEdDR0xlbnVtLCBHQ0dMaW50LCBHQ0dMaW50
LCBHQ0dMaW50LCBHQ0dMaW50LCBHQ0dMc2l6ZWksIEdDR0xzaXplaSwgR0NHTHNpemVpLCBHQ0dM
ZW51bSwgR0NHTHNpemVpLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4pCiB7Ci0gICAgVU5VU0VE
X1BBUkFNKHgpOwotICAgIFVOVVNFRF9QQVJBTSh5KTsKLSAgICBVTlVTRURfUEFSQU0od2lkdGgp
OwotICAgIFVOVVNFRF9QQVJBTShoZWlnaHQpOwotICAgIFVOVVNFRF9QQVJBTShmb3JtYXQpOwot
ICAgIFVOVVNFRF9QQVJBTSh0eXBlKTsKLSAgICBVTlVTRURfUEFSQU0oZHN0RGF0YSk7Ci0gICAg
VU5VU0VEX1BBUkFNKGRzdE9mZnNldCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OmdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2KEdDR0x1aW50IHByb2dyYW0sIEdDR0x1aW50IHVu
aWZvcm1CbG9ja0luZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGludD4gcGFyYW1z
KQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y29tcHJlc3NlZFRleFN1YkltYWdlM0Qo
R0NHTGVudW0sIEdDR0xpbnQsIEdDR0xpbnQsIEdDR0xpbnQsIEdDR0xpbnQsIEdDR0xzaXplaSwg
R0NHTHNpemVpLCBHQ0dMc2l6ZWksIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xpbnRwdHIpCiB7
Ci0gICAgVU5VU0VEX1BBUkFNKHByb2dyYW0pOwotICAgIFVOVVNFRF9QQVJBTSh1bmlmb3JtQmxv
Y2tJbmRleCk7Ci0gICAgVU5VU0VEX1BBUkFNKHBuYW1lKTsKLSAgICBVTlVTRURfUEFSQU0ocGFy
YW1zKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMRVMuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMRVMuY3BwCmlu
ZGV4IGExZDgwOTJiY2NhZTAwOGQ2ZTY5ZThjZDhmNmRkZmIxN2FjYWYwMGYuLjIzZDc0ZmE4MGQ3
MDc5MWJlNjAwZGY1OGU3NTYxNzMzOTZhYTU1MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEVTLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0xFUy5jcHAKQEAgLTIxNSwxNSArMjE1LDE0IEBAIHZvaWQgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OmdldFNoYWRlclByZWNpc2lvbkZvcm1hdChHQ0dMZW51bSBzaGFkZXJUeXBl
LCBHQ0dMCiAgICAgOjpnbEdldFNoYWRlclByZWNpc2lvbkZvcm1hdChzaGFkZXJUeXBlLCBwcmVj
aXNpb25UeXBlLCByYW5nZS5kYXRhLCBwcmVjaXNpb24pOwogfQogCi1ib29sIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjp0ZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwg
R0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdo
dCwgR0NHTGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgY29uc3Qg
dm9pZCogcGl4ZWxzKQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dGV4SW1hZ2UyRChH
Q0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBH
Q0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51
bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBwaXhlbHMp
CiB7Ci0gICAgaWYgKHdpZHRoICYmIGhlaWdodCAmJiAhcGl4ZWxzKSB7CisgICAgaWYgKHdpZHRo
ICYmIGhlaWdodCAmJiAhcGl4ZWxzLmRhdGEpIHsKICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3Io
SU5WQUxJRF9WQUxVRSk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAotICAgIHRleEltYWdlMkREaXJlY3QodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3Jt
YXQsIHdpZHRoLCBoZWlnaHQsIGJvcmRlciwgZm9ybWF0LCB0eXBlLCBwaXhlbHMpOwotICAgIHJl
dHVybiB0cnVlOworICAgIHRleEltYWdlMkREaXJlY3QodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxm
b3JtYXQsIHdpZHRoLCBoZWlnaHQsIGJvcmRlciwgZm9ybWF0LCB0eXBlLCBwaXhlbHMuZGF0YSk7
CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZhbGlkYXRlQXR0cmlidXRlcygp
Cg==
</data>
<flag name="commit-queue"
          id="431884"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>414898</attachid>
            <date>2020-11-26 05:43:53 -0800</date>
            <delta_ts>2020-11-26 05:50:22 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219256-20201126154350.patch</filename>
            <type>text/plain</type>
            <size>203740</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwMTY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzIzYWI2YjRlNmM0NDFj
MDYzZWM1Mzg0YzZmOTA5NDdiZDFhNDY5ZC4uNDYxNzUzYzg2N2RlMDc0MjA5Y2QzNzY2ODkzZGY5
NTQzMzJkMzRlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzNiBAQAorMjAyMC0xMS0yMyAgS2lt
bW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIEdyYXBoaWNzQ29u
dGV4dEdMIHNob3VsZCBoYXZlIHJvYnVzdCBtdWx0aXZhbHVlIHNldHRlcnMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxOTI1NgorCisgICAgICAgIFJl
dmlld2VkIGJ5IERlYW4gSmFja3Nvbi4KKworICAgICAgICBSZXBsYWNlIGJ1ZlNpemUsIHBvaW50
ZXIgcGFpcnMgYW5kIHBsYWluIHBvaW50ZXJzIGluIEdyYXBoaWNzQ29udGV4dEdMCisgICAgICAg
IHdpdGggR0NHTFNwYW4uIFRoaXMgbWFrZXMgaXQgZWFzaWVyIHRvIHVuZGVyc3RhbmQgaG93IG1h
bnkgdmFsdWVzIHRoZXJlCisgICAgICAgIGFyZSBwb2ludGVkIGJ5IHRoZSBwb2ludGVyLiBUaGlz
IGlzIG5lZWRlZCBmb3Igc2ltcGxlciBpbXBsZW1lbnRhdGlvbiBvZiBHUFUKKyAgICAgICAgcHJv
Y2VzcyBJUEMsIHdoZXJlIHRoZSBJUEMgbGF5ZXIgZG9lcyBub3QgbmVlZCB0byBpbnRlcnByZXQg
dGhlIE9wZW5HTAorICAgICAgICBwcm9wZXJ0aWVzLgorCisgICAgICAgIEluIFdlYkdMIGltcGxl
bWVudGF0aW9uLCBjaGFuZ2VzIHRoZSB2YWxpZGF0aW9uIGZ1bmN0aW9ucyB0byByZXR1cm4KKyAg
ICAgICAgdGhlIG1lbW9yeSByZWZlcmVuY2UgdGhhdCB3aWxsIGJlIHRvdWNoZWQgYnkgdGhlIHZh
bGlkIGZ1bmN0aW9uIGNhbGwuCisgICAgICAgIE9uIHZhbGlkYXRpb24gZmFpbHVyZSwgbnVsbG9w
dCB3aWxsIGJlIHJldHVybmVkLgorCisgICAgICAgIE1ha2VzIHRoZSBleGlzdGluZyBHcmFwaGlj
c0NvbnRleHRHTCB0ZXh0dXJlIGltYWdlIG1hbmlwdWxhdGlvbiBmdW5jdGlvbnMKKyAgICAgICAg
dG8gc3VwcG9ydCByb2J1c3QgaW52b2NhdGlvbi4gUmVtb3ZlcyB0aGUgcm9idXN0IEFQSXMgZnJv
bSBFeHRlbnNpb25zR0wuCisgICAgICAgIEFkZHMgdGhlIG1pc3NpbmcgdGV4dHVyZSBpbWFnZSBt
YW5pcHVsYXRpb24gZnVuY3Rpb25zIGZyb20gRXh0ZW5zaW9uR0wKKyAgICAgICAgdG8gR3JhcGhp
Y3NDb250ZXh0R0wuIEltcGxlbWVudGF0aW9ucyBmb3IgdGhlIG1vdmVkIG1ldGhvZHMKKyAgICAg
ICAgZXhpc3Qgb25seSBmb3IgQU5HTEUgaW1wbGVtZW50YXRpb24gb2YgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0wuCisKKyAgICAgICAgQ2hhbmdlcyB0aGUgQU5HTEUgdmFyaWFudCBvZiBHcmFwaGlj
c0NvbnRleHRHTDo6dGV4SW1hZ2UyRCB0byBiZQorICAgICAgICBpbXBsZW1lbnRlZCBhcyBFeHRl
bnNpb25zR0xBTkdMRTo6dGV4SW1hZ2UyRFJvYnVzdEFOR0xFLiBCZWZvcmUsIGZvcgorICAgICAg
ICBBTkdMRSB0aGUgR3JhcGhpY3NDb250ZXh0R0w6OnRleEltYWdlMkQgd2FzIHVudXNlZC4KKwor
ICAgICAgICBObyBuZXcgdGVzdHMsIGEgcmVmYWN0b3IuCisKKyAgICAgICAgKiBodG1sL2NhbnZh
cy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJl
bmRlcmluZ0NvbnRleHQ6OmludmFsaWRhdGVGcmFtZWJ1ZmZlcik6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjppbnZhbGlkYXRlU3ViRnJhbWVidWZmZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTF1aXYpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTJ1aXYpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTN1aXYpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTR1aXYpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybU1hdHJpeDJ4M2Z2
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm1NYXRy
aXgzeDJmdik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlm
b3JtTWF0cml4Mng0ZnYpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4
dDo6dW5pZm9ybU1hdHJpeDR4MmZ2KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmlu
Z0NvbnRleHQ6OnVuaWZvcm1NYXRyaXgzeDRmdik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJS
ZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtTWF0cml4NHgzZnYpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dmVydGV4QXR0cmliSTRpdik6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp2ZXJ0ZXhBdHRyaWJJNHVpdik6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpkcmF3QnVmZmVycyk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpjbGVhckJ1ZmZlcml2KToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmNsZWFyQnVmZmVydWl2KToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmNsZWFyQnVmZmVyZnYpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dmFsaWRhdGVDbGVhckJ1
ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3Jt
MWZ2KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm0y
ZnYpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTNm
dik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtNGZ2
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm0xaXYp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTJpdik6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtM2l2KToK
KyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm00aXYpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybU1hdHJpeDJm
dik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtTWF0
cml4M2Z2KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZv
cm1NYXRyaXg0ZnYpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRl
eHQuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTERyYXdCdWZmZXJzLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdMRHJhd0J1ZmZlcnM6OmRyYXdCdWZmZXJzV0VCR0wpOgorICAgICAg
ICAqIGh0bWwvY2FudmFzL1dlYkdMRnJhbWVidWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
V2ViR0xGcmFtZWJ1ZmZlcjo6ZHJhd0J1ZmZlcnNJZk5lY2Vzc2FyeSk6CisgICAgICAgICogaHRt
bC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpidWZmZXJEYXRhKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmJ1ZmZlclN1YkRhdGEpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybTFmdik6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtMmZ2KToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm0zZnYpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybTRmdik6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtMWl2KToK
KyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm0yaXYp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybTNp
dik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3Jt
NGl2KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZv
cm1NYXRyaXgyZnYpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZTo6dW5pZm9ybU1hdHJpeDNmdik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlOjp1bmlmb3JtTWF0cml4NGZ2KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlVW5pZm9ybU1hdHJpeFBhcmFtZXRlcnMpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmVydGV4QXR0cmliZnZJ
bXBsKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmg6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZVVu
aWZvcm1QYXJhbWV0ZXJzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNpb25z
R0wuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXNHTC5oOgorICAgICAgICAo
R0NHTFNwYW46OkdDR0xTcGFuKToKKyAgICAgICAgKHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90
Pjo6bWF4KToKKyAgICAgICAgKG1ha2VHQ0dMU3Bhbik6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXh0
ZW5zaW9uc0dMQU5HTEU6OmRyYXdCdWZmZXJzRVhUKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmJ1ZmZlckRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmJ1ZmZlclN1YkRhdGEpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0xZnYpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0yZnYpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0zZnYpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm00ZnYpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0xaXYpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0yaXYpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0zaXYpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm00aXYpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXgyZnYpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXgzZnYpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXg0ZnYp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJp
YjFmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4
QXR0cmliMmZ2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2
ZXJ0ZXhBdHRyaWIzZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OnZlcnRleEF0dHJpYjRmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6aW52YWxpZGF0ZUZyYW1lYnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjppbnZhbGlkYXRlU3ViRnJhbWVidWZmZXIpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0xdWl2KToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMnVpdik6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTN1aXYpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm00dWl2KToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4MngzZnYp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRy
aXgzeDJmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5p
Zm9ybU1hdHJpeDJ4NGZ2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjp1bmlmb3JtTWF0cml4NHgyZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXgzeDRmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybU1hdHJpeDR4M2Z2KToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2ZXJ0ZXhBdHRyaWJJNGl2KToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2ZXJ0ZXhBdHRyaWJJNHVpdik6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6ZHJhd0J1ZmZlcnMpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNsZWFyQnVmZmVyaXYp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNsZWFyQnVmZmVy
dWl2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjbGVhckJ1
ZmZlcmZ2KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jdi9HcmFwaGljc0NvbnRleHRH
TENWQU5HTEUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xDVkFOR0xF
Ojppbml0aWFsaXplVVZDb250ZXh0T2JqZWN0cyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTENWQU5HTEU6OmNvcHlQaXhlbEJ1ZmZlclRvVGV4dHVyZSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmg6CisKIDIw
MjAtMTEtMjIgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgogCiAgICAgICAgIFtM
RkNdW0ludGVncmF0aW9uXSBDb252ZXJ0IHNvbWUgcmVtYWluaW5nIElubGluZUJveCBhY2Nlc3Mg
dG8gdXNlIGlubGluZSBpdGVyYXRvcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcAppbmRleCA1NWJjMWY4ZGIyNDlkMzM4MjJl
Nzg4OWNhNzgzZjViZWMwMjVhMjk5Li42OGVmM2E5OWZmMDViNGEzMzJmOTU5ODE0YzllODg4YzI5
NWY3MzY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5k
ZXJpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJS
ZW5kZXJpbmdDb250ZXh0LmNwcApAQCAtODk1LDcgKzg5NSw3IEBAIHZvaWQgV2ViR0wyUmVuZGVy
aW5nQ29udGV4dDo6aW52YWxpZGF0ZUZyYW1lYnVmZmVyKEdDR0xlbnVtIHRhcmdldCwgY29uc3Qg
VmVjdG9yCiAgICAgVmVjdG9yPEdDR0xlbnVtPiB0cmFuc2xhdGVkQXR0YWNobWVudHMgPSBhdHRh
Y2htZW50czsKICAgICBpZiAoIWNoZWNrQW5kVHJhbnNsYXRlQXR0YWNobWVudHMoImludmFsaWRh
dGVGcmFtZWJ1ZmZlciIsIHRhcmdldCwgdHJhbnNsYXRlZEF0dGFjaG1lbnRzKSkKICAgICAgICAg
cmV0dXJuOwotICAgIG1fY29udGV4dC0+aW52YWxpZGF0ZUZyYW1lYnVmZmVyKHRhcmdldCwgdHJh
bnNsYXRlZEF0dGFjaG1lbnRzLnNpemUoKSwgdHJhbnNsYXRlZEF0dGFjaG1lbnRzLmRhdGEoKSk7
CisgICAgbV9jb250ZXh0LT5pbnZhbGlkYXRlRnJhbWVidWZmZXIodGFyZ2V0LCB0cmFuc2xhdGVk
QXR0YWNobWVudHMpOwogfQogCiB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmludmFsaWRh
dGVTdWJGcmFtZWJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQsIGNvbnN0IFZlY3RvcjxHQ0dMZW51bT4m
IGF0dGFjaG1lbnRzLCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dM
c2l6ZWkgaGVpZ2h0KQpAQCAtOTA2LDcgKzkwNiw3IEBAIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29u
dGV4dDo6aW52YWxpZGF0ZVN1YkZyYW1lYnVmZmVyKEdDR0xlbnVtIHRhcmdldCwgY29uc3QgVmVj
CiAgICAgVmVjdG9yPEdDR0xlbnVtPiB0cmFuc2xhdGVkQXR0YWNobWVudHMgPSBhdHRhY2htZW50
czsKICAgICBpZiAoIWNoZWNrQW5kVHJhbnNsYXRlQXR0YWNobWVudHMoImludmFsaWRhdGVTdWJG
cmFtZWJ1ZmZlciIsIHRhcmdldCwgdHJhbnNsYXRlZEF0dGFjaG1lbnRzKSkKICAgICAgICAgcmV0
dXJuOwotICAgIG1fY29udGV4dC0+aW52YWxpZGF0ZVN1YkZyYW1lYnVmZmVyKHRhcmdldCwgdHJh
bnNsYXRlZEF0dGFjaG1lbnRzLnNpemUoKSwgdHJhbnNsYXRlZEF0dGFjaG1lbnRzLmRhdGEoKSwg
eCwgeSwgd2lkdGgsIGhlaWdodCk7CisgICAgbV9jb250ZXh0LT5pbnZhbGlkYXRlU3ViRnJhbWVi
dWZmZXIodGFyZ2V0LCB0cmFuc2xhdGVkQXR0YWNobWVudHMsIHgsIHksIHdpZHRoLCBoZWlnaHQp
OwogfQogCiB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnJlYWRCdWZmZXIoR0NHTGVudW0g
c3JjKQpAQCAtMTEyOSw3ICsxMTI5LDcgQEAgdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp0
ZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludAogICAgIGlm
ICghdmFsaWRhdGVUZXhGdW5jKCJ0ZXhJbWFnZTJEIiwgVGV4SW1hZ2VGdW5jdGlvblR5cGU6OlRl
eEltYWdlLCBTb3VyY2VVbnBhY2tCdWZmZXIsIHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0
LCB3aWR0aCwgaGVpZ2h0LCAxLCBib3JkZXIsIGZvcm1hdCwgdHlwZSwgMCwgMCwgMCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnRleEltYWdlMkRS
b2J1c3RBTkdMRSh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwg
Ym9yZGVyLCBmb3JtYXQsIHR5cGUsIDAsIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KG9mZnNldCkp
OworICAgIG1fY29udGV4dC0+dGV4SW1hZ2UyRCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1h
dCwgd2lkdGgsIGhlaWdodCwgYm9yZGVyLCBmb3JtYXQsIHR5cGUsIG9mZnNldCk7CiB9CiAKIEV4
Y2VwdGlvbk9yPHZvaWQ+IFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnRleEltYWdlMkQoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IGludGVybmFsZm9ybWF0LCBHQ0dMc2l6
ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3Jt
YXQsIEdDR0xlbnVtIHR5cGUsIFRleEltYWdlU291cmNlJiYgc291cmNlKQpAQCAtMTE3Myw3ICsx
MTczLDcgQEAgdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp0ZXhJbWFnZTNEKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludAogICAgIGlmICghdmFsaWRhdGVUZXhGdW5j
KCJ0ZXhJbWFnZTNEIiwgVGV4SW1hZ2VGdW5jdGlvblR5cGU6OlRleEltYWdlLCBTb3VyY2VVbnBh
Y2tCdWZmZXIsIHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBk
ZXB0aCwgYm9yZGVyLCBmb3JtYXQsIHR5cGUsIDAsIDAsIDApKQogICAgICAgICByZXR1cm47CiAK
LSAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS50ZXhJbWFnZTNEUm9idXN0QU5HTEUodGFy
Z2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBib3JkZXIs
IGZvcm1hdCwgdHlwZSwgMCwgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ob2Zmc2V0KSk7CisgICAg
bV9jb250ZXh0LT50ZXhJbWFnZTNEKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0
aCwgaGVpZ2h0LCBkZXB0aCwgYm9yZGVyLCBmb3JtYXQsIHR5cGUsICBvZmZzZXQpOwogfQogCiBF
eGNlcHRpb25Pcjx2b2lkPiBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp0ZXhJbWFnZTNEKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCBpbnRlcm5hbGZvcm1hdCwgR0NHTHNp
emVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xpbnQgYm9y
ZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIFRleEltYWdlU291cmNlJiYgc291
cmNlKQpAQCAtMTI1OSw3ICsxMjU5LDcgQEAgdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp0
ZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGkKICAgICBp
ZiAoIXZhbGlkYXRlVGV4RnVuYygidGV4U3ViSW1hZ2UyRCIsIFRleEltYWdlRnVuY3Rpb25UeXBl
OjpUZXhTdWJJbWFnZSwgU291cmNlVW5wYWNrQnVmZmVyLCB0YXJnZXQsIGxldmVsLCAwLCB3aWR0
aCwgaGVpZ2h0LCAxLCAwLCBmb3JtYXQsIHR5cGUsIHhvZmZzZXQsIHlvZmZzZXQsIDApKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS50ZXhTdWJJbWFn
ZTJEUm9idXN0QU5HTEUodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhl
aWdodCwgZm9ybWF0LCB0eXBlLCAwLCByZWludGVycHJldF9jYXN0PHZvaWQqPihvZmZzZXQpKTsK
KyAgICBtX2NvbnRleHQtPnRleFN1YkltYWdlMkQodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9m
ZnNldCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBvZmZzZXQpOwogfQogCiBFeGNlcHRp
b25Pcjx2b2lkPiBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp0ZXhTdWJJbWFnZTJEKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQs
IEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dM
ZW51bSB0eXBlLCBUZXhJbWFnZVNvdXJjZSYmIHNvdXJjZSkKQEAgLTEzMDMsNyArMTMwMyw3IEBA
IHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dGV4U3ViSW1hZ2UzRChHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpCiAgICAgaWYgKCF2YWxpZGF0ZVRleEZ1bmMoInRleFN1
YkltYWdlM0QiLCBUZXhJbWFnZUZ1bmN0aW9uVHlwZTo6VGV4U3ViSW1hZ2UsIFNvdXJjZVVucGFj
a0J1ZmZlciwgdGFyZ2V0LCBsZXZlbCwgMCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIDAsIGZvcm1h
dCwgdHlwZSwgeG9mZnNldCwgeW9mZnNldCwgem9mZnNldCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnRleFN1YkltYWdlM0RSb2J1c3RBTkdMRSh0
YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB6b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBk
ZXB0aCwgZm9ybWF0LCB0eXBlLCAwLCByZWludGVycHJldF9jYXN0PHZvaWQqPihvZmZzZXQpKTsK
KyAgICBtX2NvbnRleHQtPnRleFN1YkltYWdlM0QodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9m
ZnNldCwgem9mZnNldCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGZvcm1hdCwgdHlwZSwgb2Zmc2V0
KTsKIH0KIAogdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp0ZXhTdWJJbWFnZTNEKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZz
ZXQsIEdDR0xpbnQgem9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBH
Q0dMc2l6ZWkgZGVwdGgsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgUmVmUHRyPEFy
cmF5QnVmZmVyVmlldz4mJiBzcmNEYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQpCkBAIC0xMzY5LDEw
ICsxMzY5LDcgQEAgdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojpjb21wcmVzc2VkVGV4SW1h
Z2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwKICAgICB9CiAgICAgaWYgKCF2YWxp
ZGF0ZVRleHR1cmUyREJpbmRpbmcoImNvbXByZXNzZWRUZXhJbWFnZTJEIiwgdGFyZ2V0KSkKICAg
ICAgICAgcmV0dXJuOwotICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmNvbXByZXNzZWRU
ZXhJbWFnZTJEUm9idXN0QU5HTEUoCi0gICAgICAgIHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9y
bWF0LCB3aWR0aCwKLSAgICAgICAgaGVpZ2h0LCBib3JkZXIsIGltYWdlU2l6ZSwKLSAgICAgICAg
MCwgcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4ob2Zmc2V0KSk7CisgICAgbV9jb250ZXh0LT5j
b21wcmVzc2VkVGV4SW1hZ2UyRCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgs
IGhlaWdodCwgYm9yZGVyLCBpbWFnZVNpemUsIG9mZnNldCk7CiB9CiAKIHZvaWQgV2ViR0wyUmVu
ZGVyaW5nQ29udGV4dDo6Y29tcHJlc3NlZFRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
aW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dM
c2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgQXJyYXlCdWZmZXJWaWV3JiBzcmNEYXRhLCBH
Q0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aE92ZXJyaWRlKQpAQCAtMTM5MCwx
MCArMTM4Nyw3IEBAIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Y29tcHJlc3NlZFRleElt
YWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsCiAgICAgYXV0byBzbGljZSA9IHNs
aWNlQXJyYXlCdWZmZXJWaWV3KCJjb21wcmVzc2VkVGV4SW1hZ2UyRCIsIHNyY0RhdGEsIHNyY09m
ZnNldCwgc3JjTGVuZ3RoT3ZlcnJpZGUpOwogICAgIGlmICghc2xpY2UpCiAgICAgICAgIHJldHVy
bjsKLSAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5jb21wcmVzc2VkVGV4SW1hZ2UyRFJv
YnVzdEFOR0xFKAotICAgICAgICB0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgs
IGhlaWdodCwKLSAgICAgICAgYm9yZGVyLCBzbGljZS0+Ynl0ZUxlbmd0aCgpLAotICAgICAgICBz
bGljZS0+Ynl0ZUxlbmd0aCgpLCBzbGljZS0+YmFzZUFkZHJlc3MoKSk7CisgICAgbV9jb250ZXh0
LT5jb21wcmVzc2VkVGV4SW1hZ2UyRCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lk
dGgsIGhlaWdodCwgYm9yZGVyLCBzbGljZS0+Ynl0ZUxlbmd0aCgpLCBtYWtlR0NHTFNwYW4oc2xp
Y2UtPmJhc2VBZGRyZXNzKCksIHNsaWNlLT5ieXRlTGVuZ3RoKCkpKTsKIH0KIAogdm9pZCBXZWJH
TDJSZW5kZXJpbmdDb250ZXh0Ojpjb21wcmVzc2VkVGV4SW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQs
IEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgs
IEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGludCBib3JkZXIsIEdDR0xz
aXplaSBpbWFnZVNpemUsIEdDR0xpbnQ2NCBvZmZzZXQpCkBAIC0xNDA4LDEwICsxNDAyLDcgQEAg
dm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojpjb21wcmVzc2VkVGV4SW1hZ2UzRChHQ0dMZW51
bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwKICAgICB9CiAgICAgaWYgKCF2YWxpZGF0ZVRleHR1cmUz
REJpbmRpbmcoImNvbXByZXNzZWRUZXhJbWFnZTNEIiwgdGFyZ2V0KSkKICAgICAgICAgcmV0dXJu
OwotICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmNvbXByZXNzZWRUZXhJbWFnZTNEUm9i
dXN0QU5HTEUoCi0gICAgICAgIHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwK
LSAgICAgICAgaGVpZ2h0LCBkZXB0aCwgYm9yZGVyLCBpbWFnZVNpemUsCi0gICAgICAgIDAsIHJl
aW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KG9mZnNldCkpOworICAgIG1fY29udGV4dC0+Y29tcHJl
c3NlZFRleEltYWdlM0QodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWln
aHQsIGRlcHRoLCBib3JkZXIsIGltYWdlU2l6ZSwgb2Zmc2V0KTsKIH0KIAogdm9pZCBXZWJHTDJS
ZW5kZXJpbmdDb250ZXh0Ojpjb21wcmVzc2VkVGV4SW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdD
R0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdD
R0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGludCBib3JkZXIsIEFycmF5QnVm
ZmVyVmlldyYgc3JjRGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGhP
dmVycmlkZSkKQEAgLTE0MjksMTAgKzE0MjAsMTAgQEAgdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250
ZXh0Ojpjb21wcmVzc2VkVGV4SW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwK
ICAgICBhdXRvIHNsaWNlID0gc2xpY2VBcnJheUJ1ZmZlclZpZXcoImNvbXByZXNzZWRUZXhJbWFn
ZTNEIiwgc3JjRGF0YSwgc3JjT2Zmc2V0LCBzcmNMZW5ndGhPdmVycmlkZSk7CiAgICAgaWYgKCFz
bGljZSkKICAgICAgICAgcmV0dXJuOwotICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmNv
bXByZXNzZWRUZXhJbWFnZTNEUm9idXN0QU5HTEUoCisgICAgbV9jb250ZXh0LT5jb21wcmVzc2Vk
VGV4SW1hZ2UzRCgKICAgICAgICAgdGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRo
LCBoZWlnaHQsCiAgICAgICAgIGRlcHRoLCBib3JkZXIsIHNsaWNlLT5ieXRlTGVuZ3RoKCksCi0g
ICAgICAgIHNsaWNlLT5ieXRlTGVuZ3RoKCksIHNsaWNlLT5iYXNlQWRkcmVzcygpKTsKKyAgICAg
ICAgbWFrZUdDR0xTcGFuKHNsaWNlLT5iYXNlQWRkcmVzcygpLCBzbGljZS0+Ynl0ZUxlbmd0aCgp
KSk7CiB9CiAKIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Y29tcHJlc3NlZFRleFN1Yklt
YWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdD
R0xpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51
bSBmb3JtYXQsIEFycmF5QnVmZmVyVmlldyYgc3JjRGF0YSkKQEAgLTE0NjAsMTAgKzE0NTEsNyBA
QCB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKEdD
R0xlbnVtIHRhcmdldCwgR0NHTGludCBsZQogICAgIH0KICAgICBpZiAoIXZhbGlkYXRlVGV4dHVy
ZTJEQmluZGluZygiY29tcHJlc3NlZFRleEltYWdlMkQiLCB0YXJnZXQpKQogICAgICAgICByZXR1
cm47Ci0gICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuY29tcHJlc3NlZFRleFN1YkltYWdl
MkRSb2J1c3RBTkdMRSgKLSAgICAgICAgdGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwK
LSAgICAgICAgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCBpbWFnZVNpemUsCi0gICAgICAgIDAsIHJl
aW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KG9mZnNldCkpOworICAgIG1fY29udGV4dC0+Y29tcHJl
c3NlZFRleFN1YkltYWdlMkQodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgd2lkdGgs
IGhlaWdodCwgZm9ybWF0LCBpbWFnZVNpemUsIG9mZnNldCk7CiB9CiAKIHZvaWQgV2ViR0wyUmVu
ZGVyaW5nQ29udGV4dDo6Y29tcHJlc3NlZFRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTHNpemVp
IHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEFycmF5QnVmZmVyVmll
dyYgc3JjRGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGhPdmVycmlk
ZSkKQEAgLTE0ODEsMTAgKzE0NjksNyBAQCB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmNv
bXByZXNzZWRUZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZQogICAgIGF1
dG8gc2xpY2UgPSBzbGljZUFycmF5QnVmZmVyVmlldygiY29tcHJlc3NlZFRleFN1YkltYWdlMkQi
LCBzcmNEYXRhLCBzcmNPZmZzZXQsIHNyY0xlbmd0aE92ZXJyaWRlKTsKICAgICBpZiAoIXNsaWNl
KQogICAgICAgICByZXR1cm47Ci0gICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuY29tcHJl
c3NlZFRleFN1YkltYWdlMkRSb2J1c3RBTkdMRSgKLSAgICAgICAgdGFyZ2V0LCBsZXZlbCwgeG9m
ZnNldCwgeW9mZnNldCwKLSAgICAgICAgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCBzbGljZS0+Ynl0
ZUxlbmd0aCgpLAotICAgICAgICBzbGljZS0+Ynl0ZUxlbmd0aCgpLCBzbGljZS0+YmFzZUFkZHJl
c3MoKSk7CisgICAgbV9jb250ZXh0LT5jb21wcmVzc2VkVGV4U3ViSW1hZ2UyRCh0YXJnZXQsIGxl
dmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHNsaWNlLT5ieXRl
TGVuZ3RoKCksIG1ha2VHQ0dMU3BhbihzbGljZS0+YmFzZUFkZHJlc3MoKSwgc2xpY2UtPmJ5dGVM
ZW5ndGgoKSkpOwogfQogCiB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmNvbXByZXNzZWRU
ZXhTdWJJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zm
c2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xpbnQgem9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBH
Q0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTHNp
emVpIGltYWdlU2l6ZSwgR0NHTGludDY0IG9mZnNldCkKQEAgLTE0OTksMTAgKzE0ODQsNyBAQCB2
b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmNvbXByZXNzZWRUZXhTdWJJbWFnZTNEKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGludCBsZQogICAgIH0KICAgICBpZiAoIXZhbGlkYXRlVGV4dHVyZTNE
QmluZGluZygiY29tcHJlc3NlZFRleFN1YkltYWdlM0QiLCB0YXJnZXQpKQogICAgICAgICByZXR1
cm47Ci0gICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuY29tcHJlc3NlZFRleFN1YkltYWdl
M0RSb2J1c3RBTkdMRSgKLSAgICAgICAgdGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwg
em9mZnNldCwKLSAgICAgICAgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGZvcm1hdCwgaW1hZ2VTaXpl
LAotICAgICAgICAwLCByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihvZmZzZXQpKTsKKyAgICBt
X2NvbnRleHQtPmNvbXByZXNzZWRUZXhTdWJJbWFnZTNEKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQs
IHlvZmZzZXQsIHpvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBmb3JtYXQsIGltYWdlU2l6
ZSwgb2Zmc2V0KTsKIH0KIAogdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojpjb21wcmVzc2Vk
VGV4U3ViSW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9m
ZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMaW50IHpvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwg
R0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMZW51bSBmb3JtYXQsIEFycmF5
QnVmZmVyVmlldyYgc3JjRGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5n
dGhPdmVycmlkZSkKQEAgLTE1MjAsMTAgKzE1MDIsMTAgQEAgdm9pZCBXZWJHTDJSZW5kZXJpbmdD
b250ZXh0Ojpjb21wcmVzc2VkVGV4U3ViSW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQg
bGUKICAgICBhdXRvIHNsaWNlID0gc2xpY2VBcnJheUJ1ZmZlclZpZXcoImNvbXByZXNzZWRUZXhT
dWJJbWFnZTNEIiwgc3JjRGF0YSwgc3JjT2Zmc2V0LCBzcmNMZW5ndGhPdmVycmlkZSk7CiAgICAg
aWYgKCFzbGljZSkKICAgICAgICAgcmV0dXJuOwotICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9u
cygpLmNvbXByZXNzZWRUZXhTdWJJbWFnZTNEUm9idXN0QU5HTEUoCisgICAgbV9jb250ZXh0LT5j
b21wcmVzc2VkVGV4U3ViSW1hZ2UzRCgKICAgICAgICAgdGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwg
eW9mZnNldCwgem9mZnNldCwKICAgICAgICAgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGZvcm1hdCwg
c2xpY2UtPmJ5dGVMZW5ndGgoKSwKLSAgICAgICAgc2xpY2UtPmJ5dGVMZW5ndGgoKSwgc2xpY2Ut
PmJhc2VBZGRyZXNzKCkpOworICAgICAgICBtYWtlR0NHTFNwYW4oc2xpY2UtPmJhc2VBZGRyZXNz
KCksIHNsaWNlLT5ieXRlTGVuZ3RoKCkpKTsKIH0KIAogR0NHTGludCBXZWJHTDJSZW5kZXJpbmdD
b250ZXh0OjpnZXRGcmFnRGF0YUxvY2F0aW9uKFdlYkdMUHJvZ3JhbSYgcHJvZ3JhbSwgY29uc3Qg
U3RyaW5nJiBuYW1lKQpAQCAtMTU2Myw3MiArMTU0NSwxMDIgQEAgdm9pZCBXZWJHTDJSZW5kZXJp
bmdDb250ZXh0Ojp1bmlmb3JtNHVpKFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgR0NH
THVpbnQKIAogdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtMXVpdihXZWJHTFVu
aWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIFVpbnQzMkxpc3QmJiB2YWx1ZSwgR0NHTHVpbnQgc3Jj
T2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCiB7Ci0gICAgaWYgKGlzQ29udGV4dExvc3RPclBl
bmRpbmcoKSB8fCAhdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycygidW5pZm9ybTF1aXYiLCBsb2Nh
dGlvbiwgdmFsdWUsIDEsIHNyY09mZnNldCwgc3JjTGVuZ3RoKSkKKyAgICBpZiAoaXNDb250ZXh0
TG9zdE9yUGVuZGluZygpKQorICAgICAgICByZXR1cm47CisgICAgYXV0byBkYXRhID0gdmFsaWRh
dGVVbmlmb3JtUGFyYW1ldGVycygidW5pZm9ybTF1aXYiLCBsb2NhdGlvbiwgdmFsdWUsIDEsIHNy
Y09mZnNldCwgc3JjTGVuZ3RoKTsKKyAgICBpZiAoIWRhdGEpCiAgICAgICAgIHJldHVybjsKLSAg
ICBtX2NvbnRleHQtPnVuaWZvcm0xdWl2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCB2YWx1ZS5kYXRh
KCksIHNyY09mZnNldCwgc3JjTGVuZ3RoID8gc3JjTGVuZ3RoIDogKHZhbHVlLmxlbmd0aCgpIC0g
c3JjT2Zmc2V0KSk7CisgICAgbV9jb250ZXh0LT51bmlmb3JtMXVpdihsb2NhdGlvbi0+bG9jYXRp
b24oKSwgZGF0YS52YWx1ZSgpKTsKIH0KIAogdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1
bmlmb3JtMnVpdihXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIFVpbnQzMkxpc3QmJiB2
YWx1ZSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCiB7Ci0gICAgaWYg
KGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycygi
dW5pZm9ybTJ1aXYiLCBsb2NhdGlvbiwgdmFsdWUsIDIsIHNyY09mZnNldCwgc3JjTGVuZ3RoKSkK
KyAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpKQorICAgICAgICByZXR1cm47CisgICAg
YXV0byBkYXRhID0gdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycygidW5pZm9ybTJ1aXYiLCBsb2Nh
dGlvbiwgdmFsdWUsIDIsIHNyY09mZnNldCwgc3JjTGVuZ3RoKTsKKyAgICBpZiAoIWRhdGEpCiAg
ICAgICAgIHJldHVybjsKLSAgICBtX2NvbnRleHQtPnVuaWZvcm0ydWl2KGxvY2F0aW9uLT5sb2Nh
dGlvbigpLCB2YWx1ZS5kYXRhKCksIHNyY09mZnNldCwgKHNyY0xlbmd0aCA/IHNyY0xlbmd0aCA6
IHZhbHVlLmxlbmd0aCgpIC0gc3JjT2Zmc2V0KSAvIDIpOworICAgIG1fY29udGV4dC0+dW5pZm9y
bTJ1aXYobG9jYXRpb24tPmxvY2F0aW9uKCksIGRhdGEudmFsdWUoKSk7CiB9CiAKIHZvaWQgV2Vi
R0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTN1aXYoV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxv
Y2F0aW9uLCBVaW50MzJMaXN0JiYgdmFsdWUsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQg
c3JjTGVuZ3RoKQogewotICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlk
YXRlVW5pZm9ybVBhcmFtZXRlcnMoInVuaWZvcm0zdWl2IiwgbG9jYXRpb24sIHZhbHVlLCAzLCBz
cmNPZmZzZXQsIHNyY0xlbmd0aCkpCisgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSkK
KyAgICAgICAgcmV0dXJuOworICAgIGF1dG8gZGF0YSA9IHZhbGlkYXRlVW5pZm9ybVBhcmFtZXRl
cnMoInVuaWZvcm0zdWl2IiwgbG9jYXRpb24sIHZhbHVlLCAzLCBzcmNPZmZzZXQsIHNyY0xlbmd0
aCk7CisgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm47Ci0gICAgbV9jb250ZXh0LT51bmlm
b3JtM3Vpdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgdmFsdWUuZGF0YSgpLCBzcmNPZmZzZXQsIChz
cmNMZW5ndGggPyBzcmNMZW5ndGggOiB2YWx1ZS5sZW5ndGgoKSAtIHNyY09mZnNldCkgLyAzKTsK
KyAgICBtX2NvbnRleHQtPnVuaWZvcm0zdWl2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCBkYXRhLnZh
bHVlKCkpOwogfQogCiB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm00dWl2KFdl
YkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgVWludDMyTGlzdCYmIHZhbHVlLCBHQ0dMdWlu
dCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKIHsKLSAgICBpZiAoaXNDb250ZXh0TG9z
dE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKCJ1bmlmb3JtNHVpdiIs
IGxvY2F0aW9uLCB2YWx1ZSwgNCwgc3JjT2Zmc2V0LCBzcmNMZW5ndGgpKQorICAgIGlmIChpc0Nv
bnRleHRMb3N0T3JQZW5kaW5nKCkpCisgICAgICAgIHJldHVybjsKKyAgICBhdXRvIGRhdGEgPSB2
YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKCJ1bmlmb3JtNHVpdiIsIGxvY2F0aW9uLCB2YWx1ZSwg
NCwgc3JjT2Zmc2V0LCBzcmNMZW5ndGgpOworICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJu
OwotICAgIG1fY29udGV4dC0+dW5pZm9ybTR1aXYobG9jYXRpb24tPmxvY2F0aW9uKCksIHZhbHVl
LmRhdGEoKSwgc3JjT2Zmc2V0LCAoc3JjTGVuZ3RoID8gc3JjTGVuZ3RoIDogdmFsdWUubGVuZ3Ro
KCkgLSBzcmNPZmZzZXQpIC8gNCk7CisgICAgbV9jb250ZXh0LT51bmlmb3JtNHVpdihsb2NhdGlv
bi0+bG9jYXRpb24oKSwgZGF0YS52YWx1ZSgpKTsKIH0KIAogdm9pZCBXZWJHTDJSZW5kZXJpbmdD
b250ZXh0Ojp1bmlmb3JtTWF0cml4MngzZnYoV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9u
LCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEZsb2F0MzJMaXN0JiYgdiwgR0NHTHVpbnQgc3JjT2Zm
c2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCiB7Ci0gICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRp
bmcoKSB8fCAhdmFsaWRhdGVVbmlmb3JtTWF0cml4UGFyYW1ldGVycygidW5pZm9ybU1hdHJpeDJ4
M2Z2IiwgbG9jYXRpb24sIHRyYW5zcG9zZSwgdiwgNiwgc3JjT2Zmc2V0LCBzcmNMZW5ndGgpKQor
ICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCisgICAgICAgIHJldHVybjsKKyAgICBh
dXRvIGRhdGEgPSB2YWxpZGF0ZVVuaWZvcm1NYXRyaXhQYXJhbWV0ZXJzKCJ1bmlmb3JtTWF0cml4
MngzZnYiLCBsb2NhdGlvbiwgdHJhbnNwb3NlLCB2LCA2LCBzcmNPZmZzZXQsIHNyY0xlbmd0aCk7
CisgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm47Ci0gICAgbV9jb250ZXh0LT51bmlmb3Jt
TWF0cml4MngzZnYobG9jYXRpb24tPmxvY2F0aW9uKCksIHRyYW5zcG9zZSwgdi5kYXRhKCksIHNy
Y09mZnNldCwgKHNyY0xlbmd0aCA/IHNyY0xlbmd0aCA6IHYubGVuZ3RoKCkgLSBzcmNPZmZzZXQp
IC8gNik7CisgICAgbV9jb250ZXh0LT51bmlmb3JtTWF0cml4MngzZnYobG9jYXRpb24tPmxvY2F0
aW9uKCksIHRyYW5zcG9zZSwgZGF0YS52YWx1ZSgpKTsKIH0KIAogdm9pZCBXZWJHTDJSZW5kZXJp
bmdDb250ZXh0Ojp1bmlmb3JtTWF0cml4M3gyZnYoV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0
aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEZsb2F0MzJMaXN0JiYgdiwgR0NHTHVpbnQgc3Jj
T2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCiB7Ci0gICAgaWYgKGlzQ29udGV4dExvc3RPclBl
bmRpbmcoKSB8fCAhdmFsaWRhdGVVbmlmb3JtTWF0cml4UGFyYW1ldGVycygidW5pZm9ybU1hdHJp
eDN4MmZ2IiwgbG9jYXRpb24sIHRyYW5zcG9zZSwgdiwgNiwgc3JjT2Zmc2V0LCBzcmNMZW5ndGgp
KQorICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCisgICAgICAgIHJldHVybjsKKyAg
ICBhdXRvIGRhdGEgPSB2YWxpZGF0ZVVuaWZvcm1NYXRyaXhQYXJhbWV0ZXJzKCJ1bmlmb3JtTWF0
cml4M3gyZnYiLCBsb2NhdGlvbiwgdHJhbnNwb3NlLCB2LCA2LCBzcmNPZmZzZXQsIHNyY0xlbmd0
aCk7CisgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm47Ci0gICAgbV9jb250ZXh0LT51bmlm
b3JtTWF0cml4M3gyZnYobG9jYXRpb24tPmxvY2F0aW9uKCksIHRyYW5zcG9zZSwgdi5kYXRhKCks
IHNyY09mZnNldCwgKHNyY0xlbmd0aCA/IHNyY0xlbmd0aCA6IHYubGVuZ3RoKCkgLSBzcmNPZmZz
ZXQpIC8gNik7CisgICAgbV9jb250ZXh0LT51bmlmb3JtTWF0cml4M3gyZnYobG9jYXRpb24tPmxv
Y2F0aW9uKCksIHRyYW5zcG9zZSwgZGF0YS52YWx1ZSgpKTsKIH0KIAogdm9pZCBXZWJHTDJSZW5k
ZXJpbmdDb250ZXh0Ojp1bmlmb3JtTWF0cml4Mng0ZnYoV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxv
Y2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEZsb2F0MzJMaXN0JiYgdiwgR0NHTHVpbnQg
c3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCiB7Ci0gICAgaWYgKGlzQ29udGV4dExvc3RP
clBlbmRpbmcoKSB8fCAhdmFsaWRhdGVVbmlmb3JtTWF0cml4UGFyYW1ldGVycygidW5pZm9ybU1h
dHJpeDJ4NGZ2IiwgbG9jYXRpb24sIHRyYW5zcG9zZSwgdiwgOCwgc3JjT2Zmc2V0LCBzcmNMZW5n
dGgpKQorICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCisgICAgICAgIHJldHVybjsK
KyAgICBhdXRvIGRhdGEgPSB2YWxpZGF0ZVVuaWZvcm1NYXRyaXhQYXJhbWV0ZXJzKCJ1bmlmb3Jt
TWF0cml4Mng0ZnYiLCBsb2NhdGlvbiwgdHJhbnNwb3NlLCB2LCA4LCBzcmNPZmZzZXQsIHNyY0xl
bmd0aCk7CisgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm47Ci0gICAgbV9jb250ZXh0LT51
bmlmb3JtTWF0cml4Mng0ZnYobG9jYXRpb24tPmxvY2F0aW9uKCksIHRyYW5zcG9zZSwgdi5kYXRh
KCksIHNyY09mZnNldCwgKHNyY0xlbmd0aCA/IHNyY0xlbmd0aCA6IHYubGVuZ3RoKCkgLSBzcmNP
ZmZzZXQpIC8gOCk7CisgICAgbV9jb250ZXh0LT51bmlmb3JtTWF0cml4Mng0ZnYobG9jYXRpb24t
PmxvY2F0aW9uKCksIHRyYW5zcG9zZSwgZGF0YS52YWx1ZSgpKTsKIH0KIAogdm9pZCBXZWJHTDJS
ZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtTWF0cml4NHgyZnYoV2ViR0xVbmlmb3JtTG9jYXRpb24q
IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEZsb2F0MzJMaXN0JiYgdiwgR0NHTHVp
bnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCiB7Ci0gICAgaWYgKGlzQ29udGV4dExv
c3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVVbmlmb3JtTWF0cml4UGFyYW1ldGVycygidW5pZm9y
bU1hdHJpeDR4MmZ2IiwgbG9jYXRpb24sIHRyYW5zcG9zZSwgdiwgOCwgc3JjT2Zmc2V0LCBzcmNM
ZW5ndGgpKQorICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCisgICAgICAgIHJldHVy
bjsKKyAgICBhdXRvIGRhdGEgPSB2YWxpZGF0ZVVuaWZvcm1NYXRyaXhQYXJhbWV0ZXJzKCJ1bmlm
b3JtTWF0cml4NHgyZnYiLCBsb2NhdGlvbiwgdHJhbnNwb3NlLCB2LCA4LCBzcmNPZmZzZXQsIHNy
Y0xlbmd0aCk7CisgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm47Ci0gICAgbV9jb250ZXh0
LT51bmlmb3JtTWF0cml4NHgyZnYobG9jYXRpb24tPmxvY2F0aW9uKCksIHRyYW5zcG9zZSwgdi5k
YXRhKCksIHNyY09mZnNldCwgKHNyY0xlbmd0aCA/IHNyY0xlbmd0aCA6IHYubGVuZ3RoKCkgLSBz
cmNPZmZzZXQpIC8gOCk7CisgICAgbV9jb250ZXh0LT51bmlmb3JtTWF0cml4NHgyZnYobG9jYXRp
b24tPmxvY2F0aW9uKCksIHRyYW5zcG9zZSwgZGF0YS52YWx1ZSgpKTsKIH0KIAogdm9pZCBXZWJH
TDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtTWF0cml4M3g0ZnYoV2ViR0xVbmlmb3JtTG9jYXRp
b24qIGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEZsb2F0MzJMaXN0JiYgdiwgR0NH
THVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCiB7Ci0gICAgaWYgKGlzQ29udGV4
dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVVbmlmb3JtTWF0cml4UGFyYW1ldGVycygidW5p
Zm9ybU1hdHJpeDN4NGZ2IiwgbG9jYXRpb24sIHRyYW5zcG9zZSwgdiwgMTIsIHNyY09mZnNldCwg
c3JjTGVuZ3RoKSkKKyAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpKQorICAgICAgICBy
ZXR1cm47CisgICAgYXV0byBkYXRhID0gdmFsaWRhdGVVbmlmb3JtTWF0cml4UGFyYW1ldGVycygi
dW5pZm9ybU1hdHJpeDN4NGZ2IiwgbG9jYXRpb24sIHRyYW5zcG9zZSwgdiwgMTIsIHNyY09mZnNl
dCwgc3JjTGVuZ3RoKTsKKyAgICBpZiAoIWRhdGEpCiAgICAgICAgIHJldHVybjsKLSAgICBtX2Nv
bnRleHQtPnVuaWZvcm1NYXRyaXgzeDRmdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgdHJhbnNwb3Nl
LCB2LmRhdGEoKSwgc3JjT2Zmc2V0LCAoc3JjTGVuZ3RoID8gc3JjTGVuZ3RoIDogdi5sZW5ndGgo
KSAtIHNyY09mZnNldCkgLyAxMik7CisgICAgbV9jb250ZXh0LT51bmlmb3JtTWF0cml4M3g0ZnYo
bG9jYXRpb24tPmxvY2F0aW9uKCksIHRyYW5zcG9zZSwgZGF0YS52YWx1ZSgpKTsKIH0KIAogdm9p
ZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtTWF0cml4NHgzZnYoV2ViR0xVbmlmb3Jt
TG9jYXRpb24qIGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEZsb2F0MzJMaXN0JiYg
diwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCiB7Ci0gICAgaWYgKGlz
Q29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVVbmlmb3JtTWF0cml4UGFyYW1ldGVy
cygidW5pZm9ybU1hdHJpeDR4M2Z2IiwgbG9jYXRpb24sIHRyYW5zcG9zZSwgdiwgMTIsIHNyY09m
ZnNldCwgc3JjTGVuZ3RoKSkKKyAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpKQorICAg
ICAgICByZXR1cm47CisgICAgYXV0byBkYXRhID0gdmFsaWRhdGVVbmlmb3JtTWF0cml4UGFyYW1l
dGVycygidW5pZm9ybU1hdHJpeDR4M2Z2IiwgbG9jYXRpb24sIHRyYW5zcG9zZSwgdiwgMTIsIHNy
Y09mZnNldCwgc3JjTGVuZ3RoKTsKKyAgICBpZiAoIWRhdGEpCiAgICAgICAgIHJldHVybjsKLSAg
ICBtX2NvbnRleHQtPnVuaWZvcm1NYXRyaXg0eDNmdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgdHJh
bnNwb3NlLCB2LmRhdGEoKSwgc3JjT2Zmc2V0LCAoc3JjTGVuZ3RoID8gc3JjTGVuZ3RoIDogdi5s
ZW5ndGgoKSAtIHNyY09mZnNldCkgLyAxMik7CisgICAgbV9jb250ZXh0LT51bmlmb3JtTWF0cml4
NHgzZnYobG9jYXRpb24tPmxvY2F0aW9uKCksIHRyYW5zcG9zZSwgZGF0YS52YWx1ZSgpKTsKIH0K
IAogdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp2ZXJ0ZXhBdHRyaWJJNGkoR0NHTHVpbnQg
aW5kZXgsIEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMaW50IHosIEdDR0xpbnQgdykKQEAgLTE2
NjQsNyArMTY3Niw3IEBAIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dmVydGV4QXR0cmli
STRpdihHQ0dMdWludCBpbmRleCwgSW50MzJMaXN0JiYgbGlzdCkKICAgICAgICAgc3ludGhlc2l6
ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfVkFMVUUsICJ2ZXJ0ZXhBdHRyaWJJ
NGl2IiwgImluZGV4IG91dCBvZiByYW5nZSIpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAg
IG1fY29udGV4dC0+dmVydGV4QXR0cmliSTRpdihpbmRleCwgZGF0YSk7CisgICAgbV9jb250ZXh0
LT52ZXJ0ZXhBdHRyaWJJNGl2KGluZGV4LCBtYWtlR0NHTFNwYW48ND4oZGF0YSkpOwogICAgIG1f
dmVydGV4QXR0cmliVmFsdWVbaW5kZXhdLnR5cGUgPSBHcmFwaGljc0NvbnRleHRHTDo6SU5UOwog
ICAgIG1lbWNweShtX3ZlcnRleEF0dHJpYlZhbHVlW2luZGV4XS5pVmFsdWUsIGRhdGEsIHNpemVv
ZihtX3ZlcnRleEF0dHJpYlZhbHVlW2luZGV4XS5pVmFsdWUpKTsKIH0KQEAgLTE3MDIsNyArMTcx
NCw3IEBAIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dmVydGV4QXR0cmliSTR1aXYoR0NH
THVpbnQgaW5kZXgsIFVpbnQzMkxpc3QmJiBsaXN0CiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9y
KEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX1ZBTFVFLCAidmVydGV4QXR0cmliSTR1aXYiLCAi
aW5kZXggb3V0IG9mIHJhbmdlIik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgbV9jb250
ZXh0LT52ZXJ0ZXhBdHRyaWJJNHVpdihpbmRleCwgZGF0YSk7CisgICAgbV9jb250ZXh0LT52ZXJ0
ZXhBdHRyaWJJNHVpdihpbmRleCwgbWFrZUdDR0xTcGFuPDQ+KGRhdGEpKTsKICAgICBtX3ZlcnRl
eEF0dHJpYlZhbHVlW2luZGV4XS50eXBlID0gR3JhcGhpY3NDb250ZXh0R0w6OlVOU0lHTkVEX0lO
VDsKICAgICBtZW1jcHkobV92ZXJ0ZXhBdHRyaWJWYWx1ZVtpbmRleF0udWlWYWx1ZSwgZGF0YSwg
c2l6ZW9mKG1fdmVydGV4QXR0cmliVmFsdWVbaW5kZXhdLnVpVmFsdWUpKTsKIH0KQEAgLTE3NjMs
OCArMTc3NSw4IEBAIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6ZHJhd0J1ZmZlcnMoY29u
c3QgVmVjdG9yPEdDR0xlbnVtPiYgYnVmZmVycykKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQogICAgICAgICAvLyBCZWNhdXNlIHRoZSBiYWNrYnVmZmVyIGlzIHNpbXVsYXRlZCBvbiBh
bGwgY3VycmVudCBXZWJLaXQgcG9ydHMsIHdlIG5lZWQgdG8gY2hhbmdlIEJBQ0sgdG8gQ09MT1Jf
QVRUQUNITUVOVDAuCi0gICAgICAgIEdDR0xlbnVtIHZhbHVlID0gKGJ1ZnNbMF0gPT0gR3JhcGhp
Y3NDb250ZXh0R0w6OkJBQ0spID8gR3JhcGhpY3NDb250ZXh0R0w6OkNPTE9SX0FUVEFDSE1FTlQw
IDogR3JhcGhpY3NDb250ZXh0R0w6Ok5PTkU7Ci0gICAgICAgIG1fY29udGV4dC0+ZHJhd0J1ZmZl
cnMoMSwgJnZhbHVlKTsKKyAgICAgICAgR0NHTGVudW0gdmFsdWVbMV0geyAoYnVmc1swXSA9PSBH
cmFwaGljc0NvbnRleHRHTDo6QkFDSykgPyBHcmFwaGljc0NvbnRleHRHTDo6Q09MT1JfQVRUQUNI
TUVOVDAgOiBHcmFwaGljc0NvbnRleHRHTDo6Tk9ORSB9OworICAgICAgICBtX2NvbnRleHQtPmRy
YXdCdWZmZXJzKHZhbHVlKTsKICAgICAgICAgc2V0QmFja0RyYXdCdWZmZXIoYnVmc1swXSk7CiAg
ICAgfSBlbHNlIHsKICAgICAgICAgaWYgKG4gPiBnZXRNYXhEcmF3QnVmZmVycygpKSB7CkBAIC0x
NzgzLDI4ICsxNzk1LDM2IEBAIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6ZHJhd0J1ZmZl
cnMoY29uc3QgVmVjdG9yPEdDR0xlbnVtPiYgYnVmZmVycykKIAogdm9pZCBXZWJHTDJSZW5kZXJp
bmdDb250ZXh0OjpjbGVhckJ1ZmZlcml2KEdDR0xlbnVtIGJ1ZmZlciwgR0NHTGludCBkcmF3YnVm
ZmVyLCBJbnQzMkxpc3QmJiB2YWx1ZXMsIEdDR0x1aW50IHNyY09mZnNldCkKIHsKLSAgICBpZiAo
aXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZUNsZWFyQnVmZmVyKCJjbGVhckJ1
ZmZlcml2IiwgYnVmZmVyLCB2YWx1ZXMubGVuZ3RoKCksIHNyY09mZnNldCkpCisgICAgaWYgKGlz
Q29udGV4dExvc3RPclBlbmRpbmcoKSkKKyAgICAgICAgcmV0dXJuOworICAgIGF1dG8gZGF0YSA9
IHZhbGlkYXRlQ2xlYXJCdWZmZXIoImNsZWFyQnVmZmVyaXYiLCBidWZmZXIsIHZhbHVlcywgc3Jj
T2Zmc2V0KTsKKyAgICBpZiAoIWRhdGEpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fY29udGV4
dC0+Y2xlYXJCdWZmZXJpdihidWZmZXIsIGRyYXdidWZmZXIsIHZhbHVlcy5kYXRhKCksIHNyY09m
ZnNldCk7CisgICAgbV9jb250ZXh0LT5jbGVhckJ1ZmZlcml2KGJ1ZmZlciwgZHJhd2J1ZmZlciwg
ZGF0YS52YWx1ZSgpKTsKICAgICB1cGRhdGVCdWZmZXJzVG9BdXRvQ2xlYXIoQ2xlYXJCdWZmZXJD
YWxsZXI6OkNsZWFyQnVmZmVyaXYsIGJ1ZmZlciwgZHJhd2J1ZmZlcik7CiB9CiAKIHZvaWQgV2Vi
R0wyUmVuZGVyaW5nQ29udGV4dDo6Y2xlYXJCdWZmZXJ1aXYoR0NHTGVudW0gYnVmZmVyLCBHQ0dM
aW50IGRyYXdidWZmZXIsIFVpbnQzMkxpc3QmJiB2YWx1ZXMsIEdDR0x1aW50IHNyY09mZnNldCkK
IHsKLSAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZUNsZWFyQnVm
ZmVyKCJjbGVhckJ1ZmZlcnVpdiIsIGJ1ZmZlciwgdmFsdWVzLmxlbmd0aCgpLCBzcmNPZmZzZXQp
KQorICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCiAgICAgICAgIHJldHVybjsKLQot
ICAgIG1fY29udGV4dC0+Y2xlYXJCdWZmZXJ1aXYoYnVmZmVyLCBkcmF3YnVmZmVyLCB2YWx1ZXMu
ZGF0YSgpLCBzcmNPZmZzZXQpOworICAgIGF1dG8gZGF0YSA9IHZhbGlkYXRlQ2xlYXJCdWZmZXIo
ImNsZWFyQnVmZmVydWl2IiwgYnVmZmVyLCB2YWx1ZXMsIHNyY09mZnNldCk7CisgICAgaWYgKCFk
YXRhKQorICAgICAgICByZXR1cm47CisgICAgbV9jb250ZXh0LT5jbGVhckJ1ZmZlcnVpdihidWZm
ZXIsIGRyYXdidWZmZXIsIGRhdGEudmFsdWUoKSk7CiAgICAgdXBkYXRlQnVmZmVyc1RvQXV0b0Ns
ZWFyKENsZWFyQnVmZmVyQ2FsbGVyOjpDbGVhckJ1ZmZlcnVpdiwgYnVmZmVyLCBkcmF3YnVmZmVy
KTsKIH0KIAogdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpjbGVhckJ1ZmZlcmZ2KEdDR0xl
bnVtIGJ1ZmZlciwgR0NHTGludCBkcmF3YnVmZmVyLCBGbG9hdDMyTGlzdCYmIHZhbHVlcywgR0NH
THVpbnQgc3JjT2Zmc2V0KQogewotICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwg
IXZhbGlkYXRlQ2xlYXJCdWZmZXIoImNsZWFyQnVmZmVyZnYiLCBidWZmZXIsIHZhbHVlcy5sZW5n
dGgoKSwgc3JjT2Zmc2V0KSkKKyAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpKQorICAg
ICAgICByZXR1cm47CisgICAgYXV0byBkYXRhID0gdmFsaWRhdGVDbGVhckJ1ZmZlcigiY2xlYXJC
dWZmZXJmdiIsIGJ1ZmZlciwgdmFsdWVzLCBzcmNPZmZzZXQpOworICAgIGlmICghZGF0YSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgbV9jb250ZXh0LT5jbGVhckJ1ZmZlcmZ2KGJ1ZmZlciwgZHJh
d2J1ZmZlciwgdmFsdWVzLmRhdGEoKSwgc3JjT2Zmc2V0KTsKKyAgICBtX2NvbnRleHQtPmNsZWFy
QnVmZmVyZnYoYnVmZmVyLCBkcmF3YnVmZmVyLCBkYXRhLnZhbHVlKCkpOwogICAgIC8vIGNsZWFy
QnVmZmVyaXYgYW5kIGNsZWFyQnVmZmVydWl2IHdpbGwgY3VycmVudGx5IGdlbmVyYXRlIGFuIGVy
cm9yCiAgICAgLy8gaWYgdGhleSdyZSBjYWxsZWQgYWdhaW5zdCB0aGUgZGVmYXVsdCBiYWNrIGJ1
ZmZlci4gSWYgc3VwcG9ydCBmb3IKICAgICAvLyBleHRlbmRlZCBjYW52YXMgY29sb3Igc3BhY2Vz
IGlzIGFkZGVkLCB0aGlzIGNhbGwgbWlnaHQgbmVlZCB0byBiZQpAQCAtMzM3MiwxMTAgKzMzOTIs
MTQ0IEBAIGJvb2wgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dmFsaWRhdGVDYXBhYmlsaXR5KGNv
bnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgR0NHTGVuCiAgICAgfQogfQogCi1ib29sIFdlYkdMMlJl
bmRlcmluZ0NvbnRleHQ6OnZhbGlkYXRlQ2xlYXJCdWZmZXIoY29uc3QgY2hhciogZnVuY3Rpb25O
YW1lLCBHQ0dMZW51bSBidWZmZXIsIHNpemVfdCBzaXplLCBHQ0dMdWludCBzcmNPZmZzZXQpCit0
ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBUeXBlZEFycmF5VHlwZT4KK09wdGlvbmFsPEdD
R0xTcGFuPGNvbnN0IFQ+PiBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp2YWxpZGF0ZUNsZWFyQnVm
ZmVyKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgR0NHTGVudW0gYnVmZmVyLCBUeXBlZExpc3Q8
VHlwZWRBcnJheVR5cGUsIFQ+JiB2YWx1ZXMsIEdDR0x1aW50IHNyY09mZnNldCkKIHsKLSAgICBD
aGVja2VkPEdDR0xzaXplaSwgUmVjb3JkT3ZlcmZsb3c+IGNoZWNrZWRTaXplKHNpemUpOworICAg
IENoZWNrZWQ8R0NHTHNpemVpLCBSZWNvcmRPdmVyZmxvdz4gY2hlY2tlZFNpemUodmFsdWVzLmxl
bmd0aCgpKTsKICAgICBjaGVja2VkU2l6ZSAtPSBzcmNPZmZzZXQ7CiAgICAgaWYgKGNoZWNrZWRT
aXplLmhhc092ZXJmbG93ZWQoKSkgewogICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGlj
c0NvbnRleHRHTDo6SU5WQUxJRF9WQUxVRSwgZnVuY3Rpb25OYW1lLCAiaW52YWxpZCBhcnJheSBz
aXplIC8gc3JjT2Zmc2V0Iik7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJu
IHsgfTsKICAgICB9CiAgICAgc3dpdGNoIChidWZmZXIpIHsKICAgICBjYXNlIEdyYXBoaWNzQ29u
dGV4dEdMOjpDT0xPUjoKICAgICAgICAgaWYgKGNoZWNrZWRTaXplLnVuc2FmZUdldCgpIDwgNCkg
ewogICAgICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFM
SURfVkFMVUUsIGZ1bmN0aW9uTmFtZSwgImludmFsaWQgYXJyYXkgc2l6ZSAvIHNyY09mZnNldCIp
OwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgcmV0dXJuIHsgfTsKICAg
ICAgICAgfQotICAgICAgICBicmVhazsKKyAgICAgICAgcmV0dXJuIG1ha2VHQ0dMU3Bhbih2YWx1
ZXMuZGF0YSgpICsgc3JjT2Zmc2V0LCA0KTsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpE
RVBUSDoKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpTVEVOQ0lMOgogICAgICAgICBpZiAo
Y2hlY2tlZFNpemUudW5zYWZlR2V0KCkgPCAxKSB7CiAgICAgICAgICAgICBzeW50aGVzaXplR0xF
cnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9WQUxVRSwgZnVuY3Rpb25OYW1lLCAiaW52
YWxpZCBhcnJheSBzaXplIC8gc3JjT2Zmc2V0Iik7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgICAgICByZXR1cm4geyB9OwogICAgICAgICB9Ci0gICAgICAgIGJyZWFrOworICAg
ICAgICByZXR1cm4gbWFrZUdDR0xTcGFuKHZhbHVlcy5kYXRhKCkgKyBzcmNPZmZzZXQsIDEpOwor
CiAgICAgZGVmYXVsdDoKICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0
R0w6OklOVkFMSURfRU5VTSwgZnVuY3Rpb25OYW1lLCAiaW52YWxpZCBidWZmZXIiKTsKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4geyB9OwogICAgIH0KLSAgICByZXR1cm4g
dHJ1ZTsKIH0KIAogdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtMWZ2KFdlYkdM
VW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgRmxvYXQzMkxpc3QgZGF0YSwgR0NHTHVpbnQgc3Jj
T2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCiB7Ci0gICAgaWYgKGlzQ29udGV4dExvc3RPclBl
bmRpbmcoKSB8fCAhdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycygidW5pZm9ybTFmdiIsIGxvY2F0
aW9uLCBkYXRhLCAxLCBzcmNPZmZzZXQsIHNyY0xlbmd0aCkpCisgICAgaWYgKGlzQ29udGV4dExv
c3RPclBlbmRpbmcoKSkKKyAgICAgICAgcmV0dXJuOworICAgIGF1dG8gcmVzdWx0ID0gdmFsaWRh
dGVVbmlmb3JtUGFyYW1ldGVycygidW5pZm9ybTFmdiIsIGxvY2F0aW9uLCBkYXRhLCAxLCBzcmNP
ZmZzZXQsIHNyY0xlbmd0aCk7CisgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgIHJldHVybjsKLSAg
ICBtX2NvbnRleHQtPnVuaWZvcm0xZnYobG9jYXRpb24tPmxvY2F0aW9uKCksIGRhdGEuZGF0YSgp
LCBzcmNPZmZzZXQsIHNyY0xlbmd0aCA/IHNyY0xlbmd0aCA6IChkYXRhLmxlbmd0aCgpIC0gc3Jj
T2Zmc2V0KSk7CisgICAgbV9jb250ZXh0LT51bmlmb3JtMWZ2KGxvY2F0aW9uLT5sb2NhdGlvbigp
LCByZXN1bHQudmFsdWUoKSk7CiB9CiAKIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5p
Zm9ybTJmdihXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEZsb2F0MzJMaXN0IGRhdGEs
IEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQogewotICAgIGlmIChpc0Nv
bnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMoInVuaWZv
cm0yZnYiLCBsb2NhdGlvbiwgZGF0YSwgMiwgc3JjT2Zmc2V0LCBzcmNMZW5ndGgpKQorICAgIGlm
IChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCisgICAgICAgIHJldHVybjsKKyAgICBhdXRvIHJl
c3VsdCA9IHZhbGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMoInVuaWZvcm0yZnYiLCBsb2NhdGlvbiwg
ZGF0YSwgMiwgc3JjT2Zmc2V0LCBzcmNMZW5ndGgpOworICAgIGlmICghcmVzdWx0KQogICAgICAg
ICByZXR1cm47Ci0gICAgbV9jb250ZXh0LT51bmlmb3JtMmZ2KGxvY2F0aW9uLT5sb2NhdGlvbigp
LCBkYXRhLmRhdGEoKSwgc3JjT2Zmc2V0LCAoc3JjTGVuZ3RoID8gc3JjTGVuZ3RoIDogZGF0YS5s
ZW5ndGgoKSAtIHNyY09mZnNldCkgLyAyKTsKKyAgICBtX2NvbnRleHQtPnVuaWZvcm0yZnYobG9j
YXRpb24tPmxvY2F0aW9uKCksIHJlc3VsdC52YWx1ZSgpKTsKIH0KIAogdm9pZCBXZWJHTDJSZW5k
ZXJpbmdDb250ZXh0Ojp1bmlmb3JtM2Z2KFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwg
RmxvYXQzMkxpc3QgZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgp
CiB7Ci0gICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVVbmlmb3Jt
UGFyYW1ldGVycygidW5pZm9ybTNmdiIsIGxvY2F0aW9uLCBkYXRhLCAzLCBzcmNPZmZzZXQsIHNy
Y0xlbmd0aCkpCisgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSkKKyAgICAgICAgcmV0
dXJuOworICAgIGF1dG8gcmVzdWx0ID0gdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycygidW5pZm9y
bTNmdiIsIGxvY2F0aW9uLCBkYXRhLCAzLCBzcmNPZmZzZXQsIHNyY0xlbmd0aCk7CisgICAgaWYg
KCFyZXN1bHQpCiAgICAgICAgIHJldHVybjsKLSAgICBtX2NvbnRleHQtPnVuaWZvcm0zZnYobG9j
YXRpb24tPmxvY2F0aW9uKCksIGRhdGEuZGF0YSgpLCBzcmNPZmZzZXQsIChzcmNMZW5ndGggPyBz
cmNMZW5ndGggOiBkYXRhLmxlbmd0aCgpIC0gc3JjT2Zmc2V0KSAvIDMpOworICAgIG1fY29udGV4
dC0+dW5pZm9ybTNmdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgcmVzdWx0LnZhbHVlKCkpOwogfQog
CiB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm00ZnYoV2ViR0xVbmlmb3JtTG9j
YXRpb24qIGxvY2F0aW9uLCBGbG9hdDMyTGlzdCBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdD
R0x1aW50IHNyY0xlbmd0aCkKIHsKLSAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8
ICF2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKCJ1bmlmb3JtNGZ2IiwgbG9jYXRpb24sIGRhdGEs
IDQsIHNyY09mZnNldCwgc3JjTGVuZ3RoKSkKKyAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGlu
ZygpKQogICAgICAgICByZXR1cm47Ci0gICAgbV9jb250ZXh0LT51bmlmb3JtNGZ2KGxvY2F0aW9u
LT5sb2NhdGlvbigpLCBkYXRhLmRhdGEoKSwgc3JjT2Zmc2V0LCAoc3JjTGVuZ3RoID8gc3JjTGVu
Z3RoIDogZGF0YS5sZW5ndGgoKSAtIHNyY09mZnNldCkgLyA0KTsKKyAgICBhdXRvIHJlc3VsdCA9
IHZhbGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMoInVuaWZvcm00ZnYiLCBsb2NhdGlvbiwgZGF0YSwg
NCwgc3JjT2Zmc2V0LCBzcmNMZW5ndGgpOworICAgIGlmICghcmVzdWx0KQorICAgICAgICByZXR1
cm47CisgICAgbV9jb250ZXh0LT51bmlmb3JtNGZ2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCByZXN1
bHQudmFsdWUoKSk7CiB9CiAKIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTFp
dihXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEludDMyTGlzdCBkYXRhLCBHQ0dMdWlu
dCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKIHsKLSAgICBpZiAoaXNDb250ZXh0TG9z
dE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKCJ1bmlmb3JtMWl2Iiwg
bG9jYXRpb24sIGRhdGEsIDEsIHNyY09mZnNldCwgc3JjTGVuZ3RoKSkKKyAgICBpZiAoaXNDb250
ZXh0TG9zdE9yUGVuZGluZygpKQogICAgICAgICByZXR1cm47Ci0gICAgbV9jb250ZXh0LT51bmlm
b3JtMWl2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCBkYXRhLmRhdGEoKSwgc3JjT2Zmc2V0LCBzcmNM
ZW5ndGggPyBzcmNMZW5ndGggOiAoZGF0YS5sZW5ndGgoKSAtIHNyY09mZnNldCkpOworICAgIGF1
dG8gcmVzdWx0ID0gdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycygidW5pZm9ybTFpdiIsIGxvY2F0
aW9uLCBkYXRhLCAxLCBzcmNPZmZzZXQsIHNyY0xlbmd0aCk7CisgICAgaWYgKCFyZXN1bHQpCisg
ICAgICAgIHJldHVybjsKKyAgICBtX2NvbnRleHQtPnVuaWZvcm0xaXYobG9jYXRpb24tPmxvY2F0
aW9uKCksIHJlc3VsdC52YWx1ZSgpKTsKIH0KIAogdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0
Ojp1bmlmb3JtMml2KFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgSW50MzJMaXN0IGRh
dGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQogewotICAgIGlmIChp
c0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMoInVu
aWZvcm0yaXYiLCBsb2NhdGlvbiwgZGF0YSwgMiwgc3JjT2Zmc2V0LCBzcmNMZW5ndGgpKQorICAg
IGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBtX2Nv
bnRleHQtPnVuaWZvcm0yaXYobG9jYXRpb24tPmxvY2F0aW9uKCksIGRhdGEuZGF0YSgpLCBzcmNP
ZmZzZXQsIChzcmNMZW5ndGggPyBzcmNMZW5ndGggOiBkYXRhLmxlbmd0aCgpIC0gc3JjT2Zmc2V0
KSAvIDIpOworICAgIGF1dG8gcmVzdWx0ID0gdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycygidW5p
Zm9ybTJpdiIsIGxvY2F0aW9uLCBkYXRhLCAyLCBzcmNPZmZzZXQsIHNyY0xlbmd0aCk7CisgICAg
aWYgKCFyZXN1bHQpCisgICAgICAgIHJldHVybjsKKyAgICBtX2NvbnRleHQtPnVuaWZvcm0yaXYo
bG9jYXRpb24tPmxvY2F0aW9uKCksIHJlc3VsdC52YWx1ZSgpKTsKIH0KIAogdm9pZCBXZWJHTDJS
ZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtM2l2KFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlv
biwgSW50MzJMaXN0IGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3Ro
KQogewotICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlVW5pZm9y
bVBhcmFtZXRlcnMoInVuaWZvcm0zaXYiLCBsb2NhdGlvbiwgZGF0YSwgMywgc3JjT2Zmc2V0LCBz
cmNMZW5ndGgpKQorICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCiAgICAgICAgIHJl
dHVybjsKLSAgICBtX2NvbnRleHQtPnVuaWZvcm0zaXYobG9jYXRpb24tPmxvY2F0aW9uKCksIGRh
dGEuZGF0YSgpLCBzcmNPZmZzZXQsIChzcmNMZW5ndGggPyBzcmNMZW5ndGggOiBkYXRhLmxlbmd0
aCgpIC0gc3JjT2Zmc2V0KSAvIDMpOworICAgIGF1dG8gcmVzdWx0ID0gdmFsaWRhdGVVbmlmb3Jt
UGFyYW1ldGVycygidW5pZm9ybTNpdiIsIGxvY2F0aW9uLCBkYXRhLCAzLCBzcmNPZmZzZXQsIHNy
Y0xlbmd0aCk7CisgICAgaWYgKCFyZXN1bHQpCisgICAgICAgIHJldHVybjsKKyAgICBtX2NvbnRl
eHQtPnVuaWZvcm0zaXYobG9jYXRpb24tPmxvY2F0aW9uKCksIHJlc3VsdC52YWx1ZSgpKTsKIH0K
IAogdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtNGl2KFdlYkdMVW5pZm9ybUxv
Y2F0aW9uKiBsb2NhdGlvbiwgSW50MzJMaXN0IGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NH
THVpbnQgc3JjTGVuZ3RoKQogewotICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwg
IXZhbGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMoInVuaWZvcm00aXYiLCBsb2NhdGlvbiwgZGF0YSwg
NCwgc3JjT2Zmc2V0LCBzcmNMZW5ndGgpKQorICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5n
KCkpCiAgICAgICAgIHJldHVybjsKLSAgICBtX2NvbnRleHQtPnVuaWZvcm00aXYobG9jYXRpb24t
PmxvY2F0aW9uKCksIGRhdGEuZGF0YSgpLCBzcmNPZmZzZXQsIChzcmNMZW5ndGggPyBzcmNMZW5n
dGggOiBkYXRhLmxlbmd0aCgpIC0gc3JjT2Zmc2V0KSAvIDQpOworICAgIGF1dG8gcmVzdWx0ID0g
dmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycygidW5pZm9ybTRpdiIsIGxvY2F0aW9uLCBkYXRhLCA0
LCBzcmNPZmZzZXQsIHNyY0xlbmd0aCk7CisgICAgaWYgKCFyZXN1bHQpCisgICAgICAgIHJldHVy
bjsKKyAgICBtX2NvbnRleHQtPnVuaWZvcm00aXYobG9jYXRpb24tPmxvY2F0aW9uKCksIHJlc3Vs
dC52YWx1ZSgpKTsKIH0KIAogdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtTWF0
cml4MmZ2KFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNw
b3NlLCBGbG9hdDMyTGlzdCBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xl
bmd0aCkKIHsKLSAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVVu
aWZvcm1NYXRyaXhQYXJhbWV0ZXJzKCJ1bmlmb3JtTWF0cml4MmZ2IiwgbG9jYXRpb24sIHRyYW5z
cG9zZSwgZGF0YSwgMioyLCBzcmNPZmZzZXQsIHNyY0xlbmd0aCkpCisgICAgaWYgKGlzQ29udGV4
dExvc3RPclBlbmRpbmcoKSkKICAgICAgICAgcmV0dXJuOwotICAgIG1fY29udGV4dC0+dW5pZm9y
bU1hdHJpeDJmdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgdHJhbnNwb3NlLCBkYXRhLmRhdGEoKSwg
c3JjT2Zmc2V0LCAoc3JjTGVuZ3RoID8gc3JjTGVuZ3RoIDogZGF0YS5sZW5ndGgoKSAtIHNyY09m
ZnNldCkgLyAoMioyKSk7CisgICAgYXV0byByZXN1bHQgPSB2YWxpZGF0ZVVuaWZvcm1NYXRyaXhQ
YXJhbWV0ZXJzKCJ1bmlmb3JtTWF0cml4MmZ2IiwgbG9jYXRpb24sIHRyYW5zcG9zZSwgZGF0YSwg
MioyLCBzcmNPZmZzZXQsIHNyY0xlbmd0aCk7CisgICAgaWYgKCFyZXN1bHQpCisgICAgICAgIHJl
dHVybjsKKyAgICBtX2NvbnRleHQtPnVuaWZvcm1NYXRyaXgyZnYobG9jYXRpb24tPmxvY2F0aW9u
KCksIHRyYW5zcG9zZSwgcmVzdWx0LnZhbHVlKCkpOwogfQogCiB2b2lkIFdlYkdMMlJlbmRlcmlu
Z0NvbnRleHQ6OnVuaWZvcm1NYXRyaXgzZnYoV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9u
LCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEZsb2F0MzJMaXN0IGRhdGEsIEdDR0x1aW50IHNyY09m
ZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQogewotICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5k
aW5nKCkgfHwgIXZhbGlkYXRlVW5pZm9ybU1hdHJpeFBhcmFtZXRlcnMoInVuaWZvcm1NYXRyaXgz
ZnYiLCBsb2NhdGlvbiwgdHJhbnNwb3NlLCBkYXRhLCAzKjMsIHNyY09mZnNldCwgc3JjTGVuZ3Ro
KSkKKyAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpKQogICAgICAgICByZXR1cm47Ci0g
ICAgbV9jb250ZXh0LT51bmlmb3JtTWF0cml4M2Z2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCB0cmFu
c3Bvc2UsIGRhdGEuZGF0YSgpLCBzcmNPZmZzZXQsIChzcmNMZW5ndGggPyBzcmNMZW5ndGggOiBk
YXRhLmxlbmd0aCgpIC0gc3JjT2Zmc2V0KSAvICgzKjMpKTsKKyAgICBhdXRvIHJlc3VsdCA9IHZh
bGlkYXRlVW5pZm9ybU1hdHJpeFBhcmFtZXRlcnMoInVuaWZvcm1NYXRyaXgzZnYiLCBsb2NhdGlv
biwgdHJhbnNwb3NlLCBkYXRhLCAzKjMsIHNyY09mZnNldCwgc3JjTGVuZ3RoKTsKKyAgICBpZiAo
IXJlc3VsdCkKKyAgICAgICAgcmV0dXJuOworICAgIG1fY29udGV4dC0+dW5pZm9ybU1hdHJpeDNm
dihsb2NhdGlvbi0+bG9jYXRpb24oKSwgdHJhbnNwb3NlLCByZXN1bHQudmFsdWUoKSk7CiB9CiAK
IHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybU1hdHJpeDRmdihXZWJHTFVuaWZv
cm1Mb2NhdGlvbiogbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgRmxvYXQzMkxpc3Qg
ZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCiB7Ci0gICAgaWYg
KGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVVbmlmb3JtTWF0cml4UGFyYW1l
dGVycygidW5pZm9ybU1hdHJpeDRmdiIsIGxvY2F0aW9uLCB0cmFuc3Bvc2UsIGRhdGEsIDQqNCwg
c3JjT2Zmc2V0LCBzcmNMZW5ndGgpKQorICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkp
CisgICAgICAgIHJldHVybjsKKyAgICBhdXRvIHJlc3VsdCA9IHZhbGlkYXRlVW5pZm9ybU1hdHJp
eFBhcmFtZXRlcnMoInVuaWZvcm1NYXRyaXg0ZnYiLCBsb2NhdGlvbiwgdHJhbnNwb3NlLCBkYXRh
LCA0KjQsIHNyY09mZnNldCwgc3JjTGVuZ3RoKTsKKyAgICBpZiAoIXJlc3VsdCkKICAgICAgICAg
cmV0dXJuOwotICAgIG1fY29udGV4dC0+dW5pZm9ybU1hdHJpeDRmdihsb2NhdGlvbi0+bG9jYXRp
b24oKSwgdHJhbnNwb3NlLCBkYXRhLmRhdGEoKSwgc3JjT2Zmc2V0LCAoc3JjTGVuZ3RoID8gc3Jj
TGVuZ3RoIDogZGF0YS5sZW5ndGgoKSAtIHNyY09mZnNldCkgLyAoNCo0KSk7CisgICAgbV9jb250
ZXh0LT51bmlmb3JtTWF0cml4NGZ2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCB0cmFuc3Bvc2UsIHJl
c3VsdC52YWx1ZSgpKTsKIH0KIAogdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpyZWFkUGl4
ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWln
aHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgQXJyYXlCdWZmZXJWaWV3JiBwaXhl
bHMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJp
bmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdD
b250ZXh0LmgKaW5kZXggYjhiMDM2ZTQ0NzZhNGYxNWQ0ZTUwNjc1OGM1NzU5MzVlMGEwNjI0Zi4u
NWY0N2U2MWYwYTQ0NDRhMjg4YzFiNDYwZmI0ZTBmNzM2Njc0NjY3OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuaApAQCAtMjky
LDcgKzI5Miw4IEBAIHByaXZhdGU6CiAgICAgYm9vbCB2YWxpZGF0ZUluZGV4QXJyYXlDb25zZXJ2
YXRpdmUoR0NHTGVudW0gdHlwZSwgdW5zaWduZWQmIG51bUVsZW1lbnRzUmVxdWlyZWQpIGZpbmFs
OwogICAgIGJvb2wgdmFsaWRhdGVCbGVuZEVxdWF0aW9uKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFt
ZSwgR0NHTGVudW0gbW9kZSkgZmluYWw7CiAgICAgYm9vbCB2YWxpZGF0ZUNhcGFiaWxpdHkoY29u
c3QgY2hhciogZnVuY3Rpb25OYW1lLCBHQ0dMZW51bSBjYXApIGZpbmFsOwotICAgIGJvb2wgdmFs
aWRhdGVDbGVhckJ1ZmZlcihjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIEdDR0xlbnVtIGJ1ZmZl
ciwgc2l6ZV90LCBHQ0dMdWludCBzcmNPZmZzZXQpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQs
IHR5cGVuYW1lIFR5cGVkQXJyYXlUeXBlPgorICAgIE9wdGlvbmFsPEdDR0xTcGFuPGNvbnN0IFQ+
PiB2YWxpZGF0ZUNsZWFyQnVmZmVyKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgR0NHTGVudW0g
YnVmZmVyLCBUeXBlZExpc3Q8VHlwZWRBcnJheVR5cGUsIFQ+JiB2YWx1ZXMsIEdDR0x1aW50IHNy
Y09mZnNldCk7CiAgICAgYm9vbCB2YWxpZGF0ZUZyYW1lYnVmZmVyVGFyZ2V0KEdDR0xlbnVtIHRh
cmdldCkgZmluYWw7CiAgICAgV2ViR0xGcmFtZWJ1ZmZlciogZ2V0RnJhbWVidWZmZXJCaW5kaW5n
KEdDR0xlbnVtIHRhcmdldCkgZmluYWw7CiAgICAgV2ViR0xGcmFtZWJ1ZmZlciogZ2V0UmVhZEZy
YW1lYnVmZmVyQmluZGluZygpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xEcmF3QnVmZmVycy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTERyYXdCdWZmZXJzLmNwcAppbmRleCA0OTQxNTZlMWU2NWI2MDI5MTkwZGI3YzFjMDI2
YWRmODAzZGRhOGQyLi5lNWNlYjRiZGRjYzRjMDUxZGI4YjlhYTljZTAyMDgxYmYyMjMwNTAwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTERyYXdCdWZmZXJzLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTERyYXdCdWZmZXJzLmNwcApA
QCAtNzQsOCArNzQsOCBAQCB2b2lkIFdlYkdMRHJhd0J1ZmZlcnM6OmRyYXdCdWZmZXJzV0VCR0wo
Y29uc3QgVmVjdG9yPEdDR0xlbnVtPiYgYnVmZmVycykKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQogICAgICAgICAvLyBCZWNhdXNlIHRoZSBiYWNrYnVmZmVyIGlzIHNpbXVsYXRlZCBv
biBhbGwgY3VycmVudCBXZWJLaXQgcG9ydHMsIHdlIG5lZWQgdG8gY2hhbmdlIEJBQ0sgdG8gQ09M
T1JfQVRUQUNITUVOVDAuCi0gICAgICAgIEdDR0xlbnVtIHZhbHVlID0gKGJ1ZnNbMF0gPT0gR3Jh
cGhpY3NDb250ZXh0R0w6OkJBQ0spID8gR3JhcGhpY3NDb250ZXh0R0w6OkNPTE9SX0FUVEFDSE1F
TlQwIDogR3JhcGhpY3NDb250ZXh0R0w6Ok5PTkU7Ci0gICAgICAgIG1fY29udGV4dC0+Z3JhcGhp
Y3NDb250ZXh0R0woKS0+Z2V0RXh0ZW5zaW9ucygpLmRyYXdCdWZmZXJzRVhUKDEsICZ2YWx1ZSk7
CisgICAgICAgIEdDR0xlbnVtIHZhbHVlWzFdIHsgKGJ1ZnNbMF0gPT0gR3JhcGhpY3NDb250ZXh0
R0w6OkJBQ0spID8gR3JhcGhpY3NDb250ZXh0R0w6OkNPTE9SX0FUVEFDSE1FTlQwIDogR3JhcGhp
Y3NDb250ZXh0R0w6Ok5PTkUgfTsKKyAgICAgICAgbV9jb250ZXh0LT5ncmFwaGljc0NvbnRleHRH
TCgpLT5nZXRFeHRlbnNpb25zKCkuZHJhd0J1ZmZlcnNFWFQodmFsdWUpOwogICAgICAgICBtX2Nv
bnRleHQtPnNldEJhY2tEcmF3QnVmZmVyKGJ1ZnNbMF0pOwogICAgIH0gZWxzZSB7CiAgICAgICAg
IGlmIChuID4gbV9jb250ZXh0LT5nZXRNYXhEcmF3QnVmZmVycygpKSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEZyYW1lYnVmZmVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRnJhbWVidWZmZXIuY3BwCmluZGV4IDM2NThlZThlYWFm
N2YwZGJiODg2M2NlZDUwMjQyNWY0ZmI0ZTIzYTUuLmIxOThiMzY2YjExZjE1YjFiODAzYmQwNjNj
NzZjNGYyY2Q4ZDExNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMRnJhbWVidWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
RnJhbWVidWZmZXIuY3BwCkBAIC03MDIsMTMgKzcwMiwxMCBAQCB2b2lkIFdlYkdMRnJhbWVidWZm
ZXI6OmRyYXdCdWZmZXJzSWZOZWNlc3NhcnkoYm9vbCBmb3JjZSkKICAgICAgICAgICAgIH0KICAg
ICAgICAgfQogICAgICAgICBpZiAocmVzZXQpIHsKLSAgICAgICAgICAgIGlmIChjb250ZXh0KCkt
PmlzV2ViR0wyKCkpIHsKLSAgICAgICAgICAgICAgICBjb250ZXh0KCktPmdyYXBoaWNzQ29udGV4
dEdMKCktPmRyYXdCdWZmZXJzKAotICAgICAgICAgICAgICAgICAgICBtX2ZpbHRlcmVkRHJhd0J1
ZmZlcnMuc2l6ZSgpLCBtX2ZpbHRlcmVkRHJhd0J1ZmZlcnMuZGF0YSgpKTsKLSAgICAgICAgICAg
IH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgY29udGV4dCgpLT5ncmFwaGljc0NvbnRleHRHTCgp
LT5nZXRFeHRlbnNpb25zKCkuZHJhd0J1ZmZlcnNFWFQoCi0gICAgICAgICAgICAgICAgICAgIG1f
ZmlsdGVyZWREcmF3QnVmZmVycy5zaXplKCksIG1fZmlsdGVyZWREcmF3QnVmZmVycy5kYXRhKCkp
OwotICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGNvbnRleHQoKS0+aXNXZWJHTDIoKSkK
KyAgICAgICAgICAgICAgICBjb250ZXh0KCktPmdyYXBoaWNzQ29udGV4dEdMKCktPmRyYXdCdWZm
ZXJzKG1fZmlsdGVyZWREcmF3QnVmZmVycyk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICAgICAgY29udGV4dCgpLT5ncmFwaGljc0NvbnRleHRHTCgpLT5nZXRFeHRlbnNpb25zKCkuZHJh
d0J1ZmZlcnNFWFQobV9maWx0ZXJlZERyYXdCdWZmZXJzKTsKICAgICAgICAgfQogICAgIH0KIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZS5jcHAKaW5kZXggMTg1ZThjNjJlNmZiZTMxZjMxMzg4YzBjOWY4MGQ4MWNlZTI0
YTNiMS4uYTU2MmE0ZDRjOTA2N2E5OGNhN2I3NTJmZmYzYTcyNmM3ZGIyZGFjMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZS5jcHAKQEAgLTE2MDMsNyArMTYwMyw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZTo6YnVmZmVyRGF0YShHQ0dMZW51bSB0YXJnZXQsIE9wdGlvbmFsPEJ1ZmZlckRhdGFTCiAg
ICAgICAgIH0KIAogICAgICAgICBtX2NvbnRleHQtPm1vdmVFcnJvcnNUb1N5bnRoZXRpY0Vycm9y
TGlzdCgpOwotICAgICAgICBtX2NvbnRleHQtPmJ1ZmZlckRhdGEodGFyZ2V0LCBkYXRhLT5ieXRl
TGVuZ3RoKCksIGRhdGEtPmRhdGEoKSwgdXNhZ2UpOworICAgICAgICBtX2NvbnRleHQtPmJ1ZmZl
ckRhdGEodGFyZ2V0LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4oZGF0YS0+ZGF0YSgpLCBkYXRh
LT5ieXRlTGVuZ3RoKCkpLCB1c2FnZSk7CiAgICAgICAgIGlmIChtX2NvbnRleHQtPm1vdmVFcnJv
cnNUb1N5bnRoZXRpY0Vycm9yTGlzdCgpKSB7CiAgICAgICAgICAgICAvLyBUaGUgYnVmZmVyRGF0
YSBmdW5jdGlvbiBmYWlsZWQuIFRlbGwgdGhlIGJ1ZmZlciBpdCBkb2Vzbid0IGhhdmUgdGhlIGRh
dGEgaXQgdGhpbmtzIGl0IGRvZXMuCiAgICAgICAgICAgICBidWZmZXItPmRpc2Fzc29jaWF0ZUJ1
ZmZlckRhdGEoKTsKQEAgLTE2MzAsNyArMTYzMCw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZTo6YnVmZmVyU3ViRGF0YShHQ0dMZW51bSB0YXJnZXQsIGxvbmcgbG9uZyBvZmZzZXQs
CiAgICAgICAgIH0KIAogICAgICAgICBtX2NvbnRleHQtPm1vdmVFcnJvcnNUb1N5bnRoZXRpY0Vy
cm9yTGlzdCgpOwotICAgICAgICBtX2NvbnRleHQtPmJ1ZmZlclN1YkRhdGEodGFyZ2V0LCBzdGF0
aWNfY2FzdDxHQ0dMaW50cHRyPihvZmZzZXQpLCBkYXRhLT5ieXRlTGVuZ3RoKCksIGRhdGEtPmRh
dGEoKSk7CisgICAgICAgIG1fY29udGV4dC0+YnVmZmVyU3ViRGF0YSh0YXJnZXQsIHN0YXRpY19j
YXN0PEdDR0xpbnRwdHI+KG9mZnNldCksIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPihkYXRhLT5k
YXRhKCksIGRhdGEtPmJ5dGVMZW5ndGgoKSkpOwogICAgICAgICBpZiAobV9jb250ZXh0LT5tb3Zl
RXJyb3JzVG9TeW50aGV0aWNFcnJvckxpc3QoKSkgewogICAgICAgICAgICAgLy8gVGhlIGJ1ZmZl
clN1YkRhdGEgZnVuY3Rpb24gZmFpbGVkLiBUZWxsIHRoZSBidWZmZXIgaXQgZG9lc24ndCBoYXZl
IHRoZSBkYXRhIGl0IHRoaW5rcyBpdCBkb2VzLgogICAgICAgICAgICAgYnVmZmVyLT5kaXNhc3Nv
Y2lhdGVCdWZmZXJEYXRhKCk7CkBAIC0xNzU2LDggKzE3NTYsOCBAQCB2b2lkIFdlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2U6OmNvbXByZXNzZWRUZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NH
TGludCBsZQogI2lmIFVTRShBTkdMRSkKICAgICBpZiAoIXZhbGlkYXRlVGV4dHVyZTJEQmluZGlu
ZygiY29tcHJlc3NlZFRleEltYWdlMkQiLCB0YXJnZXQpKQogICAgICAgICByZXR1cm47Ci0gICAg
bV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuY29tcHJlc3NlZFRleEltYWdlMkRSb2J1c3RBTkdM
RSh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwKLSAgICAgICAg
Ym9yZGVyLCBkYXRhLmJ5dGVMZW5ndGgoKSwgZGF0YS5ieXRlTGVuZ3RoKCksIGRhdGEuYmFzZUFk
ZHJlc3MoKSk7CisgICAgbV9jb250ZXh0LT5jb21wcmVzc2VkVGV4SW1hZ2UyRCh0YXJnZXQsIGxl
dmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwKKyAgICAgICAgYm9yZGVyLCBkYXRh
LmJ5dGVMZW5ndGgoKSwgbWFrZUdDR0xTcGFuKGRhdGEuYmFzZUFkZHJlc3MoKSwgZGF0YS5ieXRl
TGVuZ3RoKCkpKTsKICNlbHNlCiAgICAgaWYgKCF2YWxpZGF0ZVRleEZ1bmNMZXZlbCgiY29tcHJl
c3NlZFRleEltYWdlMkQiLCB0YXJnZXQsIGxldmVsKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTc4
Miw3ICsxNzgyLDcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpjb21wcmVzc2Vk
VGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGUKICAgICAgICAgcmV0dXJuOwog
ICAgIG1fY29udGV4dC0+bW92ZUVycm9yc1RvU3ludGhldGljRXJyb3JMaXN0KCk7CiAgICAgc3Rh
dGljX2Nhc3Q8R3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqPihtX2NvbnRleHQuZ2V0KCkpLT5jb21w
cmVzc2VkVGV4SW1hZ2UyRCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhl
aWdodCwKLSAgICAgICAgYm9yZGVyLCBkYXRhLmJ5dGVMZW5ndGgoKSwgZGF0YS5iYXNlQWRkcmVz
cygpKTsKKyAgICAgICAgYm9yZGVyLCBkYXRhLmJ5dGVMZW5ndGgoKSwgbWFrZUdDR0xTcGFuKGRh
dGEuYmFzZUFkZHJlc3MoKSwgZGF0YS5ieXRlTGVuZ3RoKCkpKTsKICAgICBpZiAobV9jb250ZXh0
LT5tb3ZlRXJyb3JzVG9TeW50aGV0aWNFcnJvckxpc3QoKSkgewogICAgICAgICAvLyBUaGUgY29t
cHJlc3NlZFRleEltYWdlMkQgZnVuY3Rpb24gZmFpbGVkLiBUZWxsIHRoZSBXZWJHTFRleHR1cmUg
aXQgZG9lc24ndCBoYXZlIHRoZSBkYXRhIGZvciB0aGlzIGxldmVsLgogICAgICAgICB0ZXgtPm1h
cmtJbnZhbGlkKHRhcmdldCwgbGV2ZWwpOwpAQCAtMTgwMSw3ICsxODAxLDcgQEAgdm9pZCBXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlOjpjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0
YXJnZXQsIEdDR0xpbnQKICNpZiBVU0UoQU5HTEUpCiAgICAgaWYgKCF2YWxpZGF0ZVRleHR1cmUy
REJpbmRpbmcoImNvbXByZXNzZWRUZXhTdWJJbWFnZTJEIiwgdGFyZ2V0KSkKICAgICAgICAgcmV0
dXJuOwotICAgIGdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5jb21wcmVzc2Vk
VGV4U3ViSW1hZ2UyRFJvYnVzdEFOR0xFKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQs
IHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgZGF0YS5ieXRlTGVuZ3RoKCksIGRhdGEuYnl0ZUxlbmd0
aCgpLCBkYXRhLmJhc2VBZGRyZXNzKCkpOworICAgIG1fY29udGV4dC0+Y29tcHJlc3NlZFRleFN1
YkltYWdlMkQodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdodCwg
Zm9ybWF0LCBkYXRhLmJ5dGVMZW5ndGgoKSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+KGRhdGEu
YmFzZUFkZHJlc3MoKSwgZGF0YS5ieXRlTGVuZ3RoKCkpKTsKICNlbHNlCiAgICAgaWYgKCF2YWxp
ZGF0ZVRleEZ1bmNMZXZlbCgiY29tcHJlc3NlZFRleFN1YkltYWdlMkQiLCB0YXJnZXQsIGxldmVs
KSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTgyNCw3ICsxODI0LDcgQEAgdm9pZCBXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlOjpjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQs
IEdDR0xpbnQKICAgICBpZiAoIXZhbGlkYXRlQ29tcHJlc3NlZFRleFN1YkRpbWVuc2lvbnMoImNv
bXByZXNzZWRUZXhTdWJJbWFnZTJEIiwgdGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwg
d2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0ZXguZ2V0KCkpKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBzdGF0aWNfY2FzdDxHcmFwaGljc0NvbnRleHRHTE9wZW5HTCo+KGdyYXBoaWNzQ29udGV4dEdM
KCkpLT5jb21wcmVzc2VkVGV4U3ViSW1hZ2UyRCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zm
c2V0LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIGRhdGEuYnl0ZUxlbmd0aCgpLCBkYXRhLmJhc2VB
ZGRyZXNzKCkpOworICAgIHN0YXRpY19jYXN0PEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKj4oZ3Jh
cGhpY3NDb250ZXh0R0woKSktPmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKHRhcmdldCwgbGV2ZWws
IHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgZGF0YS5ieXRlTGVuZ3Ro
KCksIG1ha2VHQ0dMU3BhbihkYXRhLmJhc2VBZGRyZXNzKCksIGRhdGEuYnl0ZUxlbmd0aCgpKSk7
CiAgICAgdGV4LT5zZXRDb21wcmVzc2VkKCk7CiAjZW5kaWYKIH0KQEAgLTE5MDAsOCArMTkwMCw4
IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Y29weVRleFN1YkltYWdlMkQoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KICAgICAgICAgVW5pcXVlQXJyYXk8dW5zaWduZWQgY2hhcj4gemVybzsKKyAgICAgICAgdW5z
aWduZWQgc2l6ZSA9IDA7CiAgICAgICAgIGlmICh3aWR0aCAmJiBoZWlnaHQpIHsKLSAgICAgICAg
ICAgIHVuc2lnbmVkIHNpemU7CiAgICAgICAgICAgICBHQ0dMZW51bSBlcnJvciA9IG1fY29udGV4
dC0+Y29tcHV0ZUltYWdlU2l6ZUluQnl0ZXMoZm9ybWF0LCB0eXBlLCB3aWR0aCwgaGVpZ2h0LCAx
LCBnZXRVbnBhY2tQaXhlbFN0b3JlUGFyYW1zKFRleEltYWdlRGltZW5zaW9uOjpUZXgyRCksICZz
aXplLCBudWxscHRyLCBudWxscHRyKTsKICAgICAgICAgICAgIGlmIChlcnJvciAhPSBHcmFwaGlj
c0NvbnRleHRHTDo6Tk9fRVJST1IpIHsKICAgICAgICAgICAgICAgICBzeW50aGVzaXplR0xFcnJv
cihlcnJvciwgImNvcHlUZXhTdWJJbWFnZTJEIiwgImJhZCBkaW1lbnNpb25zIik7CkBAIC0xOTE0
LDcgKzE5MTQsNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmNvcHlUZXhTdWJJ
bWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbAogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgbWVtc2V0KHplcm8uZ2V0KCksIDAsIHNpemUpOwogICAgICAgICB9Ci0gICAgICAg
IG1fY29udGV4dC0+dGV4U3ViSW1hZ2UyRCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0
LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIHplcm8uZ2V0KCkpOworICAgICAgICBtX2Nv
bnRleHQtPnRleFN1YkltYWdlMkQodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgd2lk
dGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBtYWtlR0NHTFNwYW4oemVyby5nZXQoKSwgc2l6ZSkp
OwogICAgICAgICBpZiAoY2xpcHBlZFdpZHRoID4gMCAmJiBjbGlwcGVkSGVpZ2h0ID4gMCkKICAg
ICAgICAgICAgIG1fY29udGV4dC0+Y29weVRleFN1YkltYWdlMkQodGFyZ2V0LCBsZXZlbCwgeG9m
ZnNldCArIGNsaXBwZWRYIC0geCwgeW9mZnNldCArIGNsaXBwZWRZIC0geSwgY2xpcHBlZFgsIGNs
aXBwZWRZLCBjbGlwcGVkV2lkdGgsIGNsaXBwZWRIZWlnaHQpOwogICAgIH0gZWxzZQpAQCAtNDcw
NywxNCArNDcwNywxNCBAQCBFeGNlcHRpb25Pcjx2b2lkPiBXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlOjp0ZXhJbWFnZVNvdXJjZUhlbHBlcihUZXhJbWFnZUZ1bmN0aQogI2lmIFVTRShBTkdMRSkK
ICAgICAgICAgICAgIC8vIDNEIGZ1bmN0aW9ucy4KICAgICAgICAgICAgIGlmIChmdW5jdGlvbklE
ID09IFRleEltYWdlRnVuY3Rpb25JRDo6VGV4SW1hZ2UzRCkgewotICAgICAgICAgICAgICAgIG1f
Y29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnRleEltYWdlM0RSb2J1c3RBTkdMRSh0YXJnZXQsIGxl
dmVsLCBpbnRlcm5hbGZvcm1hdCwKKyAgICAgICAgICAgICAgICBtX2NvbnRleHQtPnRleEltYWdl
M0QodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgIGFk
anVzdGVkU291cmNlSW1hZ2VSZWN0LndpZHRoKCksIGFkanVzdGVkU291cmNlSW1hZ2VSZWN0Lmhl
aWdodCgpLCBkZXB0aCwgMCwKLSAgICAgICAgICAgICAgICAgICAgZm9ybWF0LCB0eXBlLCBieXRl
TGVuZ3RoLCBuZWVkQ29udmVyc2lvbiA/IGRhdGEuZGF0YSgpIDogcGl4ZWxzLT5kYXRhKCktPmRh
dGEoKSk7CisgICAgICAgICAgICAgICAgICAgIGZvcm1hdCwgdHlwZSwgbWFrZUdDR0xTcGFuKG5l
ZWRDb252ZXJzaW9uID8gZGF0YS5kYXRhKCkgOiBwaXhlbHMtPmRhdGEoKS0+ZGF0YSgpLCBieXRl
TGVuZ3RoKSk7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIEFTU0VSVChm
dW5jdGlvbklEID09IFRleEltYWdlRnVuY3Rpb25JRDo6VGV4U3ViSW1hZ2UzRCk7Ci0gICAgICAg
ICAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkudGV4U3ViSW1hZ2UzRFJvYnVzdEFO
R0xFKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHpvZmZzZXQsCisgICAgICAgICAg
ICAgICAgbV9jb250ZXh0LT50ZXhTdWJJbWFnZTNEKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlv
ZmZzZXQsIHpvZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgIGFkanVzdGVkU291cmNlSW1hZ2VS
ZWN0LndpZHRoKCksIGFkanVzdGVkU291cmNlSW1hZ2VSZWN0LmhlaWdodCgpLCBkZXB0aCwKLSAg
ICAgICAgICAgICAgICAgICAgZm9ybWF0LCB0eXBlLCBieXRlTGVuZ3RoLCBuZWVkQ29udmVyc2lv
biA/IGRhdGEuZGF0YSgpIDogcGl4ZWxzLT5kYXRhKCktPmRhdGEoKSk7CisgICAgICAgICAgICAg
ICAgICAgIGZvcm1hdCwgdHlwZSwgbWFrZUdDR0xTcGFuKG5lZWRDb252ZXJzaW9uID8gZGF0YS5k
YXRhKCkgOiBwaXhlbHMtPmRhdGEoKS0+ZGF0YSgpLCBieXRlTGVuZ3RoKSk7CiAgICAgICAgICAg
ICB9CiAjZWxzZQogICAgICAgICAgICAgLy8gV2ViR0wgMi4wIGlzIG9ubHkgc3VwcG9ydGVkIHdp
dGggdGhlIEFOR0xFIGJhY2tlbmQuCkBAIC00ODk0LDExICs0ODk0LDExIEBAIHZvaWQgV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZTo6dGV4SW1hZ2VBcnJheUJ1ZmZlclZpZXdIZWxwZXIoVGV4SW1h
Z2VGdW5jdGlvbklECiAgICAgfQogI2lmIFVTRShBTkdMRSkKICAgICBpZiAoZnVuY3Rpb25JRCA9
PSBUZXhJbWFnZUZ1bmN0aW9uSUQ6OlRleEltYWdlM0QpIHsKLSAgICAgICAgbV9jb250ZXh0LT5n
ZXRFeHRlbnNpb25zKCkudGV4SW1hZ2UzRFJvYnVzdEFOR0xFKHRhcmdldCwgbGV2ZWwsIGludGVy
bmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgYm9yZGVyLCBmb3JtYXQsIHR5cGUsIGJ5
dGVMZW5ndGgsIGRhdGEpOworICAgICAgICBtX2NvbnRleHQtPnRleEltYWdlM0QodGFyZ2V0LCBs
ZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBib3JkZXIsIGZvcm1h
dCwgdHlwZSwgbWFrZUdDR0xTcGFuKGRhdGEsIGJ5dGVMZW5ndGgpKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KICAgICBpZiAoZnVuY3Rpb25JRCA9PSBUZXhJbWFnZUZ1bmN0aW9uSUQ6OlRleFN1
YkltYWdlM0QpIHsKLSAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkudGV4U3ViSW1h
Z2UzRFJvYnVzdEFOR0xFKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHpvZmZzZXQs
IHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBmb3JtYXQsIHR5cGUsIGJ5dGVMZW5ndGgsIGRhdGEpOwor
ICAgICAgICBtX2NvbnRleHQtPnRleFN1YkltYWdlM0QodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwg
eW9mZnNldCwgem9mZnNldCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGZvcm1hdCwgdHlwZSwgbWFr
ZUdDR0xTcGFuKGRhdGEsIGJ5dGVMZW5ndGgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICNl
bmRpZiAvLyBVU0UoQU5HTEUpCkBAIC00OTczLDE0ICs0OTczLDE0IEBAIHZvaWQgV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZTo6dGV4SW1hZ2VJbXBsKFRleEltYWdlRnVuY3Rpb25JRCBmdW5jdGlv
bklELCBHQ0dMCiAjaWYgVVNFKEFOR0xFKQogICAgICAgICAvLyAzRCBmdW5jdGlvbnMuCiAgICAg
ICAgIGlmIChmdW5jdGlvbklEID09IFRleEltYWdlRnVuY3Rpb25JRDo6VGV4SW1hZ2UzRCkgewot
ICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkudGV4SW1hZ2UzRFJvYnVzdEFO
R0xFKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LAorICAgICAgICAgICAgbV9jb250ZXh0
LT50ZXhJbWFnZTNEKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LAogICAgICAgICAgICAg
ICAgIGFkanVzdGVkU291cmNlSW1hZ2VSZWN0LndpZHRoKCksIGFkanVzdGVkU291cmNlSW1hZ2VS
ZWN0LmhlaWdodCgpLCBkZXB0aCwgMCwKLSAgICAgICAgICAgICAgICBmb3JtYXQsIHR5cGUsIGJ5
dGVMZW5ndGgsIG5lZWRDb252ZXJzaW9uID8gZGF0YS5kYXRhKCkgOiBpbWFnZVBpeGVsRGF0YSk7
CisgICAgICAgICAgICAgICAgZm9ybWF0LCB0eXBlLCBtYWtlR0NHTFNwYW4obmVlZENvbnZlcnNp
b24gPyBkYXRhLmRhdGEoKSA6IGltYWdlUGl4ZWxEYXRhLCBieXRlTGVuZ3RoKSk7CiAgICAgICAg
IH0gZWxzZSB7CiAgICAgICAgICAgICBBU1NFUlQoZnVuY3Rpb25JRCA9PSBUZXhJbWFnZUZ1bmN0
aW9uSUQ6OlRleFN1YkltYWdlM0QpOwotICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNp
b25zKCkudGV4U3ViSW1hZ2UzRFJvYnVzdEFOR0xFKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlv
ZmZzZXQsIHpvZmZzZXQsCisgICAgICAgICAgICBtX2NvbnRleHQtPnRleFN1YkltYWdlM0QodGFy
Z2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgem9mZnNldCwKICAgICAgICAgICAgICAgICBh
ZGp1c3RlZFNvdXJjZUltYWdlUmVjdC53aWR0aCgpLCBhZGp1c3RlZFNvdXJjZUltYWdlUmVjdC5o
ZWlnaHQoKSwgZGVwdGgsCi0gICAgICAgICAgICAgICAgZm9ybWF0LCB0eXBlLCBieXRlTGVuZ3Ro
LCBuZWVkQ29udmVyc2lvbiA/IGRhdGEuZGF0YSgpIDogaW1hZ2VQaXhlbERhdGEpOworICAgICAg
ICAgICAgICAgIGZvcm1hdCwgdHlwZSwgbWFrZUdDR0xTcGFuKG5lZWRDb252ZXJzaW9uID8gZGF0
YS5kYXRhKCkgOiBpbWFnZVBpeGVsRGF0YSwgYnl0ZUxlbmd0aCkpOwogICAgICAgICB9CiAjZWxz
ZQogICAgICAgICBVTlVTRURfUEFSQU0oem9mZnNldCk7CkBAIC00OTkzLDcgKzQ5OTMsNyBAQCB2
b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnRleEltYWdlSW1wbChUZXhJbWFnZUZ1bmN0
aW9uSUQgZnVuY3Rpb25JRCwgR0NHTAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp0
ZXhJbWFnZTJEQmFzZShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGlu
dGVybmFsRm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQg
Ym9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBieXRlTGVu
Z3RoLCBjb25zdCB2b2lkKiBwaXhlbHMpCiB7CiAjaWYgVVNFKEFOR0xFKQotICAgIG1fY29udGV4
dC0+Z2V0RXh0ZW5zaW9ucygpLnRleEltYWdlMkRSb2J1c3RBTkdMRSh0YXJnZXQsIGxldmVsLCBp
bnRlcm5hbEZvcm1hdCwgd2lkdGgsIGhlaWdodCwgYm9yZGVyLCBmb3JtYXQsIHR5cGUsIGJ5dGVM
ZW5ndGgsIHBpeGVscyk7CisgICAgbV9jb250ZXh0LT50ZXhJbWFnZTJEKHRhcmdldCwgbGV2ZWws
IGludGVybmFsRm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIsIGZvcm1hdCwgdHlwZSwgbWFr
ZUdDR0xTcGFuKHBpeGVscywgYnl0ZUxlbmd0aCkpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0o
Ynl0ZUxlbmd0aCk7CiAgICAgLy8gRklYTUU6IEZvciBub3cgd2UgaWdub3JlIGFueSBlcnJvcnMg
cmV0dXJuZWQuCkBAIC01MDA3LDcgKzUwMDcsNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2U6OnRleEltYWdlMkRCYXNlKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgRwog
ICAgIH0gZWxzZSB7CiAgICAgICAgIEFTU0VSVCh2YWxpZGF0ZVNldHRhYmxlVGV4SW50ZXJuYWxG
b3JtYXQoInRleEltYWdlMkQiLCBpbnRlcm5hbEZvcm1hdCkpOwogICAgICAgICBtX2NvbnRleHQt
Pm1vdmVFcnJvcnNUb1N5bnRoZXRpY0Vycm9yTGlzdCgpOwotICAgICAgICBtX2NvbnRleHQtPnRl
eEltYWdlMkQodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxGb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGJv
cmRlciwgZm9ybWF0LCB0eXBlLCBwaXhlbHMpOworICAgICAgICBtX2NvbnRleHQtPnRleEltYWdl
MkQodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxGb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGJvcmRlciwg
Zm9ybWF0LCB0eXBlLCBtYWtlR0NHTFNwYW4ocGl4ZWxzLCBieXRlTGVuZ3RoKSk7CiAgICAgICAg
IGlmIChtX2NvbnRleHQtPm1vdmVFcnJvcnNUb1N5bnRoZXRpY0Vycm9yTGlzdCgpKSB7CiAgICAg
ICAgICAgICAvLyBUaGUgdGV4SW1hZ2UyRCBmdW5jdGlvbiBmYWlsZWQuIFRlbGwgdGhlIFdlYkdM
VGV4dHVyZSBpdCBkb2Vzbid0IGhhdmUgdGhlIGRhdGEgZm9yIHRoaXMgbGV2ZWwuCiAgICAgICAg
ICAgICB0ZXgtPm1hcmtJbnZhbGlkKHRhcmdldCwgbGV2ZWwpOwpAQCAtNTAyMyw3ICs1MDIzLDcg
QEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp0ZXhTdWJJbWFnZTJEQmFzZShHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwKICAgICBBU1NFUlQoIWlzQ29udGV4dExvc3QoKSk7
CiAjaWYgVVNFKEFOR0xFKQogICAgIFVOVVNFRF9QQVJBTShpbnRlcm5hbEZvcm1hdCk7Ci0gICAg
bV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkudGV4U3ViSW1hZ2UyRFJvYnVzdEFOR0xFKHRhcmdl
dCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwg
Ynl0ZUxlbmd0aCwgcGl4ZWxzKTsKKyAgICBtX2NvbnRleHQtPnRleFN1YkltYWdlMkQodGFyZ2V0
LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBt
YWtlR0NHTFNwYW4ocGl4ZWxzLCBieXRlTGVuZ3RoKSk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJB
TShieXRlTGVuZ3RoKTsKICAgICBBU1NFUlQodmFsaWRhdGVUZXhGdW5jUGFyYW1ldGVycygidGV4
U3ViSW1hZ2UyRCIsIFRleEltYWdlRnVuY3Rpb25UeXBlOjpUZXhTdWJJbWFnZSwgU291cmNlQXJy
YXlCdWZmZXJWaWV3LCB0YXJnZXQsIGxldmVsLCBpbnRlcm5hbEZvcm1hdCwgd2lkdGgsIGhlaWdo
dCwgMSwgMCwgZm9ybWF0LCB0eXBlKSk7CkBAIC01MDQwLDcgKzUwNDAsNyBAQCB2b2lkIFdlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2U6OnRleFN1YkltYWdlMkRCYXNlKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGludCBsZXZlbAogICAgIEFTU0VSVCh0ZXgtPmdldEhlaWdodCh0YXJnZXQsIGxldmVsKSA+
PSAoeW9mZnNldCArIGhlaWdodCkpOwogICAgIGlmICghaXNXZWJHTDIoKSkKICAgICAgICAgQVNT
RVJUX1VOVVNFRChpbnRlcm5hbEZvcm1hdCwgdGV4LT5nZXRJbnRlcm5hbEZvcm1hdCh0YXJnZXQs
IGxldmVsKSA9PSBpbnRlcm5hbEZvcm1hdCk7Ci0gICAgbV9jb250ZXh0LT50ZXhTdWJJbWFnZTJE
KHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwg
dHlwZSwgcGl4ZWxzKTsKKyAgICBtX2NvbnRleHQtPnRleFN1YkltYWdlMkQodGFyZ2V0LCBsZXZl
bCwgeG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBtYWtlR0NH
TFNwYW4ocGl4ZWxzLCBieXRlTGVuZ3RoKSk7CiAjZW5kaWYKIH0KIApAQCAtNTgyNiwxMDAgKzU4
MjYsMTI1IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybTRpKGNvbnN0
IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwKIAogdm9pZCBXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlOjp1bmlmb3JtMWZ2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlv
biwgRmxvYXQzMkxpc3QmJiB2KQogewotICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkg
fHwgIXZhbGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMoInVuaWZvcm0xZnYiLCBsb2NhdGlvbiwgdiwg
MSwgMCwgdi5sZW5ndGgoKSkpCisgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSkKICAg
ICAgICAgcmV0dXJuOwotCi0gICAgbV9jb250ZXh0LT51bmlmb3JtMWZ2KGxvY2F0aW9uLT5sb2Nh
dGlvbigpLCB2Lmxlbmd0aCgpLCB2LmRhdGEoKSk7CisgICAgYXV0byBkYXRhID0gdmFsaWRhdGVV
bmlmb3JtUGFyYW1ldGVycygidW5pZm9ybTFmdiIsIGxvY2F0aW9uLCB2LCAxKTsKKyAgICBpZiAo
IWRhdGEpCisgICAgICAgIHJldHVybjsKKyAgICBtX2NvbnRleHQtPnVuaWZvcm0xZnYobG9jYXRp
b24tPmxvY2F0aW9uKCksIGRhdGEudmFsdWUoKSk7CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6dW5pZm9ybTJmdihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRp
b24sIEZsb2F0MzJMaXN0JiYgdikKIHsKLSAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygp
IHx8ICF2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKCJ1bmlmb3JtMmZ2IiwgbG9jYXRpb24sIHYs
IDIsIDAsIHYubGVuZ3RoKCkpKQorICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCiAg
ICAgICAgIHJldHVybjsKLQotICAgIG1fY29udGV4dC0+dW5pZm9ybTJmdihsb2NhdGlvbi0+bG9j
YXRpb24oKSwgdi5sZW5ndGgoKSAvIDIsIHYuZGF0YSgpKTsKKyAgICBhdXRvIGRhdGEgPSB2YWxp
ZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKCJ1bmlmb3JtMmZ2IiwgbG9jYXRpb24sIHYsIDIpOworICAg
IGlmICghZGF0YSkKKyAgICAgICAgcmV0dXJuOworICAgIG1fY29udGV4dC0+dW5pZm9ybTJmdihs
b2NhdGlvbi0+bG9jYXRpb24oKSwgZGF0YS52YWx1ZSgpKTsKIH0KIAogdm9pZCBXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtM2Z2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBs
b2NhdGlvbiwgRmxvYXQzMkxpc3QmJiB2KQogewotICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5k
aW5nKCkgfHwgIXZhbGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMoInVuaWZvcm0zZnYiLCBsb2NhdGlv
biwgdiwgMywgMCwgdi5sZW5ndGgoKSkpCisgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmco
KSkKICAgICAgICAgcmV0dXJuOwotCi0gICAgbV9jb250ZXh0LT51bmlmb3JtM2Z2KGxvY2F0aW9u
LT5sb2NhdGlvbigpLCB2Lmxlbmd0aCgpIC8gMywgdi5kYXRhKCkpOworICAgIGF1dG8gZGF0YSA9
IHZhbGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMoInVuaWZvcm0zZnYiLCBsb2NhdGlvbiwgdiwgMyk7
CisgICAgaWYgKCFkYXRhKQorICAgICAgICByZXR1cm47CisgICAgbV9jb250ZXh0LT51bmlmb3Jt
M2Z2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCBkYXRhLnZhbHVlKCkpOwogfQogCiB2b2lkIFdlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm00ZnYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRp
b24qIGxvY2F0aW9uLCBGbG9hdDMyTGlzdCYmIHYpCiB7Ci0gICAgaWYgKGlzQ29udGV4dExvc3RP
clBlbmRpbmcoKSB8fCAhdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycygidW5pZm9ybTRmdiIsIGxv
Y2F0aW9uLCB2LCA0LCAwLCB2Lmxlbmd0aCgpKSkKKyAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVu
ZGluZygpKQogICAgICAgICByZXR1cm47Ci0KLSAgICBtX2NvbnRleHQtPnVuaWZvcm00ZnYobG9j
YXRpb24tPmxvY2F0aW9uKCksIHYubGVuZ3RoKCkgLyA0LCB2LmRhdGEoKSk7CisgICAgYXV0byBk
YXRhID0gdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycygidW5pZm9ybTRmdiIsIGxvY2F0aW9uLCB2
LCA0KTsKKyAgICBpZiAoIWRhdGEpCisgICAgICAgIHJldHVybjsKKyAgICBtX2NvbnRleHQtPnVu
aWZvcm00ZnYobG9jYXRpb24tPmxvY2F0aW9uKCksIGRhdGEudmFsdWUoKSk7CiB9CiAKIHZvaWQg
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybTFpdihjb25zdCBXZWJHTFVuaWZvcm1M
b2NhdGlvbiogbG9jYXRpb24sIEludDMyTGlzdCYmIHYpCiB7Ci0gICAgaWYgKGlzQ29udGV4dExv
c3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycygidW5pZm9ybTFpdiIs
IGxvY2F0aW9uLCB2LCAxLCAwLCB2Lmxlbmd0aCgpKSkKKyAgICBpZiAoaXNDb250ZXh0TG9zdE9y
UGVuZGluZygpKQorICAgICAgICByZXR1cm47CisgICAgYXV0byByZXN1bHQgPSB2YWxpZGF0ZVVu
aWZvcm1QYXJhbWV0ZXJzKCJ1bmlmb3JtMWl2IiwgbG9jYXRpb24sIHYsIDEpOworICAgIGlmICgh
cmVzdWx0KQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIGRhdGEgPSB2LmRhdGEoKTsKLSAg
ICBhdXRvIGxlbmd0aCA9IHYubGVuZ3RoKCk7CisgICAgYXV0byBkYXRhID0gcmVzdWx0LnZhbHVl
KCk7CiAKICAgICBpZiAobG9jYXRpb24tPnR5cGUoKSA9PSBHcmFwaGljc0NvbnRleHRHTDo6U0FN
UExFUl8yRCB8fCBsb2NhdGlvbi0+dHlwZSgpID09IEdyYXBoaWNzQ29udGV4dEdMOjpTQU1QTEVS
X0NVQkUpIHsKLSAgICAgICAgZm9yIChhdXRvIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKKyAg
ICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBkYXRhLmJ1ZlNpemU7ICsraSkgewogICAgICAg
ICAgICAgaWYgKGRhdGFbaV0gPj0gc3RhdGljX2Nhc3Q8aW50PihtX3RleHR1cmVVbml0cy5zaXpl
KCkpKSB7Ci0gICAgICAgICAgICAgICAgTE9HKFdlYkdMLCAiVGV4dHVyZSB1bml0IHNpemU9JXp1
LCB2WyVkXT0lZC4gTG9jYXRpb24gdHlwZSA9ICUwNFguIiwgbV90ZXh0dXJlVW5pdHMuc2l6ZSgp
LCBpLCBkYXRhW2ldLCBsb2NhdGlvbi0+dHlwZSgpKTsKKyAgICAgICAgICAgICAgICBMT0coV2Vi
R0wsICJUZXh0dXJlIHVuaXQgc2l6ZT0lenUsIHZbJXp1XT0lZC4gTG9jYXRpb24gdHlwZSA9ICUw
NFguIiwgbV90ZXh0dXJlVW5pdHMuc2l6ZSgpLCBpLCBkYXRhW2ldLCBsb2NhdGlvbi0+dHlwZSgp
KTsKICAgICAgICAgICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6
SU5WQUxJRF9WQUxVRSwgInVuaWZvcm0xaXYiLCAiaW52YWxpZCB0ZXh0dXJlIHVuaXQiKTsKICAg
ICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAK
LSAgICBtX2NvbnRleHQtPnVuaWZvcm0xaXYobG9jYXRpb24tPmxvY2F0aW9uKCksIGxlbmd0aCwg
ZGF0YSk7CisgICAgbV9jb250ZXh0LT51bmlmb3JtMWl2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCBk
YXRhKTsKIH0KIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtMml2KGNv
bnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgSW50MzJMaXN0JiYgdikKIHsKLSAg
ICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0
ZXJzKCJ1bmlmb3JtMml2IiwgbG9jYXRpb24sIHYsIDIsIDAsIHYubGVuZ3RoKCkpKQorICAgIGlm
IChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCiAgICAgICAgIHJldHVybjsKLQotICAgIG1fY29u
dGV4dC0+dW5pZm9ybTJpdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgdi5sZW5ndGgoKSAvIDIsIHYu
ZGF0YSgpKTsKKyAgICBhdXRvIGRhdGEgPSB2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKCJ1bmlm
b3JtMml2IiwgbG9jYXRpb24sIHYsIDIpOworICAgIGlmICghZGF0YSkKKyAgICAgICAgcmV0dXJu
OworICAgIG1fY29udGV4dC0+dW5pZm9ybTJpdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgZGF0YS52
YWx1ZSgpKTsKIH0KIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtM2l2
KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgSW50MzJMaXN0JiYgdikKIHsK
LSAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVVuaWZvcm1QYXJh
bWV0ZXJzKCJ1bmlmb3JtM2l2IiwgbG9jYXRpb24sIHYsIDMsIDAsIHYubGVuZ3RoKCkpKQorICAg
IGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCiAgICAgICAgIHJldHVybjsKLQotICAgIG1f
Y29udGV4dC0+dW5pZm9ybTNpdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgdi5sZW5ndGgoKSAvIDMs
IHYuZGF0YSgpKTsKKyAgICBhdXRvIGRhdGEgPSB2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKCJ1
bmlmb3JtM2l2IiwgbG9jYXRpb24sIHYsIDMpOworICAgIGlmICghZGF0YSkKKyAgICAgICAgcmV0
dXJuOworICAgIG1fY29udGV4dC0+dW5pZm9ybTNpdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgZGF0
YS52YWx1ZSgpKTsKIH0KIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3Jt
NGl2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgSW50MzJMaXN0JiYgdikK
IHsKLSAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVVuaWZvcm1Q
YXJhbWV0ZXJzKCJ1bmlmb3JtNGl2IiwgbG9jYXRpb24sIHYsIDQsIDAsIHYubGVuZ3RoKCkpKQor
ICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCiAgICAgICAgIHJldHVybjsKLQotICAg
IG1fY29udGV4dC0+dW5pZm9ybTRpdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgdi5sZW5ndGgoKSAv
IDQsIHYuZGF0YSgpKTsKKyAgICBhdXRvIGRhdGEgPSB2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJz
KCJ1bmlmb3JtNGl2IiwgbG9jYXRpb24sIHYsIDQpOworICAgIGlmICghZGF0YSkKKyAgICAgICAg
cmV0dXJuOworICAgIG1fY29udGV4dC0+dW5pZm9ybTRpdihsb2NhdGlvbi0+bG9jYXRpb24oKSwg
ZGF0YS52YWx1ZSgpKTsKIH0KIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlm
b3JtTWF0cml4MmZ2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgR0NHTGJv
b2xlYW4gdHJhbnNwb3NlLCBGbG9hdDMyTGlzdCYmIHYpCiB7Ci0gICAgaWYgKGlzQ29udGV4dExv
c3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVVbmlmb3JtTWF0cml4UGFyYW1ldGVycygidW5pZm9y
bU1hdHJpeDJmdiIsIGxvY2F0aW9uLCB0cmFuc3Bvc2UsIHYsIDQsIDAsIHYubGVuZ3RoKCkpKQor
ICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCisgICAgICAgIHJldHVybjsKKyAgICBh
dXRvIGRhdGEgPSB2YWxpZGF0ZVVuaWZvcm1NYXRyaXhQYXJhbWV0ZXJzKCJ1bmlmb3JtTWF0cml4
MmZ2IiwgbG9jYXRpb24sIHRyYW5zcG9zZSwgdiwgNCk7CisgICAgaWYgKCFkYXRhKQogICAgICAg
ICByZXR1cm47Ci0gICAgbV9jb250ZXh0LT51bmlmb3JtTWF0cml4MmZ2KGxvY2F0aW9uLT5sb2Nh
dGlvbigpLCB2Lmxlbmd0aCgpIC8gNCwgdHJhbnNwb3NlLCB2LmRhdGEoKSk7CisgICAgbV9jb250
ZXh0LT51bmlmb3JtTWF0cml4MmZ2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCB0cmFuc3Bvc2UsIGRh
dGEudmFsdWUoKSk7CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9y
bU1hdHJpeDNmdihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEdDR0xib29s
ZWFuIHRyYW5zcG9zZSwgRmxvYXQzMkxpc3QmJiB2KQogewotICAgIGlmIChpc0NvbnRleHRMb3N0
T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlVW5pZm9ybU1hdHJpeFBhcmFtZXRlcnMoInVuaWZvcm1N
YXRyaXgzZnYiLCBsb2NhdGlvbiwgdHJhbnNwb3NlLCB2LCA5LCAwLCB2Lmxlbmd0aCgpKSkKKyAg
ICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpKQorICAgICAgICByZXR1cm47CisgICAgYXV0
byBkYXRhID0gdmFsaWRhdGVVbmlmb3JtTWF0cml4UGFyYW1ldGVycygidW5pZm9ybU1hdHJpeDNm
diIsIGxvY2F0aW9uLCB0cmFuc3Bvc2UsIHYsIDkpOworICAgIGlmICghZGF0YSkKICAgICAgICAg
cmV0dXJuOwotICAgIG1fY29udGV4dC0+dW5pZm9ybU1hdHJpeDNmdihsb2NhdGlvbi0+bG9jYXRp
b24oKSwgdi5sZW5ndGgoKSAvIDksIHRyYW5zcG9zZSwgdi5kYXRhKCkpOworICAgIG1fY29udGV4
dC0+dW5pZm9ybU1hdHJpeDNmdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgdHJhbnNwb3NlLCBkYXRh
LnZhbHVlKCkpOwogfQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm1N
YXRyaXg0ZnYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBHQ0dMYm9vbGVh
biB0cmFuc3Bvc2UsIEZsb2F0MzJMaXN0JiYgdikKIHsKLSAgICBpZiAoaXNDb250ZXh0TG9zdE9y
UGVuZGluZygpIHx8ICF2YWxpZGF0ZVVuaWZvcm1NYXRyaXhQYXJhbWV0ZXJzKCJ1bmlmb3JtTWF0
cml4NGZ2IiwgbG9jYXRpb24sIHRyYW5zcG9zZSwgdiwgMTYsIDAsIHYubGVuZ3RoKCkpKQorICAg
IGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCisgICAgICAgIHJldHVybjsKKyAgICBhdXRv
IGRhdGEgPSB2YWxpZGF0ZVVuaWZvcm1NYXRyaXhQYXJhbWV0ZXJzKCJ1bmlmb3JtTWF0cml4NGZ2
IiwgbG9jYXRpb24sIHRyYW5zcG9zZSwgdiwgMTYpOworICAgIGlmICghZGF0YSkKICAgICAgICAg
cmV0dXJuOwotICAgIG1fY29udGV4dC0+dW5pZm9ybU1hdHJpeDRmdihsb2NhdGlvbi0+bG9jYXRp
b24oKSwgdi5sZW5ndGgoKSAvIDE2LCB0cmFuc3Bvc2UsIHYuZGF0YSgpKTsKKyAgICBtX2NvbnRl
eHQtPnVuaWZvcm1NYXRyaXg0ZnYobG9jYXRpb24tPmxvY2F0aW9uKCksIHRyYW5zcG9zZSwgZGF0
YS52YWx1ZSgpKTsKIH0KIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1c2VQcm9n
cmFtKFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSkKQEAgLTcwNDcsNjIgKzcwNzIsNDggQEAgYm9vbCBX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZUNhcGFiaWxpdHkoY29uc3QgY2hhciog
ZnVuY3Rpb25OYW1lLCBHQ0cKICAgICB9CiB9CiAKLWJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZTo6dmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycyhjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUs
IGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgY29uc3QgRmxvYXQzMkxpc3Qm
IHYsIEdDR0xzaXplaSByZXF1aXJlZE1pblNpemUsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVp
bnQgc3JjTGVuZ3RoKQotewotICAgIHJldHVybiB2YWxpZGF0ZVVuaWZvcm1NYXRyaXhQYXJhbWV0
ZXJzKGZ1bmN0aW9uTmFtZSwgbG9jYXRpb24sIGZhbHNlLCB2LmRhdGEoKSwgdi5sZW5ndGgoKSwg
cmVxdWlyZWRNaW5TaXplLCBzcmNPZmZzZXQsIHNyY0xlbmd0aCk7Ci19Ci0KLWJvb2wgV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZTo6dmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycyhjb25zdCBjaGFy
KiBmdW5jdGlvbk5hbWUsIGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgY29u
c3QgSW50MzJMaXN0JiB2LCBHQ0dMc2l6ZWkgcmVxdWlyZWRNaW5TaXplLCBHQ0dMdWludCBzcmNP
ZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKLXsKLSAgICByZXR1cm4gdmFsaWRhdGVVbmlmb3Jt
TWF0cml4UGFyYW1ldGVycyhmdW5jdGlvbk5hbWUsIGxvY2F0aW9uLCBmYWxzZSwgdi5kYXRhKCks
IHYubGVuZ3RoKCksIHJlcXVpcmVkTWluU2l6ZSwgc3JjT2Zmc2V0LCBzcmNMZW5ndGgpOwotfQog
Ci1ib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlVW5pZm9ybVBhcmFtZXRl
cnMoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiog
bG9jYXRpb24sIGNvbnN0IFVpbnQzMkxpc3QmIHYsIEdDR0xzaXplaSByZXF1aXJlZE1pblNpemUs
IEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQotewotICAgIHJldHVybiB2
YWxpZGF0ZVVuaWZvcm1NYXRyaXhQYXJhbWV0ZXJzKGZ1bmN0aW9uTmFtZSwgbG9jYXRpb24sIGZh
bHNlLCB2LmRhdGEoKSwgdi5sZW5ndGgoKSwgcmVxdWlyZWRNaW5TaXplLCBzcmNPZmZzZXQsIHNy
Y0xlbmd0aCk7Ci19Ci0KLWJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmFsaWRhdGVV
bmlmb3JtUGFyYW1ldGVycyhjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIGNvbnN0IFdlYkdMVW5p
Zm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgdm9pZCogdiwgR0NHTHNpemVpIHNpemUsIEdDR0xzaXpl
aSByZXF1aXJlZE1pblNpemUsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3Ro
KQotewotICAgIHJldHVybiB2YWxpZGF0ZVVuaWZvcm1NYXRyaXhQYXJhbWV0ZXJzKGZ1bmN0aW9u
TmFtZSwgbG9jYXRpb24sIGZhbHNlLCB2LCBzaXplLCByZXF1aXJlZE1pblNpemUsIHNyY09mZnNl
dCwgc3JjTGVuZ3RoKTsKLX0KLQotYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxp
ZGF0ZVVuaWZvcm1NYXRyaXhQYXJhbWV0ZXJzKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgY29u
c3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2Us
IGNvbnN0IEZsb2F0MzJMaXN0JiB2LCBHQ0dMc2l6ZWkgcmVxdWlyZWRNaW5TaXplLCBHQ0dMdWlu
dCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKLXsKLSAgICByZXR1cm4gdmFsaWRhdGVV
bmlmb3JtTWF0cml4UGFyYW1ldGVycyhmdW5jdGlvbk5hbWUsIGxvY2F0aW9uLCB0cmFuc3Bvc2Us
IHYuZGF0YSgpLCB2Lmxlbmd0aCgpLCByZXF1aXJlZE1pblNpemUsIHNyY09mZnNldCwgc3JjTGVu
Z3RoKTsKLX0KLQotYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZVVuaWZv
cm1NYXRyaXhQYXJhbWV0ZXJzKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgY29uc3QgV2ViR0xV
bmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IHZv
aWQqIHYsIEdDR0xzaXplaSBzaXplLCBHQ0dMc2l6ZWkgcmVxdWlyZWRNaW5TaXplLCBHQ0dMdWlu
dCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5
cGVuYW1lIFR5cGVkTGlzdFR5cGU+CitPcHRpb25hbDxHQ0dMU3Bhbjxjb25zdCBUPj4gV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZTo6dmFsaWRhdGVVbmlmb3JtTWF0cml4UGFyYW1ldGVycyhjb25z
dCBjaGFyKiBmdW5jdGlvbk5hbWUsIGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlv
biwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBUeXBlZExpc3Q8VHlwZWRMaXN0VHlwZSwg
VD4mIHZhbHVlcywgR0NHTHNpemVpIHJlcXVpcmVkTWluU2l6ZSwgR0NHTHVpbnQgc3JjT2Zmc2V0
LCBHQ0dMdWludCBzcmNMZW5ndGgpCiB7CiAgICAgaWYgKCF2YWxpZGF0ZVVuaWZvcm1Mb2NhdGlv
bihmdW5jdGlvbk5hbWUsIGxvY2F0aW9uKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlm
ICghdikgeworICAgICAgICByZXR1cm4geyB9OworICAgIGlmICghdmFsdWVzLmRhdGEoKSkgewog
ICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9WQUxV
RSwgZnVuY3Rpb25OYW1lLCAibm8gYXJyYXkiKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICByZXR1cm4geyB9OwogICAgIH0KICAgICBpZiAodHJhbnNwb3NlICYmICFpc1dlYkdMMigp
KSB7CiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElE
X1ZBTFVFLCBmdW5jdGlvbk5hbWUsICJ0cmFuc3Bvc2Ugbm90IEZBTFNFIik7Ci0gICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9Ci0gICAgaWYgKHNyY09mZnNl
dCA+PSBzdGF0aWNfY2FzdDxHQ0dMdWludD4oc2l6ZSkpIHsKKyAgICBpZiAoc3JjT2Zmc2V0ID49
IHN0YXRpY19jYXN0PEdDR0x1aW50Pih2YWx1ZXMubGVuZ3RoKCkpKSB7CiAgICAgICAgIHN5bnRo
ZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX1ZBTFVFLCBmdW5jdGlvbk5h
bWUsICJpbnZhbGlkIHNyY09mZnNldCIpOwotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
IHJldHVybiB7IH07CiAgICAgfQotICAgIEdDR0xzaXplaSBhY3R1YWxTaXplID0gc2l6ZSAtIHNy
Y09mZnNldDsKKyAgICBHQ0dMc2l6ZWkgYWN0dWFsU2l6ZSA9IHZhbHVlcy5sZW5ndGgoKSAtIHNy
Y09mZnNldDsKICAgICBpZiAoc3JjTGVuZ3RoID4gMCkgewogICAgICAgICBpZiAoc3JjTGVuZ3Ro
ID4gc3RhdGljX2Nhc3Q8R0NHTHVpbnQ+KGFjdHVhbFNpemUpKSB7CiAgICAgICAgICAgICBzeW50
aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9WQUxVRSwgZnVuY3Rpb25O
YW1lLCAiaW52YWxpZCBzcmNPZmZzZXQgKyBzcmNMZW5ndGgiKTsKLSAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgICAgIHJldHVybiB7IH07CiAgICAgICAgIH0KICAgICAgICAgYWN0
dWFsU2l6ZSA9IHNyY0xlbmd0aDsKICAgICB9CiAgICAgaWYgKGFjdHVhbFNpemUgPCByZXF1aXJl
ZE1pblNpemUgfHwgKGFjdHVhbFNpemUgJSByZXF1aXJlZE1pblNpemUpKSB7CiAgICAgICAgIHN5
bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX1ZBTFVFLCBmdW5jdGlv
bk5hbWUsICJpbnZhbGlkIHNpemUiKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBy
ZXR1cm4geyB9OwogICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gbWFrZUdDR0xT
cGFuKHZhbHVlcy5kYXRhKCkgKyBzcmNPZmZzZXQsIGFjdHVhbFNpemUpOwogfQogCit0ZW1wbGF0
ZQorT3B0aW9uYWw8R0NHTFNwYW48Y29uc3QgR0NHTHVpbnQ+PiBXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlOjp2YWxpZGF0ZVVuaWZvcm1NYXRyaXhQYXJhbWV0ZXJzPEdDR0x1aW50LCBVaW50MzJB
cnJheT4oY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlv
biosIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgVHlwZWRMaXN0PFVpbnQzMkFycmF5LCB1
aW50MzJfdD4mIHZhbHVlcywgR0NHTHNpemVpIHJlcXVpcmVkTWluU2l6ZSwgR0NHTHVpbnQgc3Jj
T2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpOworCit0ZW1wbGF0ZQorT3B0aW9uYWw8R0NHTFNw
YW48Y29uc3QgR0NHTGludD4+IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlVW5p
Zm9ybU1hdHJpeFBhcmFtZXRlcnM8R0NHTGludCwgSW50MzJBcnJheT4oY29uc3QgY2hhciogZnVu
Y3Rpb25OYW1lLCBjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiosIEdDR0xib29sZWFuIHRyYW5z
cG9zZSwgY29uc3QgVHlwZWRMaXN0PEludDMyQXJyYXksIGludDMyX3Q+JiB2YWx1ZXMsIEdDR0xz
aXplaSByZXF1aXJlZE1pblNpemUsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVu
Z3RoKTsKKwordGVtcGxhdGUKK09wdGlvbmFsPEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4+IFdl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlVW5pZm9ybU1hdHJpeFBhcmFtZXRlcnM8
R0NHTGZsb2F0LCBGbG9hdDMyQXJyYXk+KGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgY29uc3Qg
V2ViR0xVbmlmb3JtTG9jYXRpb24qLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IFR5cGVk
TGlzdDxGbG9hdDMyQXJyYXksIGZsb2F0PiYgdmFsdWVzLCBHQ0dMc2l6ZWkgcmVxdWlyZWRNaW5T
aXplLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCk7CisKIFdlYkdMQnVm
ZmVyKiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZUJ1ZmZlckRhdGFQYXJhbWV0
ZXJzKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSB1
c2FnZSkKIHsKICAgICBXZWJHTEJ1ZmZlciogYnVmZmVyID0gdmFsaWRhdGVCdWZmZXJEYXRhVGFy
Z2V0KGZ1bmN0aW9uTmFtZSwgdGFyZ2V0KTsKQEAgLTcyNDYsMTYgKzcyNTcsMTYgQEAgdm9pZCBX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2ZXJ0ZXhBdHRyaWJmdkltcGwoY29uc3QgY2hhciog
ZnVuY3Rpb25OYW1lLCBHQ0cKICAgICB7CiAgICAgICAgIHN3aXRjaCAoZXhwZWN0ZWRTaXplKSB7
CiAgICAgICAgIGNhc2UgMToKLSAgICAgICAgICAgIG1fY29udGV4dC0+dmVydGV4QXR0cmliMWZ2
KGluZGV4LCBkYXRhKTsKKyAgICAgICAgICAgIG1fY29udGV4dC0+dmVydGV4QXR0cmliMWZ2KGlu
ZGV4LCBtYWtlR0NHTFNwYW48MT4oZGF0YSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IGNhc2UgMjoKLSAgICAgICAgICAgIG1fY29udGV4dC0+dmVydGV4QXR0cmliMmZ2KGluZGV4LCBk
YXRhKTsKKyAgICAgICAgICAgIG1fY29udGV4dC0+dmVydGV4QXR0cmliMmZ2KGluZGV4LCBtYWtl
R0NHTFNwYW48Mj4oZGF0YSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgMzoK
LSAgICAgICAgICAgIG1fY29udGV4dC0+dmVydGV4QXR0cmliM2Z2KGluZGV4LCBkYXRhKTsKKyAg
ICAgICAgICAgIG1fY29udGV4dC0+dmVydGV4QXR0cmliM2Z2KGluZGV4LCBtYWtlR0NHTFNwYW48
Mz4oZGF0YSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgNDoKLSAgICAgICAg
ICAgIG1fY29udGV4dC0+dmVydGV4QXR0cmliNGZ2KGluZGV4LCBkYXRhKTsKKyAgICAgICAgICAg
IG1fY29udGV4dC0+dmVydGV4QXR0cmliNGZ2KGluZGV4LCBtYWtlR0NHTFNwYW48ND4oZGF0YSkp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9CkBAIC03MzMwLDcgKzczNDEs
NyBAQCBPcHRpb25hbDxib29sPiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpzaW11bGF0ZVZl
cnRleEF0dHJpYjAoR0NHTHVpbnQgbnVtVmVydAogCiAgICAgaWYgKGJ1ZmZlckRhdGFTaXplID4g
bV92ZXJ0ZXhBdHRyaWIwQnVmZmVyU2l6ZSkgewogICAgICAgICBtX2NvbnRleHQtPm1vdmVFcnJv
cnNUb1N5bnRoZXRpY0Vycm9yTGlzdCgpOwotICAgICAgICBtX2NvbnRleHQtPmJ1ZmZlckRhdGEo
R3JhcGhpY3NDb250ZXh0R0w6OkFSUkFZX0JVRkZFUiwgYnVmZmVyRGF0YVNpemUsIDAsIEdyYXBo
aWNzQ29udGV4dEdMOjpEWU5BTUlDX0RSQVcpOworICAgICAgICBtX2NvbnRleHQtPmJ1ZmZlckRh
dGEoR3JhcGhpY3NDb250ZXh0R0w6OkFSUkFZX0JVRkZFUiwgYnVmZmVyRGF0YVNpemUsIEdyYXBo
aWNzQ29udGV4dEdMOjpEWU5BTUlDX0RSQVcpOwogICAgICAgICBpZiAobV9jb250ZXh0LT5nZXRF
cnJvcigpICE9IEdyYXBoaWNzQ29udGV4dEdMOjpOT19FUlJPUikgewogICAgICAgICAgICAgLy8g
V2Ugd2VyZSB1bmFibGUgdG8gY3JlYXRlIGEgYnVmZmVyLgogICAgICAgICAgICAgbV92ZXJ0ZXhB
dHRyaWIwVXNlZEJlZm9yZSA9IGZhbHNlOwpAQCAtNzM2NSw3ICs3Mzc2LDcgQEAgT3B0aW9uYWw8
Ym9vbD4gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6c2ltdWxhdGVWZXJ0ZXhBdHRyaWIwKEdD
R0x1aW50IG51bVZlcnQKICAgICAgICAgbV92ZXJ0ZXhBdHRyaWIwQnVmZmVyVmFsdWVbMl0gPSBh
dHRyaWJWYWx1ZS5mVmFsdWVbMl07CiAgICAgICAgIG1fdmVydGV4QXR0cmliMEJ1ZmZlclZhbHVl
WzNdID0gYXR0cmliVmFsdWUuZlZhbHVlWzNdOwogICAgICAgICBtX2ZvcmNlQXR0cmliMEJ1ZmZl
clJlZmlsbCA9IGZhbHNlOwotICAgICAgICBtX2NvbnRleHQtPmJ1ZmZlclN1YkRhdGEoR3JhcGhp
Y3NDb250ZXh0R0w6OkFSUkFZX0JVRkZFUiwgMCwgYnVmZmVyRGF0YVNpemUsIGJ1ZmZlckRhdGEu
Z2V0KCkpOworICAgICAgICBtX2NvbnRleHQtPmJ1ZmZlclN1YkRhdGEoR3JhcGhpY3NDb250ZXh0
R0w6OkFSUkFZX0JVRkZFUiwgMCwgbWFrZUdDR0xTcGFuKGJ1ZmZlckRhdGEuZ2V0KCksIGJ1ZmZl
ckRhdGFTaXplKSk7CiAgICAgfQogICAgIG1fY29udGV4dC0+dmVydGV4QXR0cmliUG9pbnRlcigw
LCA0LCBHcmFwaGljc0NvbnRleHRHTDo6RkxPQVQsIDAsIDAsIDApOwogICAgIHJldHVybiB0cnVl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZS5oCmluZGV4IGE3MWQwMzZhYTBkZWE1MmI0NTc5MDlmYmZmZGMzYWRmODBmNTEw
Y2MuLjAwNzgyOGY3ZmQ1NzNlYTUwMDU5NDBlZDU2ZTQzOTc1MTU3NDNlNzcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
LmgKQEAgLTEwMDUsMTIgKzEwMDUsMTMgQEAgcHJvdGVjdGVkOgogCiAgICAgLy8gSGVscGVyIGZ1
bmN0aW9uIHRvIHZhbGlkYXRlIGlucHV0IHBhcmFtZXRlcnMgZm9yIHVuaWZvcm0gZnVuY3Rpb25z
LgogICAgIGJvb2wgdmFsaWRhdGVVbmlmb3JtTG9jYXRpb24oY29uc3QgY2hhciogZnVuY3Rpb25O
YW1lLCBjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiopOwotICAgIGJvb2wgdmFsaWRhdGVVbmlm
b3JtUGFyYW1ldGVycyhjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIGNvbnN0IFdlYkdMVW5pZm9y
bUxvY2F0aW9uKiwgY29uc3QgRmxvYXQzMkxpc3QmLCBHQ0dMc2l6ZWkgcmVxdWlyZWRNaW5TaXpl
LCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCk7Ci0gICAgYm9vbCB2YWxp
ZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgY29uc3QgV2Vi
R0xVbmlmb3JtTG9jYXRpb24qLCBjb25zdCBJbnQzMkxpc3QmLCBHQ0dMc2l6ZWkgcmVxdWlyZWRN
aW5TaXplLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCk7Ci0gICAgYm9v
bCB2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgY29u
c3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qLCBjb25zdCBVaW50MzJMaXN0JiwgR0NHTHNpemVpIHJl
cXVpcmVkTWluU2l6ZSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpOwot
ICAgIGJvb2wgdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycyhjb25zdCBjaGFyKiBmdW5jdGlvbk5h
bWUsIGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiwgdm9pZCosIEdDR0xzaXplaSwgR0NHTHNp
emVpIHJlcXVpcmVkTWluU2l6ZSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5n
dGgpOwotICAgIGJvb2wgdmFsaWRhdGVVbmlmb3JtTWF0cml4UGFyYW1ldGVycyhjb25zdCBjaGFy
KiBmdW5jdGlvbk5hbWUsIGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiwgR0NHTGJvb2xlYW4g
dHJhbnNwb3NlLCBjb25zdCBGbG9hdDMyTGlzdCYsIEdDR0xzaXplaSByZXF1aXJlZE1pblNpemUs
IEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKTsKLSAgICBib29sIHZhbGlk
YXRlVW5pZm9ybU1hdHJpeFBhcmFtZXRlcnMoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBjb25z
dCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiosIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3Qgdm9p
ZCosIEdDR0xzaXplaSwgR0NHTHNpemVpIHJlcXVpcmVkTWluU2l6ZSwgR0NHTHVpbnQgc3JjT2Zm
c2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVu
YW1lIFR5cGVkTGlzdFR5cGU+CisgICAgT3B0aW9uYWw8R0NHTFNwYW48Y29uc3QgVD4+IHZhbGlk
YXRlVW5pZm9ybVBhcmFtZXRlcnMoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBjb25zdCBXZWJH
TFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIGNvbnN0IFR5cGVkTGlzdDxUeXBlZExpc3RUeXBl
LCBUPiYgdmFsdWVzLCBHQ0dMc2l6ZWkgcmVxdWlyZWRNaW5TaXplLCBHQ0dMdWludCBzcmNPZmZz
ZXQgPSAwLCBHQ0dMdWludCBzcmNMZW5ndGggPSAwKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHZh
bGlkYXRlVW5pZm9ybU1hdHJpeFBhcmFtZXRlcnMoZnVuY3Rpb25OYW1lLCBsb2NhdGlvbiwgZmFs
c2UsIHZhbHVlcywgcmVxdWlyZWRNaW5TaXplLCBzcmNPZmZzZXQsIHNyY0xlbmd0aCk7CisgICAg
fQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFR5cGVkTGlzdFR5cGU+CisgICAg
T3B0aW9uYWw8R0NHTFNwYW48Y29uc3QgVD4+IHZhbGlkYXRlVW5pZm9ybU1hdHJpeFBhcmFtZXRl
cnMoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbios
IEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgVHlwZWRMaXN0PFR5cGVkTGlzdFR5cGUsIFQ+
JiwgR0NHTHNpemVpIHJlcXVpcmVkTWluU2l6ZSwgR0NHTHVpbnQgc3JjT2Zmc2V0ID0gMCwgR0NH
THVpbnQgc3JjTGVuZ3RoID0gMCk7CiAKICAgICAvLyBIZWxwZXIgZnVuY3Rpb24gdG8gdmFsaWRh
dGUgcGFyYW1ldGVycyBmb3IgYnVmZmVyRGF0YS4KICAgICAvLyBSZXR1cm4gdGhlIGN1cnJlbnQg
Ym91bmQgYnVmZmVyIHRvIHRhcmdldCwgb3IgMCBpZiBwYXJhbWV0ZXJzIGFyZSBpbnZhbGlkLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRXh0ZW5zaW9uc0dM
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNpb25zR0wuaAppbmRl
eCBiYTg2NWIzMzA4ZTZjOTQ1ODIyMTIyMzc3OTZkNmZkNTc3NDg0N2Y4Li5kMTdiYWRiMWUzMWQ2
ZDU2NDBiODcyOTZjZTU5ZDI4MzMyODM1ZmIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNpb25zR0wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9FeHRlbnNpb25zR0wuaApAQCAtMjk4LDcgKzI5OCw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgcG9wR3JvdXBNYXJrZXJFWFQodm9pZCkgPSAwOwogCiAgICAgLy8g
R0xfQVJCX2RyYXdfYnVmZmVycyAvIEdMX0VYVF9kcmF3X2J1ZmZlcnMKLSAgICB2aXJ0dWFsIHZv
aWQgZHJhd0J1ZmZlcnNFWFQoR0NHTHNpemVpIG4sIGNvbnN0IEdDR0xlbnVtKiBidWZzKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIGRyYXdCdWZmZXJzRVhUKEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVt
PiBidWZzKSA9IDA7CiAKICAgICAvLyBHTF9BTkdMRV9pbnN0YW5jZWRfYXJyYXlzCiAgICAgdmly
dHVhbCB2b2lkIGRyYXdBcnJheXNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJz
dCwgR0NHTHNpemVpIGNvdW50LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSA9IDA7CkBAIC0zMDcsMTcg
KzMwNyw5IEBAIHB1YmxpYzoKIAogICAgIC8vIEdMX0FOR0xFX3JvYnVzdF9jbGllbnRfbWVtb3J5
CiAgICAgdmlydHVhbCB2b2lkIHJlYWRQaXhlbHNSb2J1c3RBTkdMRShHQ0dMaW50IHgsIEdDR0xp
bnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQs
IEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NH
THNpemVpKiBjb2x1bW5zLCBHQ0dMc2l6ZWkqIHJvd3MsIEdDR0x2b2lkKiBwaXhlbHMpID0gMDsK
LSAgICB2aXJ0dWFsIHZvaWQgdGV4SW1hZ2UyRFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGludCBsZXZlbCwgR0NHTGludCBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBH
Q0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51
bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTHZvaWQqIHBpeGVscykgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCB0ZXhQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMZmxvYXQqIHBh
cmFtcykgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB0ZXhQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdD
R0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBH
Q0dMaW50KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdGV4U3ViSW1hZ2UyRFJvYnVz
dEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBH
Q0dMaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVu
dW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTHZv
aWQqIHBpeGVscykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBjb21wcmVzc2VkVGV4SW1hZ2UyRFJv
YnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJu
YWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3Jk
ZXIsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMdm9p
ZCogZGF0YSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRFJv
YnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0
LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NH
TGVudW0gZm9ybWF0LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29u
c3QgR0NHTHZvaWQqIGRhdGEpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgY29tcHJlc3NlZFRleElt
YWdlM0RSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVt
IGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xz
aXplaSBkZXB0aCwgR0NHTGludCBib3JkZXIsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xzaXpl
aSBidWZTaXplLCBjb25zdCBHQ0dMdm9pZCogZGF0YSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBj
b21wcmVzc2VkVGV4U3ViSW1hZ2UzRFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGlu
dCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xpbnQgem9mZnNl
dCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdD
R0xlbnVtIGZvcm1hdCwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNv
bnN0IEdDR0x2b2lkKiBkYXRhKSA9IDA7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgdGV4SW1hZ2UzRFJv
YnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCBpbnRlcm5h
bGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVw
dGgsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xz
aXplaSBidWZTaXplLCBjb25zdCBHQ0dMdm9pZCogcGl4ZWxzKSA9IDA7Ci0gICAgdmlydHVhbCB2
b2lkIHRleFN1YkltYWdlM0RSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2
ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMaW50IHpvZmZzZXQsIEdD
R0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMZW51
bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMdm9p
ZCogcGl4ZWxzKSA9IDA7CisKICAgICB2aXJ0dWFsIHZvaWQgZ2V0UXVlcnlpdlJvYnVzdEFOR0xF
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dM
c2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGdl
dFF1ZXJ5T2JqZWN0dWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0QnVmZmVyUG9pbnRlcnZSb2J1c3RBTkdMRShHQ0dMZW51
bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBs
ZW5ndGgsIEdDR0x2b2lkKiogcGFyYW1zKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaAppbmRleCAwYTcxNTQwY2U4MDIw
ZmQ5ZjU4MTY4NjAzZjY3NjliOTQ0NTIyNDE1Li5jNThiZThhOTdkMjM3ZGFiMmM2MGQ4NmIxOTM4
NGFlOTJmZmJlYjNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHRHTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dEdMLmgKQEAgLTEwNjMsNDkgKzEwNjMsNTUgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCB0ZXhQYXJhbWV0ZXJpKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0g
cG5hbWUsIEdDR0xpbnQgcGFyYW0pID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtMWYo
R0NHTGludCBsb2NhdGlvbiwgR0NHTGZsb2F0IHgpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdW5p
Zm9ybTFmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWksIGNvbnN0IEdDR0xmbG9hdCogdikg
PSAwOworICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtMWZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xT
cGFuPGNvbnN0IEdDR0xmbG9hdD4gdikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtMWko
R0NHTGludCBsb2NhdGlvbiwgR0NHTGludCB4KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHVuaWZv
cm0xaXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpLCBjb25zdCBHQ0dMaW50KiB2KSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIHVuaWZvcm0xaXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48
Y29uc3QgR0NHTGludD4gdikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtMmYoR0NHTGlu
dCBsb2NhdGlvbiwgR0NHTGZsb2F0IHgsIEdDR0xmbG9hdCB5KSA9IDA7Ci0gICAgdmlydHVhbCB2
b2lkIHVuaWZvcm0yZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpLCBjb25zdCBHQ0dMZmxv
YXQqIHYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybTJmdihHQ0dMaW50IGxvY2F0aW9u
LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IHYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdW5p
Zm9ybTJpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xpbnQgeCwgR0NHTGludCB5KSA9IDA7Ci0gICAg
dmlydHVhbCB2b2lkIHVuaWZvcm0yaXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpLCBjb25z
dCBHQ0dMaW50KiB2KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVuaWZvcm0yaXYoR0NHTGludCBs
b2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gdikgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCB1bmlmb3JtM2YoR0NHTGludCBsb2NhdGlvbiwgR0NHTGZsb2F0IHgsIEdDR0xmbG9hdCB5LCBH
Q0dMZmxvYXQgeikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtM2Z2KEdDR0xpbnQgbG9j
YXRpb24sIEdDR0xzaXplaSwgY29uc3QgR0NHTGZsb2F0KiB2KSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIHVuaWZvcm0zZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0
PiB2KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHVuaWZvcm0zaShHQ0dMaW50IGxvY2F0aW9uLCBH
Q0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTGludCB6KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHVu
aWZvcm0zaXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpLCBjb25zdCBHQ0dMaW50KiB2KSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIHVuaWZvcm0zaXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNw
YW48Y29uc3QgR0NHTGludD4gdikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtNGYoR0NH
TGludCBsb2NhdGlvbiwgR0NHTGZsb2F0IHgsIEdDR0xmbG9hdCB5LCBHQ0dMZmxvYXQgeiwgR0NH
TGZsb2F0IHcpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybTRmdihHQ0dMaW50IGxvY2F0
aW9uLCBHQ0dMc2l6ZWksIGNvbnN0IEdDR0xmbG9hdCogdikgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCB1bmlmb3JtNGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4g
dikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtNGkoR0NHTGludCBsb2NhdGlvbiwgR0NH
TGludCB4LCBHQ0dMaW50IHksIEdDR0xpbnQgeiwgR0NHTGludCB3KSA9IDA7Ci0gICAgdmlydHVh
bCB2b2lkIHVuaWZvcm00aXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpLCBjb25zdCBHQ0dM
aW50KiB2KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHVuaWZvcm1NYXRyaXgyZnYoR0NHTGludCBs
b2NhdGlvbiwgR0NHTHNpemVpLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9h
dCogdmFsdWUpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybU1hdHJpeDNmdihHQ0dMaW50
IGxvY2F0aW9uLCBHQ0dMc2l6ZWksIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZs
b2F0KiB2YWx1ZSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtTWF0cml4NGZ2KEdDR0xp
bnQgbG9jYXRpb24sIEdDR0xzaXplaSwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHQ0dM
ZmxvYXQqIHZhbHVlKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVuaWZvcm00aXYoR0NHTGludCBs
b2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gdikgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCB1bmlmb3JtTWF0cml4MmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9z
ZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiB2YWx1ZSkgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCB1bmlmb3JtTWF0cml4M2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9z
ZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiB2YWx1ZSkgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCB1bmlmb3JtTWF0cml4NGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9z
ZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiB2YWx1ZSkgPSAwOwogCiAgICAgdmlydHVhbCB2
b2lkIHVzZVByb2dyYW0oUGxhdGZvcm1HTE9iamVjdCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB2
YWxpZGF0ZVByb2dyYW0oUGxhdGZvcm1HTE9iamVjdCkgPSAwOwogCiAgICAgdmlydHVhbCB2b2lk
IHZlcnRleEF0dHJpYjFmKEdDR0x1aW50IGluZGV4LCBHQ0dMZmxvYXQgeCkgPSAwOwotICAgIHZp
cnR1YWwgdm9pZCB2ZXJ0ZXhBdHRyaWIxZnYoR0NHTHVpbnQgaW5kZXgsIGNvbnN0IEdDR0xmbG9h
dCogdmFsdWVzKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHZlcnRleEF0dHJpYjFmdihHQ0dMdWlu
dCBpbmRleCwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0LCAxPiB2YWx1ZXMpID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgdmVydGV4QXR0cmliMmYoR0NHTHVpbnQgaW5kZXgsIEdDR0xmbG9hdCB4LCBH
Q0dMZmxvYXQgeSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB2ZXJ0ZXhBdHRyaWIyZnYoR0NHTHVp
bnQgaW5kZXgsIGNvbnN0IEdDR0xmbG9hdCogdmFsdWVzKSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IHZlcnRleEF0dHJpYjJmdihHQ0dMdWludCBpbmRleCwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0
LCAyPiB2YWx1ZXMpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdmVydGV4QXR0cmliM2YoR0NHTHVp
bnQgaW5kZXgsIEdDR0xmbG9hdCB4LCBHQ0dMZmxvYXQgeSwgR0NHTGZsb2F0IHopID0gMDsKLSAg
ICB2aXJ0dWFsIHZvaWQgdmVydGV4QXR0cmliM2Z2KEdDR0x1aW50IGluZGV4LCBjb25zdCBHQ0dM
ZmxvYXQqIHZhbHVlcykgPSAwOworICAgIHZpcnR1YWwgdm9pZCB2ZXJ0ZXhBdHRyaWIzZnYoR0NH
THVpbnQgaW5kZXgsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdCwgMz4gdmFsdWVzKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIHZlcnRleEF0dHJpYjRmKEdDR0x1aW50IGluZGV4LCBHQ0dMZmxvYXQg
eCwgR0NHTGZsb2F0IHksIEdDR0xmbG9hdCB6LCBHQ0dMZmxvYXQgdykgPSAwOwotICAgIHZpcnR1
YWwgdm9pZCB2ZXJ0ZXhBdHRyaWI0ZnYoR0NHTHVpbnQgaW5kZXgsIGNvbnN0IEdDR0xmbG9hdCog
dmFsdWVzKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHZlcnRleEF0dHJpYjRmdihHQ0dMdWludCBp
bmRleCwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0LCA0PiB2YWx1ZXMpID0gMDsKIAogICAgIHZp
cnR1YWwgdm9pZCB2ZXJ0ZXhBdHRyaWJQb2ludGVyKEdDR0x1aW50IGluZGV4LCBHQ0dMaW50IHNp
emUsIEdDR0xlbnVtIHR5cGUsIEdDR0xib29sZWFuIG5vcm1hbGl6ZWQsIEdDR0xzaXplaSBzdHJp
ZGUsIEdDR0xpbnRwdHIgb2Zmc2V0KSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgdmlld3BvcnQo
R0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkg
PSAwOwogCiAgICAgdmlydHVhbCB2b2lkIGJ1ZmZlckRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
c2l6ZWlwdHIsIEdDR0xlbnVtIHVzYWdlKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGJ1ZmZlckRh
dGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWlwdHIsIGNvbnN0IEdDR0x2b2lkKiBkYXRhLCBH
Q0dMZW51bSB1c2FnZSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBidWZmZXJTdWJEYXRhKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGludHB0ciBvZmZzZXQsIEdDR0xzaXplaXB0ciwgY29uc3QgR0NHTHZv
aWQqIGRhdGEpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgYnVmZmVyRGF0YShHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRhLCBHQ0dMZW51bSB1c2FnZSkgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBidWZmZXJTdWJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludHB0
ciBvZmZzZXQsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRhKSA9IDA7CiAKICAgICB2aXJ0
dWFsIHZvaWQgcmVhZFBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRo
LCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0x2
b2lkKiBkYXRhKSA9IDA7CiAKLSAgICB2aXJ0dWFsIGJvb2wgdGV4SW1hZ2UyRChHQ0dMZW51bSB0
YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkg
d2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQs
IEdDR0xlbnVtIHR5cGUsIGNvbnN0IEdDR0x2b2lkKiBwaXhlbHMpID0gMDsKLSAgICB2aXJ0dWFs
IHZvaWQgdGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xp
bnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBo
ZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgY29uc3QgR0NHTHZvaWQqIHBp
eGVscykgPSAwOworICAgIHZpcnR1YWwgdm9pZCB0ZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwg
R0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVu
dW0gdHlwZSwgIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBwaXhlbHMpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgdGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xl
bnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdD
R0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIg
b2Zmc2V0KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NH
THNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVt
IHR5cGUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBwaXhlbHMpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgdGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xp
bnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBo
ZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY29tcHJlc3NlZFRleEltYWdlMkQoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdp
ZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTHNpemVpIGltYWdlU2l6
ZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
Y29tcHJlc3NlZFRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dM
ZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBH
Q0dMaW50IGJvcmRlciwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTGludHB0ciBvZmZzZXQpID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgY29tcHJlc3NlZFRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NH
THNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXpl
aSBpbWFnZVNpemUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRhKSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIGNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGlu
dCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0
aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMc2l6ZWkgaW1hZ2VTaXpl
LCBHQ0dMaW50cHRyIG9mZnNldCkgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIGRyYXdBcnJheXNJ
bnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHNpemVpIGNvdW50LCBH
Q0dMc2l6ZWkgcHJpbWNvdW50KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRyYXdFbGVtZW50c0lu
c3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIEdD
R0xpbnRwdHIgb2Zmc2V0LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSA9IDA7CkBAIC0xMTI1LDggKzEx
MzEsOCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgYmxpdEZyYW1lYnVmZmVyKEdDR0xp
bnQgc3JjWDAsIEdDR0xpbnQgc3JjWTAsIEdDR0xpbnQgc3JjWDEsIEdDR0xpbnQgc3JjWTEsIEdD
R0xpbnQgZHN0WDAsIEdDR0xpbnQgZHN0WTAsIEdDR0xpbnQgZHN0WDEsIEdDR0xpbnQgZHN0WTEs
IEdDR0xiaXRmaWVsZCBtYXNrLCBHQ0dMZW51bSBmaWx0ZXIpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgZnJhbWVidWZmZXJUZXh0dXJlTGF5ZXIoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRh
Y2htZW50LCBQbGF0Zm9ybUdMT2JqZWN0IHRleHR1cmUsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQg
bGF5ZXIpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZUZyYW1lYnVmZmVyKEdDR0xl
bnVtIHRhcmdldCwgR0NHTHNpemVpIG51bUF0dGFjaG1lbnRzLCBjb25zdCBHQ0dMZW51bSogYXR0
YWNobWVudHMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZVN1YkZyYW1lYnVmZmVy
KEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpIG51bUF0dGFjaG1lbnRzLCBjb25zdCBHQ0dMZW51
bSogYXR0YWNobWVudHMsIEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdD
R0xzaXplaSBoZWlnaHQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZUZyYW1lYnVm
ZmVyKEdDR0xlbnVtIHRhcmdldCwgR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+IGF0dGFjaG1lbnRz
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGVTdWJGcmFtZWJ1ZmZlcihHQ0dMZW51
bSB0YXJnZXQsIEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVtPiBhdHRhY2htZW50cywgR0NHTGludCB4
LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCByZWFkQnVmZmVyKEdDR0xlbnVtIHNyYykgPSAwOwogCiAgICAgLy8gZ2V0
SW50ZXJuYWxGb3JtYXRQYXJhbWV0ZXIKQEAgLTExMzYsMTEgKzExNDIsMTUgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCB0ZXhTdG9yYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkg
bGV2ZWxzLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6
ZWkgaGVpZ2h0KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHRleFN0b3JhZ2UzRChHQ0dMZW51bSB0
YXJnZXQsIEdDR0xzaXplaSBsZXZlbHMsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6
ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCkgPSAwOwogCi0gICAg
Ly8gdGV4e1N1Yn1JbWFnZTNEIGFyZSBzdXBwb3J0ZWQgb25seSB2aWEgQU5HTEVfcm9idXN0X2Ns
aWVudF9tZW1vcnkuCi0KKyAgICB2aXJ0dWFsIHZvaWQgdGV4SW1hZ2UzRChHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0
aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMaW50IGJvcmRlciwgR0NH
TGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gcGl4
ZWxzKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHRleEltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMaW50IGxldmVsLCBHQ0dMaW50IGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdD
R0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGludCBib3JkZXIsIEdDR0xlbnVt
IGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgdGV4U3ViSW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdD
R0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMaW50IHpvZmZzZXQsIEdDR0xzaXpl
aSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMZW51bSBmb3Jt
YXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBwaXhlbHMpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgdGV4U3ViSW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQg
bGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMaW50IHpvZmZzZXQs
IEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dM
ZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIGNvcHlUZXhTdWJJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBs
ZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xpbnQgem9mZnNldCwg
R0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkg
PSAwOwotCi0gICAgLy8gY29tcHJlc3NlZFRleHtTdWJ9SW1hZ2UzRCBhcmUgc3VwcG9ydGVkIG9u
bHkgdmlhIEFOR0xFX3JvYnVzdF9jbGllbnRfbWVtb3J5LgorICAgIHZpcnR1YWwgdm9pZCBjb21w
cmVzc2VkVGV4SW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVt
IGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xz
aXplaSBkZXB0aCwgR0NHTGludCBib3JkZXIsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xTcGFu
PGNvbnN0IEdDR0x2b2lkPiBkYXRhKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNvbXByZXNzZWRU
ZXhJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJu
YWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRl
cHRoLCBHQ0dMaW50IGJvcmRlciwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTGludHB0ciBvZmZz
ZXQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY29tcHJlc3NlZFRleFN1YkltYWdlM0QoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNl
dCwgR0NHTGludCB6b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdD
R0xzaXplaSBkZXB0aCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dM
U3Bhbjxjb25zdCBHQ0dMdm9pZD4gZGF0YSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjb21wcmVz
c2VkVGV4U3ViSW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQg
eG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMaW50IHpvZmZzZXQsIEdDR0xzaXplaSB3aWR0
aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMZW51bSBmb3JtYXQsIEdD
R0xzaXplaSBpbWFnZVNpemUsIEdDR0xpbnRwdHIgb2Zmc2V0KSA9IDA7CiAKICAgICB2aXJ0dWFs
IEdDR0xpbnQgZ2V0RnJhZ0RhdGFMb2NhdGlvbihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNv
bnN0IFN0cmluZyYgbmFtZSkgPSAwOwogCkBAIC0xMTQ4LDI4ICsxMTU4LDI4IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybTJ1aShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMdWludCB2
MCwgR0NHTHVpbnQgdjEpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybTN1aShHQ0dMaW50
IGxvY2F0aW9uLCBHQ0dMdWludCB2MCwgR0NHTHVpbnQgdjEsIEdDR0x1aW50IHYyKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIHVuaWZvcm00dWkoR0NHTGludCBsb2NhdGlvbiwgR0NHTHVpbnQgdjAs
IEdDR0x1aW50IHYxLCBHQ0dMdWludCB2MiwgR0NHTHVpbnQgdjMpID0gMDsKLSAgICB2aXJ0dWFs
IHZvaWQgdW5pZm9ybTF1aXYoR0NHTGludCBsb2NhdGlvbiwgY29uc3QgR0NHTHVpbnQqIGRhdGEs
IEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKSA9IDA7Ci0gICAgdmlydHVh
bCB2b2lkIHVuaWZvcm0ydWl2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0x1aW50KiBkYXRh
LCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkgPSAwOwotICAgIHZpcnR1
YWwgdm9pZCB1bmlmb3JtM3VpdihHQ0dMaW50IGxvY2F0aW9uLCBjb25zdCBHQ0dMdWludCogZGF0
YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpID0gMDsKLSAgICB2aXJ0
dWFsIHZvaWQgdW5pZm9ybTR1aXYoR0NHTGludCBsb2NhdGlvbiwgY29uc3QgR0NHTHVpbnQqIGRh
dGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKSA9IDA7Ci0gICAgdmly
dHVhbCB2b2lkIHVuaWZvcm1NYXRyaXgyeDNmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVh
biB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBH
Q0dMdWludCBzcmNMZW5ndGgpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybU1hdHJpeDN4
MmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZs
b2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkgPSAwOwot
ICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtTWF0cml4Mng0ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NH
TGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNyY09m
ZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHVuaWZvcm1N
YXRyaXg0eDJmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0
IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgp
ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybU1hdHJpeDN4NGZ2KEdDR0xpbnQgbG9jYXRp
b24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWlu
dCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB1
bmlmb3JtTWF0cml4NHgzZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3Nl
LCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3Jj
TGVuZ3RoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVuaWZvcm0xdWl2KEdDR0xpbnQgbG9jYXRp
b24sIEdDR0xTcGFuPGNvbnN0IEdDR0x1aW50PiBkYXRhKSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IHVuaWZvcm0ydWl2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0x1aW50PiBk
YXRhKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVuaWZvcm0zdWl2KEdDR0xpbnQgbG9jYXRpb24s
IEdDR0xTcGFuPGNvbnN0IEdDR0x1aW50PiBkYXRhKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVu
aWZvcm00dWl2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0x1aW50PiBkYXRh
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVuaWZvcm1NYXRyaXgyeDNmdihHQ0dMaW50IGxvY2F0
aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gZGF0
YSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtTWF0cml4M3gyZnYoR0NHTGludCBsb2Nh
dGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRh
dGEpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybU1hdHJpeDJ4NGZ2KEdDR0xpbnQgbG9j
YXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiBk
YXRhKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVuaWZvcm1NYXRyaXg0eDJmdihHQ0dMaW50IGxv
Y2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4g
ZGF0YSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtTWF0cml4M3g0ZnYoR0NHTGludCBs
b2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+
IGRhdGEpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybU1hdHJpeDR4M2Z2KEdDR0xpbnQg
bG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0
PiBkYXRhKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHZlcnRleEF0dHJpYkk0aShHQ0dMdWludCBp
bmRleCwgR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xpbnQgeiwgR0NHTGludCB3KSA9IDA7Ci0g
ICAgdmlydHVhbCB2b2lkIHZlcnRleEF0dHJpYkk0aXYoR0NHTHVpbnQgaW5kZXgsIGNvbnN0IEdD
R0xpbnQqIHZhbHVlcykgPSAwOworICAgIHZpcnR1YWwgdm9pZCB2ZXJ0ZXhBdHRyaWJJNGl2KEdD
R0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50LCA0PiB2YWx1ZXMpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgdmVydGV4QXR0cmliSTR1aShHQ0dMdWludCBpbmRleCwgR0NHTHVpbnQg
eCwgR0NHTHVpbnQgeSwgR0NHTHVpbnQgeiwgR0NHTHVpbnQgdykgPSAwOwotICAgIHZpcnR1YWwg
dm9pZCB2ZXJ0ZXhBdHRyaWJJNHVpdihHQ0dMdWludCBpbmRleCwgY29uc3QgR0NHTHVpbnQqIHZh
bHVlcykgPSAwOworICAgIHZpcnR1YWwgdm9pZCB2ZXJ0ZXhBdHRyaWJJNHVpdihHQ0dMdWludCBp
bmRleCwgR0NHTFNwYW48Y29uc3QgR0NHTHVpbnQsIDQ+IHZhbHVlcykgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCB2ZXJ0ZXhBdHRyaWJJUG9pbnRlcihHQ0dMdWludCBpbmRleCwgR0NHTGludCBzaXpl
LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgc3RyaWRlLCBHQ0dMaW50cHRyIG9mZnNldCkgPSAw
OwogCiAgICAgdmlydHVhbCB2b2lkIGRyYXdSYW5nZUVsZW1lbnRzKEdDR0xlbnVtIG1vZGUsIEdD
R0x1aW50IHN0YXJ0LCBHQ0dMdWludCBlbmQsIEdDR0xzaXplaSBjb3VudCwgR0NHTGVudW0gdHlw
ZSwgR0NHTGludHB0ciBvZmZzZXQpID0gMDsKIAotICAgIHZpcnR1YWwgdm9pZCBkcmF3QnVmZmVy
cyhHQ0dMc2l6ZWkgbiwgY29uc3QgR0NHTGVudW0qIGJ1ZnMpID0gMDsKLSAgICB2aXJ0dWFsIHZv
aWQgY2xlYXJCdWZmZXJpdihHQ0dMZW51bSBidWZmZXIsIEdDR0xpbnQgZHJhd2J1ZmZlciwgY29u
c3QgR0NHTGludCogdmFsdWVzLCBHQ0dMdWludCBzcmNPZmZzZXQpID0gMDsKLSAgICB2aXJ0dWFs
IHZvaWQgY2xlYXJCdWZmZXJ1aXYoR0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50IGRyYXdidWZmZXIs
IGNvbnN0IEdDR0x1aW50KiB2YWx1ZXMsIEdDR0x1aW50IHNyY09mZnNldCkgPSAwOwotICAgIHZp
cnR1YWwgdm9pZCBjbGVhckJ1ZmZlcmZ2KEdDR0xlbnVtIGJ1ZmZlciwgR0NHTGludCBkcmF3YnVm
ZmVyLCBjb25zdCBHQ0dMZmxvYXQqIHZhbHVlcywgR0NHTHVpbnQgc3JjT2Zmc2V0KSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIGRyYXdCdWZmZXJzKEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVtPiBidWZz
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNsZWFyQnVmZmVyaXYoR0NHTGVudW0gYnVmZmVyLCBH
Q0dMaW50IGRyYXdidWZmZXIsIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+IHZhbHVlcykgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBjbGVhckJ1ZmZlcnVpdihHQ0dMZW51bSBidWZmZXIsIEdDR0xpbnQg
ZHJhd2J1ZmZlciwgR0NHTFNwYW48Y29uc3QgR0NHTHVpbnQ+IHZhbHVlcykgPSAwOworICAgIHZp
cnR1YWwgdm9pZCBjbGVhckJ1ZmZlcmZ2KEdDR0xlbnVtIGJ1ZmZlciwgR0NHTGludCBkcmF3YnVm
ZmVyLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IHZhbHVlcykgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBjbGVhckJ1ZmZlcmZpKEdDR0xlbnVtIGJ1ZmZlciwgR0NHTGludCBkcmF3YnVmZmVyLCBH
Q0dMZmxvYXQgZGVwdGgsIEdDR0xpbnQgc3RlbmNpbCkgPSAwOwogCiAgICAgdmlydHVhbCBQbGF0
Zm9ybUdMT2JqZWN0IGNyZWF0ZVF1ZXJ5KCkgPSAwOwpAQCAtMTIyMSwyMCArMTIzMSw2IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIFN0cmluZyBnZXRBY3RpdmVVbmlmb3JtQmxvY2tOYW1lKFBsYXRm
b3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTHVpbnQgdW5pZm9ybUJsb2NrSW5kZXgpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgdW5pZm9ybUJsb2NrQmluZGluZyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dy
YW0sIEdDR0x1aW50IHVuaWZvcm1CbG9ja0luZGV4LCBHQ0dMdWludCB1bmlmb3JtQmxvY2tCaW5k
aW5nKSA9IDA7CiAKLSAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybTFmdihHQ0dMaW50IGxvY2F0aW9u
LCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3Jj
TGVuZ3RoKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHVuaWZvcm0yZnYoR0NHTGludCBsb2NhdGlv
biwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNy
Y0xlbmd0aCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtM2Z2KEdDR0xpbnQgbG9jYXRp
b24sIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBz
cmNMZW5ndGgpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybTRmdihHQ0dMaW50IGxvY2F0
aW9uLCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQg
c3JjTGVuZ3RoKSA9IDA7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybTFpdihHQ0dMaW50IGxv
Y2F0aW9uLCBjb25zdCBHQ0dMaW50KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50
IHNyY0xlbmd0aCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtMml2KEdDR0xpbnQgbG9j
YXRpb24sIGNvbnN0IEdDR0xpbnQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQg
c3JjTGVuZ3RoKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHVuaWZvcm0zaXYoR0NHTGludCBsb2Nh
dGlvbiwgY29uc3QgR0NHTGludCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBz
cmNMZW5ndGgpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybTRpdihHQ0dMaW50IGxvY2F0
aW9uLCBjb25zdCBHQ0dMaW50KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNy
Y0xlbmd0aCkgPSAwOwotCi0gICAgdmlydHVhbCB2b2lkIHVuaWZvcm1NYXRyaXgyZnYoR0NHTGlu
dCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEs
IEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKSA9IDA7Ci0gICAgdmlydHVh
bCB2b2lkIHVuaWZvcm1NYXRyaXgzZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJh
bnNwb3NlLCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVp
bnQgc3JjTGVuZ3RoKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHVuaWZvcm1NYXRyaXg0ZnYoR0NH
TGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHQ0dMZmxvYXQqIGRh
dGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKSA9IDA7Ci0KICAgICB2
aXJ0dWFsIHZvaWQgZ2V0QWN0aXZlVW5pZm9ybUJsb2NraXYoR0NHTHVpbnQgcHJvZ3JhbSwgR0NH
THVpbnQgdW5pZm9ybUJsb2NrSW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMaW50
PiBwYXJhbXMpID0gMDsKIAogICAgIC8vIE90aGVyIGZ1bmN0aW9ucy4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXNHTC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlc0dMLmgKaW5kZXggZTdjNjli
MjhkY2U0NjU4MjU3NTc3MzMzMjViOGY0NGRmMjcyMDdiOS4uOTg1ZmI3OTQ1MTM0NTA4OTNkODIw
ZDZlOTU1NTNkMmEzZjg5ZDE0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NUeXBlc0dMLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NUeXBlc0dMLmgKQEAgLTY4LDYgKzY4LDEwIEBAIHN0cnVjdCBHQ0dM
U3BhbiB7CiAgICAgR0NHTFNwYW4oVCAoJmFycmF5KVtFeHRlbnRdKQogICAgICAgICA6IGRhdGEo
YXJyYXkpCiAgICAgeyB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4KKyAgICBHQ0dMU3Bhbihj
b25zdCBHQ0dMU3BhbjxVLCBFeHRlbnQ+JiBvdGhlciwgc3RkOjplbmFibGVfaWZfdDxzdGQ6Omlz
X2NvbnZlcnRpYmxlX3Y8VSgqKVtdLCBUKCopW10+LCBudWxscHRyX3Q+ID0gbnVsbHB0cikKKyAg
ICAgICAgOiBkYXRhKG90aGVyLmRhdGEpCisgICAgeyB9CiAgICAgVCYgb3BlcmF0b3JbXShzaXpl
X3QgaSkgeyBSRUxFQVNFX0FTU0VSVChkYXRhICYmIGkgPCBidWZTaXplKTsgcmV0dXJuIGRhdGFb
aV07IH0KICAgICBUJiBvcGVyYXRvciooKSB7IFJFTEVBU0VfQVNTRVJUKGRhdGEgJiYgYnVmU2l6
ZSk7IHJldHVybiAqZGF0YTsgfQogICAgIFQqIGRhdGE7CkBAIC04MCwxMSArODQsMTggQEAgc3Ry
dWN0IEdDR0xTcGFuPFQsIHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCk+IHsKICAg
ICAgICAgOiBkYXRhKGFycmF5KQogICAgICAgICAsIGJ1ZlNpemUoYnVmU2l6ZV8pCiAgICAgeyB9
Ci0gICAgdGVtcGxhdGU8c2l6ZV90IFN6PiBHQ0dMU3BhbihUICgmYXJyYXkpW1N6XSkKKyAgICB0
ZW1wbGF0ZTxzaXplX3QgU3o+CisgICAgR0NHTFNwYW4oVCAoJmFycmF5KVtTel0pCiAgICAgICAg
IDogZGF0YShhcnJheSkKICAgICAgICAgLCBidWZTaXplKFN6KQogICAgIHsgfQotICAgIEdDR0xT
cGFuKFdURjo6VmVjdG9yPFQ+JiBhcnJheSkKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVLCBzaXpl
X3QgVUV4dGVudD4KKyAgICBHQ0dMU3Bhbihjb25zdCBHQ0dMU3BhbjxVLCBVRXh0ZW50PiYgb3Ro
ZXIsIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19jb252ZXJ0aWJsZV92PFUoKilbXSwgVCgqKVtd
PiwgbnVsbHB0cl90PiA9IG51bGxwdHIpCisgICAgICAgIDogZGF0YShvdGhlci5kYXRhKQorICAg
ICAgICAsIGJ1ZlNpemUob3RoZXIuYnVmU2l6ZSkKKyAgICB7IH0KKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBVLCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+CisgICAgR0NHTFNwYW4oV1RGOjpWZWN0b3I8
VSwgaW5saW5lQ2FwYWNpdHk+JiBhcnJheSwgc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2NvbnZl
cnRpYmxlX3Y8VSgqKVtdLCBUKCopW10+LCBudWxscHRyX3Q+ID0gbnVsbHB0cikKICAgICAgICAg
OiBkYXRhKGFycmF5LmRhdGEoKSkKICAgICAgICAgLCBidWZTaXplKGFycmF5LnNpemUoKSkKICAg
ICB7IH0KQEAgLTk0LDYgKzEwNSw1MCBAQCBzdHJ1Y3QgR0NHTFNwYW48VCwgc3RkOjpudW1lcmlj
X2xpbWl0czxzaXplX3Q+OjptYXgoKT4gewogICAgIGNvbnN0IHNpemVfdCBidWZTaXplOwogfTsK
IAordGVtcGxhdGU8Pgorc3RydWN0IEdDR0xTcGFuPEdDR0x2b2lkPiB7CisgICAgR0NHTFNwYW4o
R0NHTHZvaWQqIGFycmF5LCBzaXplX3QgYnVmU2l6ZV8pCisgICAgICAgIDogZGF0YShhcnJheSkK
KyAgICAgICAgLCBidWZTaXplKGJ1ZlNpemVfKQorICAgIHsgfQorICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFUsIHNpemVfdCBTej4KKyAgICBHQ0dMU3BhbihVICgmYXJyYXkpW1N6XSkKKyAgICAgICAg
OiBkYXRhKGFycmF5KQorICAgICAgICAsIGJ1ZlNpemUoU3ogKiBzaXplb2YoVSkpCisgICAgeyB9
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVSwgc2l6ZV90IFVFeHRlbnQ+CisgICAgR0NHTFNwYW4o
Y29uc3QgR0NHTFNwYW48VSwgVUV4dGVudD4mIG90aGVyKQorICAgICAgICA6IGRhdGEob3RoZXIu
ZGF0YSkKKyAgICAgICAgLCBidWZTaXplKG90aGVyLmJ1ZlNpemUgKiBzaXplb2YoVSkpCisgICAg
eyB9CisgICAgR0NHTHZvaWQqIGRhdGE7CisgICAgY29uc3Qgc2l6ZV90IGJ1ZlNpemU7Cit9Owor
Cit0ZW1wbGF0ZTw+CitzdHJ1Y3QgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IHsKKyAgICBHQ0dM
U3Bhbihjb25zdCBHQ0dMdm9pZCogYXJyYXksIHNpemVfdCBidWZTaXplXykKKyAgICAgICAgOiBk
YXRhKGFycmF5KQorICAgICAgICAsIGJ1ZlNpemUoYnVmU2l6ZV8pCisgICAgeyB9CisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgVSwgc2l6ZV90IFN6PgorICAgIEdDR0xTcGFuKFUgKCZhcnJheSlbU3pd
KQorICAgICAgICA6IGRhdGEoYXJyYXkpCisgICAgICAgICwgYnVmU2l6ZShTeiAqIHNpemVvZihV
KSkKKyAgICB7IH0KKyAgICBHQ0dMU3Bhbihjb25zdCBHQ0dMU3BhbjxHQ0dMdm9pZD4mIG90aGVy
KQorICAgICAgICA6IGRhdGEob3RoZXIuZGF0YSkKKyAgICAgICAgLCBidWZTaXplKG90aGVyLmJ1
ZlNpemUpCisgICAgeyB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVSwgc2l6ZV90IFVFeHRlbnQ+
CisgICAgR0NHTFNwYW4oY29uc3QgR0NHTFNwYW48VSwgVUV4dGVudD4mIG90aGVyKQorICAgICAg
ICA6IGRhdGEob3RoZXIuZGF0YSkKKyAgICAgICAgLCBidWZTaXplKG90aGVyLmJ1ZlNpemUgKiBz
aXplb2YoVSkpCisgICAgeyB9CisgICAgY29uc3QgR0NHTHZvaWQqIGRhdGE7CisgICAgY29uc3Qg
c2l6ZV90IGJ1ZlNpemU7Cit9OworCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgTj4KIEdD
R0xTcGFuKFQgKCYpW05dKSAtPiBHQ0dMU3BhbjxULCBOPjsKIApAQCAtMTA1LDMgKzE2MCw5IEBA
IEdDR0xTcGFuPFQ+IG1ha2VHQ0dMU3BhbihUKiBkYXRhLCBzaXplX3QgY291bnQpCiB7CiAgICAg
cmV0dXJuIEdDR0xTcGFuPFQ+IHsgZGF0YSwgY291bnQgfTsKIH0KKwordGVtcGxhdGU8c2l6ZV90
IEV4dGVudCwgdHlwZW5hbWUgVD4KK0dDR0xTcGFuPFQsIEV4dGVudD4gbWFrZUdDR0xTcGFuKFQq
IGRhdGEpCit7CisgICAgcmV0dXJuIEdDR0xTcGFuPFQsIEV4dGVudD4geyBkYXRhIH07Cit9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNp
b25zR0xBTkdMRS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9F
eHRlbnNpb25zR0xBTkdMRS5jcHAKaW5kZXggNGQwMjViOTkzNDIyNzc2YjliNWY0YWFiYzM5YTBj
Nzg5MTk0MGE5OS4uMjgzZGE4MmM2YTYwMmVhNGI1NTdjNjg2Y2ZkODIzZDA4MWM1NWU0YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9u
c0dMQU5HTEUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xl
L0V4dGVuc2lvbnNHTEFOR0xFLmNwcApAQCAtMjI3LDEyICsyMjcsMTIgQEAgYm9vbCBFeHRlbnNp
b25zR0xBTkdMRTo6c3VwcG9ydHNFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBuYW1lKQogICAgIHJl
dHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMobmFtZSkgfHwgbV9yZXF1ZXN0YWJs
ZUV4dGVuc2lvbnMuY29udGFpbnMobmFtZSk7CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6
OmRyYXdCdWZmZXJzRVhUKEdDR0xzaXplaSBuLCBjb25zdCBHQ0dMZW51bSogYnVmcykKK3ZvaWQg
RXh0ZW5zaW9uc0dMQU5HTEU6OmRyYXdCdWZmZXJzRVhUKEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVt
PiBidWZzKQogewogICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgZ2w6OkRyYXdCdWZmZXJzRVhUKG4sIGJ1ZnMpOworICAgIGds
OjpEcmF3QnVmZmVyc0VYVChidWZzLmJ1ZlNpemUsIGJ1ZnMuZGF0YSk7CiB9CiAKIHZvaWQgRXh0
ZW5zaW9uc0dMQU5HTEU6OmRyYXdBcnJheXNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTGlu
dCBmaXJzdCwgR0NHTHNpemVpIGNvdW50LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KQpAQCAtMjg2LDE2
ICsyODYsNiBAQCB2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpyZWFkUGl4ZWxzUm9idXN0QU5HTEUo
aW50IHgsIGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDRwogICAgIGdsOjpSZWFkUGl4ZWxzUm9i
dXN0QU5HTEUoeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBidWZTaXplLCBsZW5n
dGgsIGNvbHVtbnMsIHJvd3MsIHBpeGVscyk7CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6
OnRleEltYWdlMkRSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIGludCBsZXZlbCwgaW50IGlu
dGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIGludCBib3Jk
ZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNv
bnN0IHZvaWQgKnBpeGVscykKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bV9pc0ZvcldlYkdMMikK
LSAgICAgICAgaW50ZXJuYWxmb3JtYXQgPSBhZGp1c3RXZWJHTDFUZXh0dXJlSW50ZXJuYWxGb3Jt
YXQoaW50ZXJuYWxmb3JtYXQsIGZvcm1hdCwgdHlwZSk7Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1h
a2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6VGV4SW1hZ2Uy
RFJvYnVzdEFOR0xFKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0
LCBib3JkZXIsIGZvcm1hdCwgdHlwZSwgYnVmU2l6ZSwgcGl4ZWxzKTsKLX0KLQogdm9pZCBFeHRl
bnNpb25zR0xBTkdMRTo6dGV4UGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQs
IEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGZsb2F0ICpwYXJh
bXMpCiB7CiAgICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQpAQCAtMzEy
LDY2ICszMDIsNiBAQCB2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjp0ZXhQYXJhbWV0ZXJpdlJvYnVz
dEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbQogICAgIGdsOjpUZXhQYXJhbWV0
ZXJpdlJvYnVzdEFOR0xFKHRhcmdldCwgcG5hbWUsIGJ1ZlNpemUsIHBhcmFtcyk7CiB9CiAKLXZv
aWQgRXh0ZW5zaW9uc0dMQU5HTEU6OnRleFN1YkltYWdlMkRSb2J1c3RBTkdMRShHQ0dMZW51bSB0
YXJnZXQsIGludCBsZXZlbCwgaW50IHhvZmZzZXQsIGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lk
dGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NH
THNpemVpIGJ1ZlNpemUsIGNvbnN0IHZvaWQgKnBpeGVscykKLXsKLSAgICBpZiAoIW1fY29udGV4
dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpUZXhT
dWJJbWFnZTJEUm9idXN0QU5HTEUodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgd2lk
dGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBidWZTaXplLCBwaXhlbHMpOwotfQotCi12b2lkIEV4
dGVuc2lvbnNHTEFOR0xFOjpjb21wcmVzc2VkVGV4SW1hZ2UyRFJvYnVzdEFOR0xFKEdDR0xlbnVt
IHRhcmdldCwgaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdp
ZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBpbnQgYm9yZGVyLCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3Qgdm9pZCogZGF0YSkKLXsKLSAgICBpZiAoIW1fY29udGV4
dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpDb21w
cmVzc2VkVGV4SW1hZ2UyRFJvYnVzdEFOR0xFKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0
LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIsIGltYWdlU2l6ZSwgYnVmU2l6ZSwgZGF0YSk7Ci0gICAg
bV9jb250ZXh0LT5tX3N0YXRlLnRleHR1cmVTZWVkQ291bnQuYWRkKG1fY29udGV4dC0+bV9zdGF0
ZS5jdXJyZW50Qm91bmRUZXh0dXJlKCkpOwotCi19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6
OmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBpbnQg
bGV2ZWwsIGludCB4b2Zmc2V0LCBpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6
ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xzaXpl
aSBidWZTaXplLCBjb25zdCB2b2lkKiBkYXRhKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtl
Q29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkNvbXByZXNzZWRU
ZXhTdWJJbWFnZTJEUm9idXN0QU5HTEUodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwg
d2lkdGgsIGhlaWdodCwgZm9ybWF0LCBpbWFnZVNpemUsIGJ1ZlNpemUsIGRhdGEpOwotICAgIG1f
Y29udGV4dC0+bV9zdGF0ZS50ZXh0dXJlU2VlZENvdW50LmFkZChtX2NvbnRleHQtPm1fc3RhdGUu
Y3VycmVudEJvdW5kVGV4dHVyZSgpKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Y29t
cHJlc3NlZFRleEltYWdlM0RSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIGludCBsZXZlbCwg
R0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdo
dCwgR0NHTHNpemVpIGRlcHRoLCBpbnQgYm9yZGVyLCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgY29uc3Qgdm9pZCogZGF0YSkKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+
bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpDb21wcmVz
c2VkVGV4SW1hZ2UzRFJvYnVzdEFOR0xFKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3
aWR0aCwgaGVpZ2h0LCBkZXB0aCwgYm9yZGVyLCBpbWFnZVNpemUsIGJ1ZlNpemUsIGRhdGEpOwot
fQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpjb21wcmVzc2VkVGV4U3ViSW1hZ2UzRFJvYnVz
dEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgaW50IGxldmVsLCBpbnQgeG9mZnNldCwgaW50IHlvZmZz
ZXQsIGludCB6b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xz
aXplaSBkZXB0aCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgY29uc3Qgdm9pZCogZGF0YSkKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFr
ZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpDb21wcmVzc2Vk
VGV4U3ViSW1hZ2UzRFJvYnVzdEFOR0xFKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQs
IHpvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBmb3JtYXQsIGltYWdlU2l6ZSwgYnVmU2l6
ZSwgZGF0YSk7Ci19Ci0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6dGV4SW1hZ2UzRFJvYnVz
dEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgaW50IGxldmVsLCBpbnQgaW50ZXJuYWxmb3JtYXQsIEdD
R0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBpbnQgYm9y
ZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBj
b25zdCB2b2lkICpwaXhlbHMpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3Vy
cmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6VGV4SW1hZ2UzRFJvYnVzdEFOR0xF
KHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgYm9y
ZGVyLCBmb3JtYXQsIHR5cGUsIGJ1ZlNpemUsIHBpeGVscyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9u
c0dMQU5HTEU6OnRleFN1YkltYWdlM0RSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIGludCBs
ZXZlbCwgaW50IHhvZmZzZXQsIGludCB5b2Zmc2V0LCBpbnQgem9mZnNldCwgR0NHTHNpemVpIHdp
ZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xlbnVtIGZvcm1hdCwg
R0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IHZvaWQgKnBpeGVscykKLXsK
LSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIGdsOjpUZXhTdWJJbWFnZTNEUm9idXN0QU5HTEUodGFyZ2V0LCBsZXZlbCwgeG9m
ZnNldCwgeW9mZnNldCwgem9mZnNldCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGZvcm1hdCwgdHlw
ZSwgYnVmU2l6ZSwgcGl4ZWxzKTsKLX0KLQogdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0UXVl
cnlpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKQogewogICAgIGlm
ICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5oCmlu
ZGV4IDU3YmI5M2JjODRjMzM1OTBmYmNmNGIzZjdhMWViNWE1NWM1OTI1NmMuLmE3NzMxZGZkMjBj
NWYwM2EzMzU5MDNmYWE2ZTM4ZmY3MmY0YjIzMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuaApAQCAt
NTIsNyArNTIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBpbnNlcnRFdmVudE1hcmtlckVYVChjb25z
dCBTdHJpbmcmKSBvdmVycmlkZTsKICAgICB2b2lkIHB1c2hHcm91cE1hcmtlckVYVChjb25zdCBT
dHJpbmcmKSBvdmVycmlkZTsKICAgICB2b2lkIHBvcEdyb3VwTWFya2VyRVhUKHZvaWQpIG92ZXJy
aWRlOwotICAgIHZvaWQgZHJhd0J1ZmZlcnNFWFQoR0NHTHNpemVpLCBjb25zdCBHQ0dMZW51bSop
IG92ZXJyaWRlOworICAgIHZvaWQgZHJhd0J1ZmZlcnNFWFQoR0NHTFNwYW48Y29uc3QgR0NHTGVu
dW0+KSBvdmVycmlkZTsKIAogICAgIFN0cmluZyBnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5H
TEUoUGxhdGZvcm1HTE9iamVjdCkgb3ZlcnJpZGU7CiAKQEAgLTc0LDE3ICs3NCw4IEBAIHB1Ymxp
YzoKIAogICAgIC8vIEdMX0FOR0xFX3JvYnVzdF9jbGllbnRfbWVtb3J5CiAgICAgdm9pZCByZWFk
UGl4ZWxzUm9idXN0QU5HTEUoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwg
R0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xzaXplaSAqY29sdW1ucywgR0NHTHNp
emVpICpyb3dzLCB2b2lkICpwaXhlbHMpIG92ZXJyaWRlOwotICAgIHZvaWQgdGV4SW1hZ2UyRFJv
YnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCBpbnRlcm5h
bGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRl
ciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29u
c3Qgdm9pZCAqcGl4ZWxzKSBvdmVycmlkZTsKICAgICB2b2lkIHRleFBhcmFtZXRlcmZ2Um9idXN0
QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUs
IGNvbnN0IEdDR0xmbG9hdCAqcGFyYW1zKSBvdmVycmlkZTsKICAgICB2b2lkIHRleFBhcmFtZXRl
cml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCB0ZXhT
dWJJbWFnZTJEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dM
aW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkg
aGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXpl
LCBjb25zdCB2b2lkICpwaXhlbHMpIG92ZXJyaWRlOwotICAgIHZvaWQgY29tcHJlc3NlZFRleElt
YWdlMkRSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVt
IGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xp
bnQgYm9yZGVyLCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3Qg
R0NHTHZvaWQqIGRhdGEpIG92ZXJyaWRlOwotICAgIHZvaWQgY29tcHJlc3NlZFRleFN1YkltYWdl
MkRSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9m
ZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQs
IEdDR0xlbnVtIGZvcm1hdCwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTHNpemVpIGJ1ZlNpemUs
IGNvbnN0IEdDR0x2b2lkKiBkYXRhKSBvdmVycmlkZTsKLSAgICB2b2lkIGNvbXByZXNzZWRUZXhJ
bWFnZTNEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51
bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dM
c2l6ZWkgZGVwdGgsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTHZvaWQqIGRhdGEpIG92ZXJyaWRlOwotICAgIHZvaWQgY29t
cHJlc3NlZFRleFN1YkltYWdlM0RSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQg
bGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMaW50IHpvZmZzZXQs
IEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dM
ZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xzaXplaSBidWZTaXplLCBjb25z
dCBHQ0dMdm9pZCogZGF0YSkgb3ZlcnJpZGU7Ci0KLSAgICB2b2lkIHRleEltYWdlM0RSb2J1c3RB
TkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgaW50ZXJuYWxmb3Jt
YXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBH
Q0dMaW50IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgY29uc3Qgdm9pZCAqcGl4ZWxzKSBvdmVycmlkZTsKLSAgICB2b2lkIHRleFN1Yklt
YWdlM0RSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQg
eG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMaW50IHpvZmZzZXQsIEdDR0xzaXplaSB3aWR0
aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMZW51bSBmb3JtYXQsIEdD
R0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCB2b2lkICpwaXhlbHMpIG92ZXJy
aWRlOwogICAgIHZvaWQgZ2V0UXVlcnlpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NH
TGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGlu
dCAqcGFyYW1zKSBvdmVycmlkZTsKICAgICB2b2lkIGdldFF1ZXJ5T2JqZWN0dWl2Um9idXN0QU5H
TEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNp
emVpICpsZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMpIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0QnVm
ZmVyUG9pbnRlcnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIHZvaWQgKipwYXJhbXMpIG92ZXJy
aWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUv
R3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcAppbmRleCBmZWIwYmViZWYzMTVm
MGUxMzhiYTk5ZDYyZWI2Y2ZjZWQ1MTkzNjdhLi4xMjdhM2I4ZGJhM2MzZjQ0Y2Q3NjVkZDhmYzcx
MWNkZDg3OGRlOWE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcApAQCAtMzYy
LDE1ICszNjIsNjIgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U2hhZGVyUHJl
Y2lzaW9uRm9ybWF0KEdDR0xlbnVtIHNoYWRlclR5cGUsIEdDR0wKICAgICBnbDo6R2V0U2hhZGVy
UHJlY2lzaW9uRm9ybWF0KHNoYWRlclR5cGUsIHByZWNpc2lvblR5cGUsIHJhbmdlLmRhdGEsIHBy
ZWNpc2lvbik7CiB9CiAKLWJvb2wgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnRleEltYWdlMkQo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwg
R0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTGVu
dW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBjb25zdCB2b2lkKiBwaXhlbHMpCit2b2lkIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjp0ZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBs
ZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVp
IGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwg
R0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IHBpeGVscykKIHsKLSAgICBpZiAod2lkdGggJiYgaGVp
Z2h0ICYmICFwaXhlbHMpIHsKLSAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoSU5WQUxJRF9WQUxV
RSk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIW1faXNGb3JXZWJHTDIpCisgICAg
ICAgIGludGVybmFsZm9ybWF0ID0gc3RhdGljX2Nhc3Q8RXh0ZW5zaW9uc0dMQU5HTEUmPihnZXRF
eHRlbnNpb25zKCkpLmFkanVzdFdlYkdMMVRleHR1cmVJbnRlcm5hbEZvcm1hdChpbnRlcm5hbGZv
cm1hdCwgZm9ybWF0LCB0eXBlKTsKKyAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQorICAg
ICAgICByZXR1cm47CisgICAgZ2w6OlRleEltYWdlMkRSb2J1c3RBTkdMRSh0YXJnZXQsIGxldmVs
LCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgYm9yZGVyLCBmb3JtYXQsIHR5cGUsIHBp
eGVscy5idWZTaXplLCBwaXhlbHMuZGF0YSk7CisgICAgbV9zdGF0ZS50ZXh0dXJlU2VlZENvdW50
LmFkZChtX3N0YXRlLmN1cnJlbnRCb3VuZFRleHR1cmUoKSk7CiAgICAgfQogCi0gICAgdGV4SW1h
Z2UyRERpcmVjdCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwg
Ym9yZGVyLCBmb3JtYXQsIHR5cGUsIHBpeGVscyk7Ci0gICAgcmV0dXJuIHRydWU7Cit2b2lkIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjp0ZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGlu
dCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNp
emVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlw
ZSwgR0NHTGludHB0ciBvZmZzZXQpCit7CisgICAgdGV4SW1hZ2UyRCh0YXJnZXQsIGxldmVsLCBp
bnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgYm9yZGVyLCBmb3JtYXQsIHR5cGUsIG1ha2VH
Q0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0x2b2lkKj4ob2Zmc2V0KSwgMCkpOwor
fQorCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp0ZXhTdWJJbWFnZTJEKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2ZmLCBHQ0dMaW50IHlvZmYsIEdDR0xz
aXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0
eXBlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gcGl4ZWxzKQoreworICAgIGlmICghbWFrZUNv
bnRleHRDdXJyZW50KCkpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIEZJWE1FOiB3ZSB3aWxs
IG5lZWQgdG8gZGVhbCB3aXRoIFBpeGVsU3RvcmUgcGFyYW1zIHdoZW4gZGVhbGluZyB3aXRoIGlt
YWdlIGJ1ZmZlcnMgdGhhdCBkaWZmZXIgZnJvbSB0aGUgc3ViaW1hZ2Ugc2l6ZS4KKyAgICBnbDo6
VGV4U3ViSW1hZ2UyRFJvYnVzdEFOR0xFKHRhcmdldCwgbGV2ZWwsIHhvZmYsIHlvZmYsIHdpZHRo
LCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgcGl4ZWxzLmJ1ZlNpemUsIHBpeGVscy5kYXRhKTsKKyAg
ICBtX3N0YXRlLnRleHR1cmVTZWVkQ291bnQuYWRkKG1fc3RhdGUuY3VycmVudEJvdW5kVGV4dHVy
ZSgpKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dGV4U3ViSW1hZ2UyRChH
Q0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZiwgR0NHTGludCB5b2Zm
LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NH
TGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpCit7CisgICAgdGV4U3ViSW1hZ2UyRCh0YXJn
ZXQsIGxldmVsLCB4b2ZmLCB5b2ZmLCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIG1ha2VH
Q0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0x2b2lkKj4ob2Zmc2V0KSwgMCkpOwor
fQorCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjb21wcmVzc2VkVGV4SW1hZ2UyRChH
Q0dMZW51bSB0YXJnZXQsIGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xz
aXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgaW50IGJvcmRlciwgR0NHTHNpemVpIGltYWdl
U2l6ZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEpCit7CisgICAgaWYgKCFtYWtlQ29u
dGV4dEN1cnJlbnQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgZ2w6OkNvbXByZXNzZWRUZXhJ
bWFnZTJEUm9idXN0QU5HTEUodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBo
ZWlnaHQsIGJvcmRlciwgaW1hZ2VTaXplLCBkYXRhLmJ1ZlNpemUsIGRhdGEuZGF0YSk7CisgICAg
bV9zdGF0ZS50ZXh0dXJlU2VlZENvdW50LmFkZChtX3N0YXRlLmN1cnJlbnRCb3VuZFRleHR1cmUo
KSk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNvbXByZXNzZWRUZXhJbWFn
ZTJEKEdDR0xlbnVtIHRhcmdldCwgaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwg
R0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBpbnQgYm9yZGVyLCBHQ0dMc2l6ZWkg
aW1hZ2VTaXplLCBHQ0dMaW50cHRyIG9mZnNldCkKK3sKKyAgICBjb21wcmVzc2VkVGV4SW1hZ2Uy
RCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgYm9yZGVyLCBp
bWFnZVNpemUsIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0x2b2lkKj4o
b2Zmc2V0KSwgMCkpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjb21wcmVz
c2VkVGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIGludCBsZXZlbCwgaW50IHhvZmZzZXQs
IGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVt
IGZvcm1hdCwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IGRh
dGEpCit7CisgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgZ2w6OkNvbXByZXNzZWRUZXhTdWJJbWFnZTJEUm9idXN0QU5HTEUodGFyZ2V0LCBsZXZl
bCwgeG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCBpbWFnZVNpemUsIGRh
dGEuYnVmU2l6ZSwgZGF0YS5kYXRhKTsKKyAgICBtX3N0YXRlLnRleHR1cmVTZWVkQ291bnQuYWRk
KG1fc3RhdGUuY3VycmVudEJvdW5kVGV4dHVyZSgpKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6Y29tcHJlc3NlZFRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBpbnQg
bGV2ZWwsIGludCB4b2Zmc2V0LCBpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6
ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xpbnRw
dHIgb2Zmc2V0KQoreworICAgIGNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKHRhcmdldCwgbGV2ZWws
IHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgaW1hZ2VTaXplLCBtYWtl
R0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMdm9pZCo+KG9mZnNldCksIDApKTsK
IH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6ZGVwdGhSYW5nZShHQ0dMY2xhbXBm
IHpOZWFyLCBHQ0dMY2xhbXBmIHpGYXIpCkBAIC04MzUsMjAgKzg4MiwyMCBAQCB2b2lkIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpidWZmZXJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVp
cHRyIHNpemUsIEdDRwogICAgIGdsOjpCdWZmZXJEYXRhKHRhcmdldCwgc2l6ZSwgMCwgdXNhZ2Up
OwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpidWZmZXJEYXRhKEdDR0xlbnVt
IHRhcmdldCwgR0NHTHNpemVpcHRyIHNpemUsIGNvbnN0IHZvaWQqIGRhdGEsIEdDR0xlbnVtIHVz
YWdlKQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6YnVmZmVyRGF0YShHQ0dMZW51bSB0
YXJnZXQsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRhLCBHQ0dMZW51bSB1c2FnZSkKIHsK
ICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBn
bDo6QnVmZmVyRGF0YSh0YXJnZXQsIHNpemUsIGRhdGEsIHVzYWdlKTsKKyAgICBnbDo6QnVmZmVy
RGF0YSh0YXJnZXQsIGRhdGEuYnVmU2l6ZSwgZGF0YS5kYXRhLCB1c2FnZSk7CiB9CiAKLXZvaWQg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmJ1ZmZlclN1YkRhdGEoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMaW50cHRyIG9mZnNldCwgR0NHTHNpemVpcHRyIHNpemUsIGNvbnN0IHZvaWQqIGRhdGEpCit2
b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpidWZmZXJTdWJEYXRhKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTGludHB0ciBvZmZzZXQsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRhKQogewog
ICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGds
OjpCdWZmZXJTdWJEYXRhKHRhcmdldCwgb2Zmc2V0LCBzaXplLCBkYXRhKTsKKyAgICBnbDo6QnVm
ZmVyU3ViRGF0YSh0YXJnZXQsIG9mZnNldCwgZGF0YS5idWZTaXplLCBkYXRhLmRhdGEpOwogfQog
CiB2b2lkKiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6bWFwQnVmZmVyUmFuZ2UoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMaW50cHRyIG9mZnNldCwgR0NHTHNpemVpcHRyIGxlbmd0aCwgR0NHTGJpdGZp
ZWxkIGFjY2VzcykKQEAgLTkwOSw2ICs5NTYsNTggQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6dGV4U3RvcmFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpIGxldmVscywgR0MK
ICAgICBtX3N0YXRlLnRleHR1cmVTZWVkQ291bnQuYWRkKG1fc3RhdGUuY3VycmVudEJvdW5kVGV4
dHVyZSgpKTsKIH0KIAordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dGV4SW1hZ2UzRChH
Q0dMZW51bSB0YXJnZXQsIGludCBsZXZlbCwgaW50IGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkg
d2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgaW50IGJvcmRlciwgR0NH
TGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gcGl4
ZWxzKQoreworICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCisgICAgICAgIHJldHVybjsK
KworICAgIGdsOjpUZXhJbWFnZTNEUm9idXN0QU5HTEUodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxm
b3JtYXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBib3JkZXIsIGZvcm1hdCwgdHlwZSwgcGl4ZWxz
LmJ1ZlNpemUsIHBpeGVscy5kYXRhKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6dGV4SW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIGludCBsZXZlbCwgaW50IGludGVybmFsZm9y
bWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwg
aW50IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9m
ZnNldCkKK3sKKyAgICB0ZXhJbWFnZTNEKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3
aWR0aCwgaGVpZ2h0LCBkZXB0aCwgYm9yZGVyLCBmb3JtYXQsIHR5cGUsIG1ha2VHQ0dMU3Bhbihy
ZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0x2b2lkKj4ob2Zmc2V0KSwgMCkpOworfQorCit2b2lk
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp0ZXhTdWJJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwg
aW50IGxldmVsLCBpbnQgeG9mZnNldCwgaW50IHlvZmZzZXQsIGludCB6b2Zmc2V0LCBHQ0dMc2l6
ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGVudW0gZm9y
bWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gcGl4ZWxzKQorewor
ICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGds
OjpUZXhTdWJJbWFnZTNEUm9idXN0QU5HTEUodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNl
dCwgem9mZnNldCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGZvcm1hdCwgdHlwZSwgcGl4ZWxzLmJ1
ZlNpemUsIHBpeGVscy5kYXRhKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
dGV4U3ViSW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIGludCBsZXZlbCwgaW50IHhvZmZzZXQsIGlu
dCB5b2Zmc2V0LCBpbnQgem9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0
LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTGlu
dHB0ciBvZmZzZXQpCit7CisgICAgdGV4U3ViSW1hZ2UzRCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0
LCB5b2Zmc2V0LCB6b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgZm9ybWF0LCB0eXBlLCBt
YWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMdm9pZCo+KG9mZnNldCksIDAp
KTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y29tcHJlc3NlZFRleEltYWdl
M0QoR0NHTGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBH
Q0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgaW50IGJv
cmRlciwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEp
Cit7CisgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgZ2w6OkNvbXByZXNzZWRUZXhJbWFnZTNEUm9idXN0QU5HTEUodGFyZ2V0LCBsZXZlbCwgaW50
ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBib3JkZXIsIGltYWdlU2l6ZSwgZGF0
YS5idWZTaXplLCBkYXRhLmRhdGEpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
Ojpjb21wcmVzc2VkVGV4SW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIGludCBsZXZlbCwgR0NHTGVu
dW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NH
THNpemVpIGRlcHRoLCBpbnQgYm9yZGVyLCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMaW50cHRy
IG9mZnNldCkKK3sKKyAgICBjb21wcmVzc2VkVGV4SW1hZ2UzRCh0YXJnZXQsIGxldmVsLCBpbnRl
cm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGJvcmRlciwgaW1hZ2VTaXplLCBtYWtl
R0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMdm9pZCo+KG9mZnNldCksIDApKTsK
K30KKwordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y29tcHJlc3NlZFRleFN1YkltYWdl
M0QoR0NHTGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWwsIGludCB4b2Zmc2V0LCBpbnQgeW9mZnNldCwg
aW50IHpvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVp
IGRlcHRoLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xTcGFuPGNv
bnN0IEdDR0x2b2lkPiBkYXRhKQoreworICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCisg
ICAgICAgIHJldHVybjsKKworICAgIGdsOjpDb21wcmVzc2VkVGV4U3ViSW1hZ2UzRFJvYnVzdEFO
R0xFKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHpvZmZzZXQsIHdpZHRoLCBoZWln
aHQsIGRlcHRoLCBmb3JtYXQsIGltYWdlU2l6ZSwgZGF0YS5idWZTaXplLCBkYXRhLmRhdGEpOwor
fQorCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjb21wcmVzc2VkVGV4U3ViSW1hZ2Uz
RChHQ0dMZW51bSB0YXJnZXQsIGludCBsZXZlbCwgaW50IHhvZmZzZXQsIGludCB5b2Zmc2V0LCBp
bnQgem9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkg
ZGVwdGgsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTGludHB0ciBv
ZmZzZXQpCit7CisgICAgY29tcHJlc3NlZFRleFN1YkltYWdlM0QodGFyZ2V0LCBsZXZlbCwgeG9m
ZnNldCwgeW9mZnNldCwgem9mZnNldCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGZvcm1hdCwgaW1h
Z2VTaXplLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMdm9pZCo+KG9m
ZnNldCksIDApKTsKK30KKwogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0QWN0aXZl
VW5pZm9ybXMoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBjb25zdCBWZWN0b3I8R0NHTHVpbnQ+
JiB1bmlmb3JtSW5kaWNlcywgR0NHTGVudW0gcG5hbWUsIFZlY3RvcjxHQ0dMaW50PiYgcGFyYW1z
KQogewogICAgIEFTU0VSVChwcm9ncmFtKTsKQEAgLTE1MDEsMTIgKzE2MDAsMTIgQEAgdm9pZCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTFmKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xm
bG9hdCB2MCkKICAgICBnbDo6VW5pZm9ybTFmKGxvY2F0aW9uLCB2MCk7CiB9CiAKLXZvaWQgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0xZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTHNp
emVpIHNpemUsIGNvbnN0IEdDR0xmbG9hdCogYXJyYXkpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjp1bmlmb3JtMWZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xm
bG9hdD4gYXJyYXkpCiB7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgZ2w6OlVuaWZvcm0xZnYobG9jYXRpb24sIHNpemUsIGFycmF5KTsKKyAg
ICBnbDo6VW5pZm9ybTFmdihsb2NhdGlvbiwgYXJyYXkuYnVmU2l6ZSwgYXJyYXkuZGF0YSk7CiB9
CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0yZihHQ0dMaW50IGxvY2F0
aW9uLCBHQ0dMZmxvYXQgdjAsIEdDR0xmbG9hdCB2MSkKQEAgLTE1MTcsMTMgKzE2MTYsMTMgQEAg
dm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTJmKEdDR0xpbnQgbG9jYXRpb24s
IEdDR0xmbG9hdCB2MCwgR0NHTGZsb2EKICAgICBnbDo6VW5pZm9ybTJmKGxvY2F0aW9uLCB2MCwg
djEpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMmZ2KEdDR0xp
bnQgbG9jYXRpb24sIEdDR0xzaXplaSBzaXplLCBjb25zdCBHQ0dMZmxvYXQqIGFycmF5KQordm9p
ZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTJmdihHQ0dMaW50IGxvY2F0aW9uLCBH
Q0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGFycmF5KQogewotICAgIC8vIEZJWE1FOiBsZW5ndGgg
bmVlZHMgdG8gYmUgYSBtdWx0aXBsZSBvZiAyLgorICAgIEFTU0VSVCghKGFycmF5LmJ1ZlNpemUg
JSAyKSk7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgZ2w6OlVuaWZvcm0yZnYobG9jYXRpb24sIHNpemUsIGFycmF5KTsKKyAgICBnbDo6VW5p
Zm9ybTJmdihsb2NhdGlvbiwgYXJyYXkuYnVmU2l6ZSAvIDIsIGFycmF5LmRhdGEpOwogfQogCiB2
b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtM2YoR0NHTGludCBsb2NhdGlvbiwg
R0NHTGZsb2F0IHYwLCBHQ0dMZmxvYXQgdjEsIEdDR0xmbG9hdCB2MikKQEAgLTE1MzQsMTMgKzE2
MzMsMTMgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTNmKEdDR0xpbnQg
bG9jYXRpb24sIEdDR0xmbG9hdCB2MCwgR0NHTGZsb2EKICAgICBnbDo6VW5pZm9ybTNmKGxvY2F0
aW9uLCB2MCwgdjEsIHYyKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5p
Zm9ybTNmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgc2l6ZSwgY29uc3QgR0NHTGZsb2F0
KiBhcnJheSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0zZnYoR0NHTGlu
dCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiBhcnJheSkKIHsKLSAgICAvLyBG
SVhNRTogbGVuZ3RoIG5lZWRzIHRvIGJlIGEgbXVsdGlwbGUgb2YgMy4KKyAgICBBU1NFUlQoIShh
cnJheS5idWZTaXplICUgMykpOwogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIGdsOjpVbmlmb3JtM2Z2KGxvY2F0aW9uLCBzaXplLCBhcnJheSk7
CisgICAgZ2w6OlVuaWZvcm0zZnYobG9jYXRpb24sIGFycmF5LmJ1ZlNpemUgLyAzLCBhcnJheS5k
YXRhKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTRmKEdDR0xp
bnQgbG9jYXRpb24sIEdDR0xmbG9hdCB2MCwgR0NHTGZsb2F0IHYxLCBHQ0dMZmxvYXQgdjIsIEdD
R0xmbG9hdCB2MykKQEAgLTE1NTEsMTMgKzE2NTAsMTMgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6dW5pZm9ybTRmKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xmbG9hdCB2MCwgR0NHTGZs
b2EKICAgICBnbDo6VW5pZm9ybTRmKGxvY2F0aW9uLCB2MCwgdjEsIHYyLCB2Myk7CiB9CiAKLXZv
aWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm00ZnYoR0NHTGludCBsb2NhdGlvbiwg
R0NHTHNpemVpIHNpemUsIGNvbnN0IEdDR0xmbG9hdCogYXJyYXkpCit2b2lkIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjp1bmlmb3JtNGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0
IEdDR0xmbG9hdD4gYXJyYXkpCiB7Ci0gICAgLy8gRklYTUU6IGxlbmd0aCBuZWVkcyB0byBiZSBh
IG11bHRpcGxlIG9mIDQuCisgICAgQVNTRVJUKCEoYXJyYXkuYnVmU2l6ZSAlIDQpKTsKICAgICBp
ZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBnbDo6VW5p
Zm9ybTRmdihsb2NhdGlvbiwgc2l6ZSwgYXJyYXkpOworICAgIGdsOjpVbmlmb3JtNGZ2KGxvY2F0
aW9uLCBhcnJheS5idWZTaXplIC8gNCwgYXJyYXkuZGF0YSk7CiB9CiAKIHZvaWQgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OnVuaWZvcm0xaShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMaW50IHYwKQpA
QCAtMTU2OCwxMiArMTY2NywxMiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlm
b3JtMWkoR0NHTGludCBsb2NhdGlvbiwgR0NHTGludCB2MCkKICAgICBnbDo6VW5pZm9ybTFpKGxv
Y2F0aW9uLCB2MCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0x
aXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIHNpemUsIGNvbnN0IEdDR0xpbnQqIGFycmF5
KQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTFpdihHQ0dMaW50IGxvY2F0
aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50PiBhcnJheSkKIHsKICAgICBpZiAoIW1ha2VDb250
ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBnbDo6VW5pZm9ybTFpdihsb2Nh
dGlvbiwgc2l6ZSwgYXJyYXkpOworICAgIGdsOjpVbmlmb3JtMWl2KGxvY2F0aW9uLCBhcnJheS5i
dWZTaXplLCBhcnJheS5kYXRhKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
dW5pZm9ybTJpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xpbnQgdjAsIEdDR0xpbnQgdjEpCkBAIC0x
NTg0LDEzICsxNjgzLDEzIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0y
aShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMaW50IHYwLCBHQ0dMaW50IHYxCiAgICAgZ2w6OlVuaWZv
cm0yaShsb2NhdGlvbiwgdjAsIHYxKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6dW5pZm9ybTJpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgc2l6ZSwgY29uc3QgR0NH
TGludCogYXJyYXkpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMml2KEdD
R0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+IGFycmF5KQogewotICAgIC8v
IEZJWE1FOiBsZW5ndGggbmVlZHMgdG8gYmUgYSBtdWx0aXBsZSBvZiAyLgorICAgIEFTU0VSVCgh
KGFycmF5LmJ1ZlNpemUgJSAyKSk7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgZ2w6OlVuaWZvcm0yaXYobG9jYXRpb24sIHNpemUsIGFycmF5
KTsKKyAgICBnbDo6VW5pZm9ybTJpdihsb2NhdGlvbiwgYXJyYXkuYnVmU2l6ZSAvIDIsIGFycmF5
LmRhdGEpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtM2koR0NH
TGludCBsb2NhdGlvbiwgR0NHTGludCB2MCwgR0NHTGludCB2MSwgR0NHTGludCB2MikKQEAgLTE2
MDEsMTMgKzE3MDAsMTMgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTNp
KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xpbnQgdjAsIEdDR0xpbnQgdjEKICAgICBnbDo6VW5pZm9y
bTNpKGxvY2F0aW9uLCB2MCwgdjEsIHYyKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6dW5pZm9ybTNpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgc2l6ZSwgY29uc3Qg
R0NHTGludCogYXJyYXkpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtM2l2
KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+IGFycmF5KQogewotICAg
IC8vIEZJWE1FOiBsZW5ndGggbmVlZHMgdG8gYmUgYSBtdWx0aXBsZSBvZiAzLgorICAgIEFTU0VS
VCghKGFycmF5LmJ1ZlNpemUgJSAzKSk7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgZ2w6OlVuaWZvcm0zaXYobG9jYXRpb24sIHNpemUsIGFy
cmF5KTsKKyAgICBnbDo6VW5pZm9ybTNpdihsb2NhdGlvbiwgYXJyYXkuYnVmU2l6ZSAvIDMsIGFy
cmF5LmRhdGEpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtNGko
R0NHTGludCBsb2NhdGlvbiwgR0NHTGludCB2MCwgR0NHTGludCB2MSwgR0NHTGludCB2MiwgR0NH
TGludCB2MykKQEAgLTE2MTgsNDAgKzE3MTcsMzkgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6dW5pZm9ybTRpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xpbnQgdjAsIEdDR0xpbnQgdjEK
ICAgICBnbDo6VW5pZm9ybTRpKGxvY2F0aW9uLCB2MCwgdjEsIHYyLCB2Myk7CiB9CiAKLXZvaWQg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm00aXYoR0NHTGludCBsb2NhdGlvbiwgR0NH
THNpemVpIHNpemUsIGNvbnN0IEdDR0xpbnQqIGFycmF5KQordm9pZCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6dW5pZm9ybTRpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dM
aW50PiBhcnJheSkKIHsKLSAgICAvLyBGSVhNRTogbGVuZ3RoIG5lZWRzIHRvIGJlIGEgbXVsdGlw
bGUgb2YgNC4KKyAgICBBU1NFUlQoIShhcnJheS5idWZTaXplICUgNCkpOwogICAgIGlmICghbWFr
ZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGdsOjpVbmlmb3JtNGl2
KGxvY2F0aW9uLCBzaXplLCBhcnJheSk7CisgICAgZ2w6OlVuaWZvcm00aXYobG9jYXRpb24sIGFy
cmF5LmJ1ZlNpemUgLyA0LCBhcnJheS5kYXRhKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6dW5pZm9ybU1hdHJpeDJmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgc2l6
ZSwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHQ0dMZmxvYXQqIGFycmF5KQordm9pZCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybU1hdHJpeDJmdihHQ0dMaW50IGxvY2F0aW9u
LCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gYXJyYXkp
CiB7Ci0gICAgLy8gRklYTUU6IGxlbmd0aCBuZWVkcyB0byBiZSBhIG11bHRpcGxlIG9mIDQuCiAg
ICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZ2w6
OlVuaWZvcm1NYXRyaXgyZnYobG9jYXRpb24sIHNpemUsIHRyYW5zcG9zZSwgYXJyYXkpOworICAg
IGdsOjpVbmlmb3JtTWF0cml4MmZ2KGxvY2F0aW9uLCBhcnJheS5idWZTaXplIC8gNCwgdHJhbnNw
b3NlLCBhcnJheS5kYXRhKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5p
Zm9ybU1hdHJpeDNmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgc2l6ZSwgR0NHTGJvb2xl
YW4gdHJhbnNwb3NlLCBjb25zdCBHQ0dMZmxvYXQqIGFycmF5KQordm9pZCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6dW5pZm9ybU1hdHJpeDNmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVh
biB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gYXJyYXkpCiB7Ci0gICAgLy8g
RklYTUU6IGxlbmd0aCBuZWVkcyB0byBiZSBhIG11bHRpcGxlIG9mIDkuCisgICAgQVNTRVJUKCEo
YXJyYXkuYnVmU2l6ZSAlIDkpKTsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBnbDo6VW5pZm9ybU1hdHJpeDNmdihsb2NhdGlvbiwgc2l6ZSwg
dHJhbnNwb3NlLCBhcnJheSk7CisgICAgZ2w6OlVuaWZvcm1NYXRyaXgzZnYobG9jYXRpb24sIGFy
cmF5LmJ1ZlNpemUgLyA5LCB0cmFuc3Bvc2UsIGFycmF5LmRhdGEpOwogfQogCi12b2lkIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4NGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdD
R0xzaXplaSBzaXplLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogYXJy
YXkpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4NGZ2KEdDR0xp
bnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZs
b2F0PiBhcnJheSkKIHsKLSAgICAvLyBGSVhNRTogbGVuZ3RoIG5lZWRzIHRvIGJlIGEgbXVsdGlw
bGUgb2YgMTYuCisgICAgQVNTRVJUKCEoYXJyYXkuYnVmU2l6ZSAlIDE2KSk7CiAgICAgaWYgKCFt
YWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZ2w6OlVuaWZvcm1N
YXRyaXg0ZnYobG9jYXRpb24sIHNpemUsIHRyYW5zcG9zZSwgYXJyYXkpOworICAgIGdsOjpVbmlm
b3JtTWF0cml4NGZ2KGxvY2F0aW9uLCBhcnJheS5idWZTaXplIC8gMTYsIHRyYW5zcG9zZSwgYXJy
YXkuZGF0YSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVzZVByb2dyYW0o
UGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtKQpAQCAtMTY4MCwxMiArMTc3OCwxMiBAQCB2b2lkIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2ZXJ0ZXhBdHRyaWIxZihHQ0dMdWludCBpbmRleCwgR0NH
TGZsb2F0IHYwKQogICAgIGdsOjpWZXJ0ZXhBdHRyaWIxZihpbmRleCwgdjApOwogfQogCi12b2lk
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2ZXJ0ZXhBdHRyaWIxZnYoR0NHTHVpbnQgaW5kZXgs
IGNvbnN0IEdDR0xmbG9hdCogYXJyYXkpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2
ZXJ0ZXhBdHRyaWIxZnYoR0NHTHVpbnQgaW5kZXgsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdCwg
MT4gYXJyYXkpCiB7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgZ2w6OlZlcnRleEF0dHJpYjFmdihpbmRleCwgYXJyYXkpOworICAgIGdsOjpW
ZXJ0ZXhBdHRyaWIxZnYoaW5kZXgsIGFycmF5LmRhdGEpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjp2ZXJ0ZXhBdHRyaWIyZihHQ0dMdWludCBpbmRleCwgR0NHTGZsb2F0IHYw
LCBHQ0dMZmxvYXQgdjEpCkBAIC0xNjk2LDEyICsxNzk0LDEyIEBAIHZvaWQgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYjJmKEdDR0x1aW50IGluZGV4LCBHQ0dMZmxvYXQgdjAs
IEdDR0xmCiAgICAgZ2w6OlZlcnRleEF0dHJpYjJmKGluZGV4LCB2MCwgdjEpOwogfQogCi12b2lk
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2ZXJ0ZXhBdHRyaWIyZnYoR0NHTHVpbnQgaW5kZXgs
IGNvbnN0IEdDR0xmbG9hdCogYXJyYXkpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2
ZXJ0ZXhBdHRyaWIyZnYoR0NHTHVpbnQgaW5kZXgsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdCwg
Mj4gYXJyYXkpCiB7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgZ2w6OlZlcnRleEF0dHJpYjJmdihpbmRleCwgYXJyYXkpOworICAgIGdsOjpW
ZXJ0ZXhBdHRyaWIyZnYoaW5kZXgsIGFycmF5LmRhdGEpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjp2ZXJ0ZXhBdHRyaWIzZihHQ0dMdWludCBpbmRleCwgR0NHTGZsb2F0IHYw
LCBHQ0dMZmxvYXQgdjEsIEdDR0xmbG9hdCB2MikKQEAgLTE3MTIsMTIgKzE4MTAsMTIgQEAgdm9p
ZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliM2YoR0NHTHVpbnQgaW5kZXgs
IEdDR0xmbG9hdCB2MCwgR0NHTGYKICAgICBnbDo6VmVydGV4QXR0cmliM2YoaW5kZXgsIHYwLCB2
MSwgdjIpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2ZXJ0ZXhBdHRyaWIz
ZnYoR0NHTHVpbnQgaW5kZXgsIGNvbnN0IEdDR0xmbG9hdCogYXJyYXkpCit2b2lkIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjp2ZXJ0ZXhBdHRyaWIzZnYoR0NHTHVpbnQgaW5kZXgsIEdDR0xTcGFu
PGNvbnN0IEdDR0xmbG9hdCwgMz4gYXJyYXkpCiB7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJl
bnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZ2w6OlZlcnRleEF0dHJpYjNmdihpbmRleCwg
YXJyYXkpOworICAgIGdsOjpWZXJ0ZXhBdHRyaWIzZnYoaW5kZXgsIGFycmF5LmRhdGEpOwogfQog
CiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2ZXJ0ZXhBdHRyaWI0ZihHQ0dMdWludCBp
bmRleCwgR0NHTGZsb2F0IHYwLCBHQ0dMZmxvYXQgdjEsIEdDR0xmbG9hdCB2MiwgR0NHTGZsb2F0
IHYzKQpAQCAtMTcyOCwxMiArMTgyNiwxMiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
Ojp2ZXJ0ZXhBdHRyaWI0ZihHQ0dMdWludCBpbmRleCwgR0NHTGZsb2F0IHYwLCBHQ0dMZgogICAg
IGdsOjpWZXJ0ZXhBdHRyaWI0ZihpbmRleCwgdjAsIHYxLCB2MiwgdjMpOwogfQogCi12b2lkIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2ZXJ0ZXhBdHRyaWI0ZnYoR0NHTHVpbnQgaW5kZXgsIGNv
bnN0IEdDR0xmbG9hdCogYXJyYXkpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2ZXJ0
ZXhBdHRyaWI0ZnYoR0NHTHVpbnQgaW5kZXgsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdCwgND4g
YXJyYXkpCiB7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgZ2w6OlZlcnRleEF0dHJpYjRmdihpbmRleCwgYXJyYXkpOworICAgIGdsOjpWZXJ0
ZXhBdHRyaWI0ZnYoaW5kZXgsIGFycmF5LmRhdGEpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjp2ZXJ0ZXhBdHRyaWJQb2ludGVyKEdDR0x1aW50IGluZGV4LCBHQ0dMaW50IHNp
emUsIEdDR0xlbnVtIHR5cGUsIEdDR0xib29sZWFuIG5vcm1hbGl6ZWQsIEdDR0xzaXplaSBzdHJp
ZGUsIEdDR0xpbnRwdHIgb2Zmc2V0KQpAQCAtMjAyOSwxNiArMjEyNyw2IEBAIEdDR0xzaXplaXB0
ciBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VmVydGV4QXR0cmliT2Zmc2V0KEdDR0x1aW50
IGluZGV4LCBHQ0dMCiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdDR0xzaXplaXB0cj4ocmVpbnRl
cnByZXRfY2FzdDxpbnRwdHJfdD4ocG9pbnRlcikpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjp0ZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwg
R0NHTGludCB4b2ZmLCBHQ0dMaW50IHlvZmYsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhl
aWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBjb25zdCB2b2lkKiBwaXhlbHMp
Ci17Ci0gICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgLy8gRklYTUU6IHdlIHdpbGwgbmVlZCB0byBkZWFsIHdpdGggUGl4ZWxTdG9yZSBwYXJhbXMg
d2hlbiBkZWFsaW5nIHdpdGggaW1hZ2UgYnVmZmVycyB0aGF0IGRpZmZlciBmcm9tIHRoZSBzdWJp
bWFnZSBzaXplLgotICAgIGdsOjpUZXhTdWJJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIHhvZmYsIHlv
ZmYsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgcGl4ZWxzKTsKLSAgICBtX3N0YXRlLnRl
eHR1cmVTZWVkQ291bnQuYWRkKG1fc3RhdGUuY3VycmVudEJvdW5kVGV4dHVyZSgpKTsKLX0KLQog
UGxhdGZvcm1HTE9iamVjdCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y3JlYXRlQnVmZmVyKCkK
IHsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQpAQCAtMjIwMywxNyArMjI5MSw2IEBA
IHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmRpc3BhdGNoQ29udGV4dENoYW5nZWROb3Rp
ZmljYXRpb24oKQogICAgICAgICBjbGllbnQtPmRpc3BhdGNoQ29udGV4dENoYW5nZWROb3RpZmlj
YXRpb24oKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dGV4SW1hZ2UyRERp
cmVjdChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9y
bWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBH
Q0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIGNvbnN0IHZvaWQqIHBpeGVscykKLXsKLSAg
ICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAo
IW1faXNGb3JXZWJHTDIgJiYgbV9leHRlbnNpb25zKQotICAgICAgICBpbnRlcm5hbGZvcm1hdCA9
IG1fZXh0ZW5zaW9ucy0+YWRqdXN0V2ViR0wxVGV4dHVyZUludGVybmFsRm9ybWF0KGludGVybmFs
Zm9ybWF0LCBmb3JtYXQsIHR5cGUpOwotICAgIGdsOjpUZXhJbWFnZTJEKHRhcmdldCwgbGV2ZWws
IGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIsIGZvcm1hdCwgdHlwZSwgcGl4
ZWxzKTsKLSAgICBtX3N0YXRlLnRleHR1cmVTZWVkQ291bnQuYWRkKG1fc3RhdGUuY3VycmVudEJv
dW5kVGV4dHVyZSgpKTsKLX0KLQogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6ZHJhd0Fy
cmF5c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291
bnQsIEdDR0xzaXplaSBwcmltY291bnQpCiB7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQo
KSkKQEAgLTI0MzYsMjAgKzI1MTMsMjAgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
ZnJhbWVidWZmZXJUZXh0dXJlTGF5ZXIoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bQogICAgIGds
OjpGcmFtZWJ1ZmZlclRleHR1cmVMYXllcih0YXJnZXQsIGF0dGFjaG1lbnQsIHRleHR1cmUsIGxl
dmVsLCBsYXllcik7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmludmFsaWRh
dGVGcmFtZWJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaSBudW1BdHRhY2htZW50cywg
Y29uc3QgR0NHTGVudW0qIGF0dGFjaG1lbnRzKQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6aW52YWxpZGF0ZUZyYW1lYnVmZmVyKEdDR0xlbnVtIHRhcmdldCwgR0NHTFNwYW48Y29uc3Qg
R0NHTGVudW0+IGF0dGFjaG1lbnRzKQogewogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkp
CiAgICAgICAgIHJldHVybjsKIAotICAgIGdsOjpJbnZhbGlkYXRlRnJhbWVidWZmZXIodGFyZ2V0
LCBudW1BdHRhY2htZW50cywgYXR0YWNobWVudHMpOworICAgIGdsOjpJbnZhbGlkYXRlRnJhbWVi
dWZmZXIodGFyZ2V0LCBhdHRhY2htZW50cy5idWZTaXplLCBhdHRhY2htZW50cy5kYXRhKTsKIH0K
IAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6aW52YWxpZGF0ZVN1YkZyYW1lYnVmZmVy
KEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpIG51bUF0dGFjaG1lbnRzLCBjb25zdCBHQ0dMZW51
bSogYXR0YWNobWVudHMsIEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdD
R0xzaXplaSBoZWlnaHQpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjppbnZhbGlkYXRl
U3ViRnJhbWVidWZmZXIoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4g
YXR0YWNobWVudHMsIEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xz
aXplaSBoZWlnaHQpCiB7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgZ2w6OkludmFsaWRhdGVTdWJGcmFtZWJ1ZmZlcih0YXJnZXQsIG51bUF0
dGFjaG1lbnRzLCBhdHRhY2htZW50cywgeCwgeSwgd2lkdGgsIGhlaWdodCk7CisgICAgZ2w6Oklu
dmFsaWRhdGVTdWJGcmFtZWJ1ZmZlcih0YXJnZXQsIGF0dGFjaG1lbnRzLmJ1ZlNpemUsIGF0dGFj
aG1lbnRzLmRhdGEsIHgsIHksIHdpZHRoLCBoZWlnaHQpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpyZWFkQnVmZmVyKEdDR0xlbnVtIHNyYykKQEAgLTI1MTcsODQgKzI1OTQs
OTMgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTR1aShHQ0dMaW50IGxv
Y2F0aW9uLCBHQ0dMdWludCB2MCwgR0NHTHVpbnQKICAgICBnbDo6VW5pZm9ybTR1aShsb2NhdGlv
biwgdjAsIHYxLCB2MiwgdjMpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1
bmlmb3JtMXVpdihHQ0dMaW50IGxvY2F0aW9uLCBjb25zdCBHQ0dMdWludCogZGF0YSwgR0NHTHVp
bnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjp1bmlmb3JtMXVpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dM
dWludD4gZGF0YSkKIHsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBnbDo6VW5pZm9ybTF1aXYobG9jYXRpb24sIHNyY0xlbmd0aCwgZGF0YSAr
IHNyY09mZnNldCk7CisgICAgZ2w6OlVuaWZvcm0xdWl2KGxvY2F0aW9uLCBkYXRhLmJ1ZlNpemUs
IGRhdGEuZGF0YSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0y
dWl2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0x1aW50KiBkYXRhLCBHQ0dMdWludCBzcmNP
ZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OnVuaWZvcm0ydWl2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0x1aW50PiBk
YXRhKQogeworICAgIEFTU0VSVCghKGRhdGEuYnVmU2l6ZSAlIDIpKTsKICAgICBpZiAoIW1ha2VD
b250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBnbDo6VW5pZm9ybTJ1aXYo
bG9jYXRpb24sIHNyY0xlbmd0aCwgZGF0YSArIHNyY09mZnNldCk7CisgICAgZ2w6OlVuaWZvcm0y
dWl2KGxvY2F0aW9uLCBkYXRhLmJ1ZlNpemUgLyAyLCBkYXRhLmRhdGEpOwogfQogCi12b2lkIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtM3VpdihHQ0dMaW50IGxvY2F0aW9uLCBjb25z
dCBHQ0dMdWludCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgp
Cit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtM3VpdihHQ0dMaW50IGxvY2F0
aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdWludD4gZGF0YSkKIHsKKyAgICBBU1NFUlQoIShkYXRh
LmJ1ZlNpemUgJSAzKSk7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgZ2w6OlVuaWZvcm0zdWl2KGxvY2F0aW9uLCBzcmNMZW5ndGgsIGRhdGEg
KyBzcmNPZmZzZXQpOworICAgIGdsOjpVbmlmb3JtM3Vpdihsb2NhdGlvbiwgZGF0YS5idWZTaXpl
IC8gMywgZGF0YS5kYXRhKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5p
Zm9ybTR1aXYoR0NHTGludCBsb2NhdGlvbiwgY29uc3QgR0NHTHVpbnQqIGRhdGEsIEdDR0x1aW50
IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6dW5pZm9ybTR1aXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTHVp
bnQ+IGRhdGEpCiB7CisgICAgQVNTRVJUKCEoZGF0YS5idWZTaXplICUgNCkpOwogICAgIGlmICgh
bWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGdsOjpVbmlmb3Jt
NHVpdihsb2NhdGlvbiwgc3JjTGVuZ3RoLCBkYXRhICsgc3JjT2Zmc2V0KTsKKyAgICBnbDo6VW5p
Zm9ybTR1aXYobG9jYXRpb24sIGRhdGEuYnVmU2l6ZSAvIDQsIGRhdGEuZGF0YSk7CiB9CiAKLXZv
aWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXgyeDNmdihHQ0dMaW50IGxv
Y2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NH
THVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCit2b2lkIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4MngzZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xl
YW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEpCiB7CisgICAgQVNT
RVJUKCEoZGF0YS5idWZTaXplICUgNikpOwogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkp
CiAgICAgICAgIHJldHVybjsKIAotICAgIGdsOjpVbmlmb3JtTWF0cml4MngzZnYobG9jYXRpb24s
IHNyY0xlbmd0aCwgdHJhbnNwb3NlLCBkYXRhICsgc3JjT2Zmc2V0KTsKKyAgICBnbDo6VW5pZm9y
bU1hdHJpeDJ4M2Z2KGxvY2F0aW9uLCBkYXRhLmJ1ZlNpemUgLyA2LCB0cmFuc3Bvc2UsIGRhdGEu
ZGF0YSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXgz
eDJmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xm
bG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCit2b2lk
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4M3gyZnYoR0NHTGludCBsb2Nh
dGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRh
dGEpCiB7CisgICAgQVNTRVJUKCEoZGF0YS5idWZTaXplICUgNikpOwogICAgIGlmICghbWFrZUNv
bnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGdsOjpVbmlmb3JtTWF0cml4
M3gyZnYobG9jYXRpb24sIHNyY0xlbmd0aCwgdHJhbnNwb3NlLCBkYXRhICsgc3JjT2Zmc2V0KTsK
KyAgICBnbDo6VW5pZm9ybU1hdHJpeDN4MmZ2KGxvY2F0aW9uLCBkYXRhLmJ1ZlNpemUgLyA2LCB0
cmFuc3Bvc2UsIGRhdGEuZGF0YSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OnVuaWZvcm1NYXRyaXgyeDRmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bv
c2UsIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBz
cmNMZW5ndGgpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4Mng0
ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25z
dCBHQ0dMZmxvYXQ+IGRhdGEpCiB7CisgICAgQVNTRVJUKCEoZGF0YS5idWZTaXplICUgOCkpOwog
ICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGds
OjpVbmlmb3JtTWF0cml4Mng0ZnYobG9jYXRpb24sIHNyY0xlbmd0aCwgdHJhbnNwb3NlLCBkYXRh
ICsgc3JjT2Zmc2V0KTsKKyAgICBnbDo6VW5pZm9ybU1hdHJpeDJ4NGZ2KGxvY2F0aW9uLCBkYXRh
LmJ1ZlNpemUgLyA4LCB0cmFuc3Bvc2UsIGRhdGEuZGF0YSk7CiB9CiAKLXZvaWQgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXg0eDJmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dM
Ym9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zm
c2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1
bmlmb3JtTWF0cml4NHgyZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3Nl
LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEpCiB7CisgICAgQVNTRVJUKCEoZGF0YS5i
dWZTaXplICUgOCkpOwogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIGdsOjpVbmlmb3JtTWF0cml4NHgyZnYobG9jYXRpb24sIHNyY0xlbmd0aCwg
dHJhbnNwb3NlLCBkYXRhICsgc3JjT2Zmc2V0KTsKKyAgICBnbDo6VW5pZm9ybU1hdHJpeDR4MmZ2
KGxvY2F0aW9uLCBkYXRhLmJ1ZlNpemUgLyA4LCB0cmFuc3Bvc2UsIGRhdGEuZGF0YSk7CiB9CiAK
LXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXgzeDRmdihHQ0dMaW50
IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwg
R0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCit2b2lkIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4M3g0ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJv
b2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEpCiB7CisgICAg
QVNTRVJUKCEoZGF0YS5idWZTaXplICUgMTIpKTsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVu
dCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBnbDo6VW5pZm9ybU1hdHJpeDN4NGZ2KGxvY2F0
aW9uLCBzcmNMZW5ndGgsIHRyYW5zcG9zZSwgZGF0YSArIHNyY09mZnNldCk7CisgICAgZ2w6OlVu
aWZvcm1NYXRyaXgzeDRmdihsb2NhdGlvbiwgZGF0YS5idWZTaXplIC8gMTIsIHRyYW5zcG9zZSwg
ZGF0YS5kYXRhKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybU1h
dHJpeDR4M2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3Qg
R0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkK
K3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXg0eDNmdihHQ0dMaW50
IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9h
dD4gZGF0YSkKIHsKKyAgICBBU1NFUlQoIShkYXRhLmJ1ZlNpemUgJSAxMikpOwogICAgIGlmICgh
bWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGdsOjpVbmlmb3Jt
TWF0cml4NHgzZnYobG9jYXRpb24sIHNyY0xlbmd0aCwgdHJhbnNwb3NlLCBkYXRhICsgc3JjT2Zm
c2V0KTsKKyAgICBnbDo6VW5pZm9ybU1hdHJpeDR4M2Z2KGxvY2F0aW9uLCBkYXRhLmJ1ZlNpemUg
LyAxMiwgdHJhbnNwb3NlLCBkYXRhLmRhdGEpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjp2ZXJ0ZXhBdHRyaWJJNGkoR0NHTHVpbnQgaW5kZXgsIEdDR0xpbnQgeCwgR0NHTGlu
dCB5LCBHQ0dMaW50IHosIEdDR0xpbnQgdykKQEAgLTI2MDUsMTIgKzI2OTEsMTIgQEAgdm9pZCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliSTRpKEdDR0x1aW50IGluZGV4LCBH
Q0dMaW50IHgsIEdDR0xpbnQKICAgICBnbDo6VmVydGV4QXR0cmliSTRpKGluZGV4LCB4LCB5LCB6
LCB3KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliSTRp
dihHQ0dMdWludCBpbmRleCwgY29uc3QgR0NHTGludCogdmFsdWVzKQordm9pZCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliSTRpdihHQ0dMdWludCBpbmRleCwgR0NHTFNwYW48
Y29uc3QgR0NHTGludCwgND4gdmFsdWVzKQogewogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50
KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGdsOjpWZXJ0ZXhBdHRyaWJJNGl2KGluZGV4LCB2
YWx1ZXMpOworICAgIGdsOjpWZXJ0ZXhBdHRyaWJJNGl2KGluZGV4LCB2YWx1ZXMuZGF0YSk7CiB9
CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYkk0dWkoR0NHTHVp
bnQgaW5kZXgsIEdDR0x1aW50IHgsIEdDR0x1aW50IHksIEdDR0x1aW50IHosIEdDR0x1aW50IHcp
CkBAIC0yNjIxLDEyICsyNzA3LDEyIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZl
cnRleEF0dHJpYkk0dWkoR0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50IHgsIEdDR0x1CiAgICAgZ2w6
OlZlcnRleEF0dHJpYkk0dWkoaW5kZXgsIHgsIHksIHosIHcpOwogfQogCi12b2lkIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjp2ZXJ0ZXhBdHRyaWJJNHVpdihHQ0dMdWludCBpbmRleCwgY29uc3Qg
R0NHTHVpbnQqIHZhbHVlcykKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZlcnRleEF0
dHJpYkk0dWl2KEdDR0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdWludCwgND4gdmFs
dWVzKQogewogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIGdsOjpWZXJ0ZXhBdHRyaWJJNHVpdihpbmRleCwgdmFsdWVzKTsKKyAgICBnbDo6VmVy
dGV4QXR0cmliSTR1aXYoaW5kZXgsIHZhbHVlcy5kYXRhKTsKIH0KIAogdm9pZCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6ZHJhd1JhbmdlRWxlbWVudHMoR0NHTGVudW0gbW9kZSwgR0NHTHVpbnQg
c3RhcnQsIEdDR0x1aW50IGVuZCwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBHQ0dM
aW50cHRyIG9mZnNldCkKQEAgLTI2MzcsMzYgKzI3MjMsMzYgQEAgdm9pZCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6ZHJhd1JhbmdlRWxlbWVudHMoR0NHTGVudW0gbW9kZSwgR0NHTHVpbnQgc3Rh
cnQsIEcKICAgICBnbDo6RHJhd1JhbmdlRWxlbWVudHMobW9kZSwgc3RhcnQsIGVuZCwgY291bnQs
IHR5cGUsIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KG9mZnNldCkpOwogfQogCi12b2lkIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpkcmF3QnVmZmVycyhHQ0dMc2l6ZWkgbiwgY29uc3QgR0NHTGVu
dW0qIGJ1ZnMpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpkcmF3QnVmZmVycyhHQ0dM
U3Bhbjxjb25zdCBHQ0dMZW51bT4gYnVmcykKIHsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVu
dCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBnbDo6RHJhd0J1ZmZlcnMobiwgYnVmcyk7Cisg
ICAgZ2w6OkRyYXdCdWZmZXJzKGJ1ZnMuYnVmU2l6ZSwgYnVmcy5kYXRhKTsKIH0KIAotdm9pZCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y2xlYXJCdWZmZXJpdihHQ0dMZW51bSBidWZmZXIsIEdD
R0xpbnQgZHJhd2J1ZmZlciwgY29uc3QgR0NHTGludCogdmFsdWVzLCBHQ0dMdWludCBzcmNPZmZz
ZXQpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjbGVhckJ1ZmZlcml2KEdDR0xlbnVt
IGJ1ZmZlciwgR0NHTGludCBkcmF3YnVmZmVyLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50PiB2YWx1
ZXMpCiB7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgZ2w6OkNsZWFyQnVmZmVyaXYoYnVmZmVyLCBkcmF3YnVmZmVyLCB2YWx1ZXMgKyBzcmNP
ZmZzZXQpOworICAgIGdsOjpDbGVhckJ1ZmZlcml2KGJ1ZmZlciwgZHJhd2J1ZmZlciwgdmFsdWVz
LmRhdGEpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjbGVhckJ1ZmZlcnVp
dihHQ0dMZW51bSBidWZmZXIsIEdDR0xpbnQgZHJhd2J1ZmZlciwgY29uc3QgR0NHTHVpbnQqIHZh
bHVlcywgR0NHTHVpbnQgc3JjT2Zmc2V0KQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
Y2xlYXJCdWZmZXJ1aXYoR0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50IGRyYXdidWZmZXIsIEdDR0xT
cGFuPGNvbnN0IEdDR0x1aW50PiB2YWx1ZXMpCiB7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJl
bnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZ2w6OkNsZWFyQnVmZmVydWl2KGJ1ZmZlciwg
ZHJhd2J1ZmZlciwgdmFsdWVzICsgc3JjT2Zmc2V0KTsKKyAgICBnbDo6Q2xlYXJCdWZmZXJ1aXYo
YnVmZmVyLCBkcmF3YnVmZmVyLCB2YWx1ZXMuZGF0YSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OmNsZWFyQnVmZmVyZnYoR0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50IGRyYXdi
dWZmZXIsIGNvbnN0IEdDR0xmbG9hdCogdmFsdWVzLCBHQ0dMdWludCBzcmNPZmZzZXQpCit2b2lk
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjbGVhckJ1ZmZlcmZ2KEdDR0xlbnVtIGJ1ZmZlciwg
R0NHTGludCBkcmF3YnVmZmVyLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IHZhbHVlcykKIHsK
ICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBn
bDo6Q2xlYXJCdWZmZXJmdihidWZmZXIsIGRyYXdidWZmZXIsIHZhbHVlcyArIHNyY09mZnNldCk7
CisgICAgZ2w6OkNsZWFyQnVmZmVyZnYoYnVmZmVyLCBkcmF3YnVmZmVyLCB2YWx1ZXMuZGF0YSk7
CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNsZWFyQnVmZmVyZmkoR0NHTGVu
dW0gYnVmZmVyLCBHQ0dMaW50IGRyYXdidWZmZXIsIEdDR0xmbG9hdCBkZXB0aCwgR0NHTGludCBz
dGVuY2lsKQpAQCAtMjg1NCw5NCArMjk0MCw2IEBAIFZlY3RvcjxHQ0dMdWludD4gR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OmdldFVuaWZvcm1JbmRpY2VzKFBsYXRmb3JtR0xPYmplY3QgcHJvCiAg
ICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5p
Zm9ybTFmdihHQ0dMaW50IGxvY2F0aW9uLCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50
IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQotewotICAgIGlmICghbWFrZUNvbnRleHRD
dXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpVbmlmb3JtMWZ2KGxvY2F0aW9u
LCBzcmNMZW5ndGgsIGRhdGEgKyBzcmNPZmZzZXQpOwotfQotCi12b2lkIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjp1bmlmb3JtMmZ2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0xmbG9hdCog
ZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCi17Ci0gICAgaWYg
KCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OlVuaWZv
cm0yZnYobG9jYXRpb24sIHNyY0xlbmd0aCwgZGF0YSArIHNyY09mZnNldCk7Ci19Ci0KLXZvaWQg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0zZnYoR0NHTGludCBsb2NhdGlvbiwgY29u
c3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0
aCkKLXsKLSAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBnbDo6VW5pZm9ybTNmdihsb2NhdGlvbiwgc3JjTGVuZ3RoLCBkYXRhICsgc3JjT2Zmc2V0
KTsKLX0KLQotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTRmdihHQ0dMaW50
IGxvY2F0aW9uLCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NH
THVpbnQgc3JjTGVuZ3RoKQotewotICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIGdsOjpVbmlmb3JtNGZ2KGxvY2F0aW9uLCBzcmNMZW5ndGgsIGRh
dGEgKyBzcmNPZmZzZXQpOwotfQotCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlm
b3JtMWl2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0xpbnQqIGRhdGEsIEdDR0x1aW50IHNy
Y09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQotewotICAgIGlmICghbWFrZUNvbnRleHRDdXJy
ZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpVbmlmb3JtMWl2KGxvY2F0aW9uLCBz
cmNMZW5ndGgsIGRhdGEgKyBzcmNPZmZzZXQpOwotfQotCi12b2lkIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjp1bmlmb3JtMml2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0xpbnQqIGRhdGEs
IEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQotewotICAgIGlmICghbWFr
ZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpVbmlmb3JtMml2
KGxvY2F0aW9uLCBzcmNMZW5ndGgsIGRhdGEgKyBzcmNPZmZzZXQpOwotfQotCi12b2lkIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtM2l2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdD
R0xpbnQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQotewot
ICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGds
OjpVbmlmb3JtM2l2KGxvY2F0aW9uLCBzcmNMZW5ndGgsIGRhdGEgKyBzcmNPZmZzZXQpOwotfQot
Ci12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtNGl2KEdDR0xpbnQgbG9jYXRp
b24sIGNvbnN0IEdDR0xpbnQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3Jj
TGVuZ3RoKQotewotICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIGdsOjpVbmlmb3JtNGl2KGxvY2F0aW9uLCBzcmNMZW5ndGgsIGRhdGEgKyBzcmNP
ZmZzZXQpOwotfQotCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4
MmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZs
b2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKLXsKLSAg
ICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6
VW5pZm9ybU1hdHJpeDJmdihsb2NhdGlvbiwgc3JjTGVuZ3RoLCB0cmFuc3Bvc2UsIGRhdGEgKyBz
cmNPZmZzZXQpOwotfQotCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0
cml4M2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NH
TGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKLXsK
LSAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBn
bDo6VW5pZm9ybU1hdHJpeDNmdihsb2NhdGlvbiwgc3JjTGVuZ3RoLCB0cmFuc3Bvc2UsIGRhdGEg
KyBzcmNPZmZzZXQpOwotfQotCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3Jt
TWF0cml4NGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3Qg
R0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkK
LXsKLSAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBnbDo6VW5pZm9ybU1hdHJpeDRmdihsb2NhdGlvbiwgc3JjTGVuZ3RoLCB0cmFuc3Bvc2UsIGRh
dGEgKyBzcmNPZmZzZXQpOwotfQotCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRB
Y3RpdmVVbmlmb3JtQmxvY2tpdihHQ0dMdWludCBwcm9ncmFtLCBHQ0dMdWludCB1bmlmb3JtQmxv
Y2tJbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xpbnQ+IHBhcmFtcykKIHsKICAg
ICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY3YvR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0dyYXBoaWNzQ29udGV4dEdMQ1ZBTkdMRS5j
cHAKaW5kZXggZjliZmNhM2M0OGNlMjhlYWIxOTQ0YTRmNWU4NTMwYTQyNWY4NjJmZS4uMDM0ODA2
YThiY2RhMjI5YmM2YTgwODc5MzRhMTAzMDMyNDYxZjEwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9HcmFwaGljc0NvbnRleHRH
TENWQU5HTEUuY3BwCkBAIC0yMzUsMTggKzIzNSwxMyBAQCBzdHJ1Y3QgR0xmbG9hdENvbG9ycyB7
CiB9OwogCiBzdHJ1Y3QgWUNiQ3JNYXRyaXggewotICAgIHVuaW9uIHsKICAgICAgICAgR0xmbG9h
dCByb3dzWzRdWzRdOwotICAgICAgICBHTGZsb2F0IGRhdGFbMTZdOwotICAgIH07CiAKICAgICBj
b25zdGV4cHIgWUNiQ3JNYXRyaXgoUGl4ZWxSYW5nZSwgR0xmbG9hdCBjYkNvZWZmaWNpZW50LCBH
TGZsb2F0IGNyQ29lZmZpY2llbnQpOwogCi0gICAgb3BlcmF0b3IgVmVjdG9yPEdMZmxvYXQ+KCkg
Y29uc3QKKyAgICBvcGVyYXRvciBHQ0dMU3Bhbjxjb25zdCBHTGZsb2F0LCAxNj4oKSBjb25zdAog
ICAgIHsKLSAgICAgICAgVmVjdG9yPEdMZmxvYXQ+IHZlY3RvcjsKLSAgICAgICAgdmVjdG9yLmFw
cGVuZChkYXRhLCAxNik7Ci0gICAgICAgIHJldHVybiB2ZWN0b3I7CisgICAgICAgIHJldHVybiBt
YWtlR0NHTFNwYW48MTY+KCZyb3dzWzBdWzBdKTsKICAgICB9CiAKICAgICBjb25zdGV4cHIgR0xm
bG9hdENvbG9yIG9wZXJhdG9yKihjb25zdCBHTGZsb2F0Q29sb3ImKSBjb25zdDsKQEAgLTMxOCwx
MCArMzEzLDEwIEBAIGNvbnN0ZXhwciBHTGZsb2F0Q29sb3IgWUNiQ3JNYXRyaXg6Om9wZXJhdG9y
Kihjb25zdCBHTGZsb2F0Q29sb3ImIGNvbG9yKSBjb25zdAogICAgICk7CiB9CiAKLXN0YXRpYyBj
b25zdCBWZWN0b3I8R0xmbG9hdD4gWUNiQ3JUb1JHQk1hdHJpeEZvclJhbmdlQW5kVHJhbnNmZXJG
dW5jdGlvbihQaXhlbFJhbmdlIHJhbmdlLCBUcmFuc2ZlckZ1bmN0aW9uQ1YgdHJhbnNmZXJGdW5j
dGlvbikKK3N0YXRpYyBHQ0dMU3Bhbjxjb25zdCBHTGZsb2F0LCAxNj4gWUNiQ3JUb1JHQk1hdHJp
eEZvclJhbmdlQW5kVHJhbnNmZXJGdW5jdGlvbihQaXhlbFJhbmdlIHJhbmdlLCBUcmFuc2ZlckZ1
bmN0aW9uQ1YgdHJhbnNmZXJGdW5jdGlvbikKIHsKICAgICB1c2luZyBNYXBLZXkgPSBzdGQ6OnBh
aXI8UGl4ZWxSYW5nZSwgVHJhbnNmZXJGdW5jdGlvbkNWPjsKLSAgICB1c2luZyBNYXRyaXhNYXAg
PSBTdGRNYXA8TWFwS2V5LCBWZWN0b3I8R0xmbG9hdD4+OworICAgIHVzaW5nIE1hdHJpeE1hcCA9
IFN0ZE1hcDxNYXBLZXksIGNvbnN0IFlDYkNyTWF0cml4Jj47CiAKICAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8TWF0cml4TWFwPiBtYXRyaWNlczsKICAgICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90
IG9uY2VUb2tlbjsKQEAgLTUyNiw3ICs1MjEsNyBAQCBib29sIEdyYXBoaWNzQ29udGV4dEdMQ1ZB
TkdMRTo6aW5pdGlhbGl6ZVVWQ29udGV4dE9iamVjdHMoKQogICAgIGZsb2F0IHZlcnRpY2VzWzEy
XSA9IHsgLTEsIC0xLCAxLCAtMSwgMSwgMSwgMSwgMSwgLTEsIDEsIC0xLCAtMSB9OwogCiAgICAg
bV9jb250ZXh0LT5iaW5kQnVmZmVyKEdyYXBoaWNzQ29udGV4dEdMOjpBUlJBWV9CVUZGRVIsIG1f
eXV2VmVydGV4QnVmZmVyKTsKLSAgICBtX2NvbnRleHQtPmJ1ZmZlckRhdGEoR3JhcGhpY3NDb250
ZXh0R0w6OkFSUkFZX0JVRkZFUiwgc2l6ZW9mKHZlcnRpY2VzKSwgdmVydGljZXMsIEdyYXBoaWNz
Q29udGV4dEdMOjpTVEFUSUNfRFJBVyk7CisgICAgbV9jb250ZXh0LT5idWZmZXJEYXRhKEdyYXBo
aWNzQ29udGV4dEdMOjpBUlJBWV9CVUZGRVIsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPih2ZXJ0
aWNlcywgc2l6ZW9mKHZlcnRpY2VzKSksIEdyYXBoaWNzQ29udGV4dEdMOjpTVEFUSUNfRFJBVyk7
CiAgICAgbV9jb250ZXh0LT5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShtX3l1dlBvc2l0aW9uQXR0
cmlidXRlTG9jYXRpb24pOwogICAgIG1fY29udGV4dC0+dmVydGV4QXR0cmliUG9pbnRlcihtX3l1
dlBvc2l0aW9uQXR0cmlidXRlTG9jYXRpb24sIDIsIEdyYXBoaWNzQ29udGV4dEdMOjpGTE9BVCwg
ZmFsc2UsIDAsIDApOwogCkBAIC02MjUsNyArNjIwLDcgQEAgYm9vbCBHcmFwaGljc0NvbnRleHRH
TENWQU5HTEU6OmNvcHlQaXhlbEJ1ZmZlclRvVGV4dHVyZShDVlBpeGVsQnVmZmVyUmVmIGltYWdl
LAogICAgIG1fY29udGV4dC0+dGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVS
RV8yRCwgR3JhcGhpY3NDb250ZXh0R0w6OlRFWFRVUkVfTUlOX0ZJTFRFUiwgR3JhcGhpY3NDb250
ZXh0R0w6OkxJTkVBUik7CiAgICAgbV9jb250ZXh0LT50ZXhQYXJhbWV0ZXJpKEdyYXBoaWNzQ29u
dGV4dEdMOjpURVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV9XUkFQX1MsIEdy
YXBoaWNzQ29udGV4dEdMOjpDTEFNUF9UT19FREdFKTsKICAgICBtX2NvbnRleHQtPnRleFBhcmFt
ZXRlcmkoR3JhcGhpY3NDb250ZXh0R0w6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4dEdMOjpU
RVhUVVJFX1dSQVBfVCwgR3JhcGhpY3NDb250ZXh0R0w6OkNMQU1QX1RPX0VER0UpOwotICAgIG1f
Y29udGV4dC0+dGV4SW1hZ2UyRERpcmVjdChHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV8yRCwg
bGV2ZWwsIGludGVybmFsRm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCAwLCBmb3JtYXQsIHR5cGUsIG51
bGxwdHIpOworICAgIGdsOjpUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIGxldmVsLCBpbnRlcm5h
bEZvcm1hdCwgd2lkdGgsIGhlaWdodCwgMCwgZm9ybWF0LCB0eXBlLCBudWxscHRyKTsKIAogICAg
IG1fY29udGV4dC0+ZnJhbWVidWZmZXJUZXh0dXJlMkQoR3JhcGhpY3NDb250ZXh0R0w6OkZSQU1F
QlVGRkVSLCBHcmFwaGljc0NvbnRleHRHTDo6Q09MT1JfQVRUQUNITUVOVDAsIEdyYXBoaWNzQ29u
dGV4dEdMOjpURVhUVVJFXzJELCBvdXRwdXRUZXh0dXJlLCBsZXZlbCk7CiAgICAgR0NHTGVudW0g
c3RhdHVzID0gbV9jb250ZXh0LT5jaGVja0ZyYW1lYnVmZmVyU3RhdHVzKEdyYXBoaWNzQ29udGV4
dEdMOjpGUkFNRUJVRkZFUik7CkBAIC02ODIsOCArNjc3LDggQEAgYm9vbCBHcmFwaGljc0NvbnRl
eHRHTENWQU5HTEU6OmNvcHlQaXhlbEJ1ZmZlclRvVGV4dHVyZShDVlBpeGVsQnVmZmVyUmVmIGlt
YWdlLAogCiAgICAgYXV0byByYW5nZSA9IHBpeGVsUmFuZ2VGcm9tUGl4ZWxGb3JtYXQocGl4ZWxG
b3JtYXQpOwogICAgIGF1dG8gdHJhbnNmZXJGdW5jdGlvbiA9IHRyYW5zZmVyRnVuY3Rpb25Gcm9t
U3RyaW5nKChDRlN0cmluZ1JlZilDVkJ1ZmZlckdldEF0dGFjaG1lbnQoaW1hZ2UsIGtDVkltYWdl
QnVmZmVyWUNiQ3JNYXRyaXhLZXksIG5pbCkpOwotICAgIGF1dG8mIGNvbG9yTWF0cml4ID0gWUNi
Q3JUb1JHQk1hdHJpeEZvclJhbmdlQW5kVHJhbnNmZXJGdW5jdGlvbihyYW5nZSwgdHJhbnNmZXJG
dW5jdGlvbik7Ci0gICAgbV9jb250ZXh0LT51bmlmb3JtTWF0cml4NGZ2KG1fY29sb3JNYXRyaXhV
bmlmb3JtTG9jYXRpb24sIDEsIEdMX0ZBTFNFLCBjb2xvck1hdHJpeC5kYXRhKCkpOworICAgIGF1
dG8gY29sb3JNYXRyaXggPSBZQ2JDclRvUkdCTWF0cml4Rm9yUmFuZ2VBbmRUcmFuc2ZlckZ1bmN0
aW9uKHJhbmdlLCB0cmFuc2ZlckZ1bmN0aW9uKTsKKyAgICBtX2NvbnRleHQtPnVuaWZvcm1NYXRy
aXg0ZnYobV9jb2xvck1hdHJpeFVuaWZvcm1Mb2NhdGlvbiwgR0xfRkFMU0UsIGNvbG9yTWF0cml4
KTsKIAogICAgIC8vIERvIHRoZSBhY3R1YWwgZHJhd2luZy4KICAgICBtX2NvbnRleHQtPmRyYXdB
cnJheXMoR3JhcGhpY3NDb250ZXh0R0w6OlRSSUFOR0xFUywgMCwgNik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdM
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25z
R0xPcGVuR0wuY3BwCmluZGV4IDE3Nzg2YTY0YmE0ZTFkYTAwOTY0ZWFlOTk3ZDI5Mjc2NGRhZDE4
OTYuLjdlYzgxY2Y0YWU1NzcyY2FlOTcyODhiYzgwZTM2NTY0NmQ2MjdjN2IgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVu
R0wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRl
bnNpb25zR0xPcGVuR0wuY3BwCkBAIC0yMDgsMTQgKzIwOCwxNCBAQCBib29sIEV4dGVuc2lvbnNH
TE9wZW5HTDo6c3VwcG9ydHNFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBuYW1lKQogICAgIHJldHVy
biBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMobmFtZSk7CiB9CiAKLXZvaWQgRXh0ZW5z
aW9uc0dMT3BlbkdMOjpkcmF3QnVmZmVyc0VYVChHQ0dMc2l6ZWkgbiwgY29uc3QgR0NHTGVudW0q
IGJ1ZnMpCit2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTDo6ZHJhd0J1ZmZlcnNFWFQoR0NHTFNwYW48
Y29uc3QgR0NHTGVudW0+IGJ1ZnMpCiB7CiAgICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0
Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyAgRklYTUU6IGltcGxlbWVudCBz
dXBwb3J0IGZvciBvdGhlciBwbGF0Zm9ybXMuCiAjaWYgUExBVEZPUk0oR1RLKQotICAgIDo6Z2xE
cmF3QnVmZmVycyhuLCBidWZzKTsKKyAgICA6OmdsRHJhd0J1ZmZlcnMoYnVmcy5idWZTaXplLCBi
dWZzLmRhdGEpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0obik7CiAgICAgVU5VU0VEX1BBUkFN
KGJ1ZnMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5oCmluZGV4IGQzYmU4Y2MyOGMxN2MyZGY1ZDNi
NDg2NmJiM2M1Zjk0NGM0NTVmMjEuLjQ5NjI4OWNlYTBlNmEwOWQ2ZGI3MzFmODY4YjU0OTkzYTQ0
NDQ5YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5n
bC9FeHRlbnNpb25zR0xPcGVuR0wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmgKQEAgLTUwLDcgKzUwLDcgQEAgcHVibGlj
OgogICAgIHZvaWQgaW5zZXJ0RXZlbnRNYXJrZXJFWFQoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7
CiAgICAgdm9pZCBwdXNoR3JvdXBNYXJrZXJFWFQoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBwb3BHcm91cE1hcmtlckVYVCh2b2lkKSBvdmVycmlkZTsKLSAgICB2b2lkIGRyYXdC
dWZmZXJzRVhUKEdDR0xzaXplaSwgY29uc3QgR0NHTGVudW0qKSBvdmVycmlkZTsKKyAgICB2b2lk
IGRyYXdCdWZmZXJzRVhUKEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVtPikgb3ZlcnJpZGU7CiAKICAg
ICB2b2lkIGRyYXdBcnJheXNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwg
R0NHTHNpemVpIGNvdW50LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSBvdmVycmlkZTsKICAgICB2b2lk
IGRyYXdFbGVtZW50c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdD
R0xlbnVtIHR5cGUsIGxvbmcgbG9uZyBvZmZzZXQsIEdDR0xzaXplaSBwcmltY291bnQpIG92ZXJy
aWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Blbmds
L0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmNwcAppbmRleCA2ODZmMmQ1
MTE0OGVmOWIxMmZlZjEwYjNjMmFjNzBiMmEzNWQyMTU3Li40M2I1MTYxZmJhNzc4ZjhmYjQzODRi
MWJjMmRiMzhlY2Y2YzQ4M2ViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9u
LmNwcApAQCAtMjU5LDExICsyNTksNiBAQCB2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6
cmVhZFBpeGVsc1JvYnVzdEFOR0xFKGludCwgaW50LCBHQ0dMc2l6ZWksIEdDR0xzaQogICAgIG1f
Y29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwogfQogCi12
b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6dGV4SW1hZ2UyRFJvYnVzdEFOR0xFKEdDR0xl
bnVtLCBpbnQsIGludCwgR0NHTHNpemVpLCBHQ0dMc2l6ZWksIGludCwgR0NHTGVudW0sIEdDR0xl
bnVtLCBHQ0dMc2l6ZWksIGNvbnN0IHZvaWQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNp
emVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQogdm9pZCBFeHRlbnNpb25zR0xP
cGVuR0xDb21tb246OnRleFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVudW0sIEdDR0xlbnVt
LCBHQ0dMc2l6ZWksIGNvbnN0IEdDR0xmbG9hdCAqKQogewogICAgIG1fY29udGV4dC0+c3ludGhl
c2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwpAQCAtMjc0LDQyICsyNjksNiBAQCB2
b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6dGV4UGFyYW1ldGVyaXZSb2J1c3RBTkdMRShH
Q0dMZW51bSwgR0NHTGVudW0sIEdDRwogICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3Io
R0xfSU5WQUxJRF9PUEVSQVRJT04pOwogfQogCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1v
bjo6dGV4U3ViSW1hZ2UyRFJvYnVzdEFOR0xFKEdDR0xlbnVtLCBpbnQsIGludCwgaW50LCBHQ0dM
c2l6ZWksIEdDR0xzaXplaSwgR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIGNvbnN0IHZv
aWQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BF
UkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmNvbXByZXNzZWRU
ZXhJbWFnZTJEUm9idXN0QU5HTEUoR0NHTGVudW0sIGludCwgR0NHTGVudW0sIEdDR0xzaXplaSwg
R0NHTHNpemVpLCBpbnQsIEdDR0xzaXplaSwgR0NHTHNpemVpLCBjb25zdCB2b2lkKikKLXsKLSAg
ICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0K
LQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmNvbXByZXNzZWRUZXhTdWJJbWFnZTJE
Um9idXN0QU5HTEUoR0NHTGVudW0sIGludCwgaW50LCBpbnQsIEdDR0xzaXplaSwgR0NHTHNpemVp
LCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWksIGNvbnN0IHZvaWQqKQotewotICAgIG1f
Y29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12
b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Y29tcHJlc3NlZFRleEltYWdlM0RSb2J1c3RB
TkdMRShHQ0dMZW51bSwgaW50LCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWksIEdDR0xz
aXplaSwgaW50LCBHQ0dMc2l6ZWksIEdDR0xzaXplaSwgY29uc3Qgdm9pZCopCi17Ci0gICAgbV9j
b250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLXZv
aWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpjb21wcmVzc2VkVGV4U3ViSW1hZ2UzRFJvYnVz
dEFOR0xFKEdDR0xlbnVtLCBpbnQsIGludCwgaW50LCBpbnQsIEdDR0xzaXplaSwgR0NHTHNpemVp
LCBHQ0dMc2l6ZWksIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSwgY29uc3Qgdm9pZCop
Ci17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElP
Tik7Ci19Ci0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OnRleEltYWdlM0RSb2J1
c3RBTkdMRShHQ0dMZW51bSwgaW50LCBpbnQsIEdDR0xzaXplaSwgR0NHTHNpemVpLCBHQ0dMc2l6
ZWksIGludCwgR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIGNvbnN0IHZvaWQgKikKLXsK
LSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsK
LX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OnRleFN1YkltYWdlM0RSb2J1c3RB
TkdMRShHQ0dMZW51bSwgaW50LCBpbnQsIGludCwgaW50LCBHQ0dMc2l6ZWksIEdDR0xzaXplaSwg
R0NHTHNpemVpLCBHQ0dMZW51bSwgR0NHTGVudW0sIEdDR0xzaXplaSwgY29uc3Qgdm9pZCAqKQot
ewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04p
OwotfQotCiB2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0UXVlcnlpdlJvYnVzdEFO
R0xFKEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NHTGludCAq
KQogewogICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJ
T04pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Blbmds
L0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5oCmluZGV4IDk3ZWVkZmI3NDg1
YzgzMmY3OTNjOGNmZjBmYTE3ZmJmZmJlNjU4OGQuLmJmZTQ1MjE1NDNmZjRiMjcyMTM3ZjM0NGNl
ZTRhMjJkOGZiMjhjNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmgKQEAg
LTUwLDcgKzUwLDcgQEAgcHVibGljOgogICAgIEdDR0xib29sZWFuIGlzVmVydGV4QXJyYXlPRVMo
UGxhdGZvcm1HTE9iamVjdCkgb3ZlcnJpZGUgPSAwOwogICAgIHZvaWQgYmluZFZlcnRleEFycmF5
T0VTKFBsYXRmb3JtR0xPYmplY3QpIG92ZXJyaWRlID0gMDsKIAotICAgIHZvaWQgZHJhd0J1ZmZl
cnNFWFQoR0NHTHNpemVpLCBjb25zdCBHQ0dMZW51bSopIG92ZXJyaWRlID0gMDsKKyAgICB2b2lk
IGRyYXdCdWZmZXJzRVhUKEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVtPikgb3ZlcnJpZGUgPSAwOwog
CiAgICAgU3RyaW5nIGdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRShQbGF0Zm9ybUdMT2Jq
ZWN0KSBvdmVycmlkZTsKIApAQCAtNzAsMTcgKzcwLDggQEAgcHVibGljOgogCiAgICAgLy8gR0xf
QU5HTEVfcm9idXN0X2NsaWVudF9tZW1vcnkKICAgICB2b2lkIHJlYWRQaXhlbHNSb2J1c3RBTkdM
RShpbnQgeCwgaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVu
dW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICps
ZW5ndGgsIEdDR0xzaXplaSAqY29sdW1ucywgR0NHTHNpemVpICpyb3dzLCB2b2lkICpwaXhlbHMp
IG92ZXJyaWRlOwotICAgIHZvaWQgdGV4SW1hZ2UyRFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdl
dCwgaW50IGxldmVsLCBpbnQgaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNp
emVpIGhlaWdodCwgaW50IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3Qgdm9pZCAqcGl4ZWxzKSBvdmVycmlkZTsKICAgICB2b2lk
IHRleFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFt
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xmbG9hdCAqcGFyYW1zKSBvdmVycmlkZTsK
ICAgICB2b2lkIHRleFBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQgKnBhcmFtcykgb3Zl
cnJpZGU7Ci0gICAgdm9pZCB0ZXhTdWJJbWFnZTJEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0
LCBpbnQgbGV2ZWwsIGludCB4b2Zmc2V0LCBpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBH
Q0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXpl
aSBidWZTaXplLCBjb25zdCB2b2lkICpwaXhlbHMpIG92ZXJyaWRlOwotICAgIHZvaWQgY29tcHJl
c3NlZFRleEltYWdlMkRSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIGludCBsZXZlbCwgR0NH
TGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwg
aW50IGJvcmRlciwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0
IHZvaWQqIGRhdGEpIG92ZXJyaWRlOwotICAgIHZvaWQgY29tcHJlc3NlZFRleFN1YkltYWdlMkRS
b2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIGludCBsZXZlbCwgaW50IHhvZmZzZXQsIGludCB5
b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1h
dCwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IHZvaWQqIGRh
dGEpIG92ZXJyaWRlOwotICAgIHZvaWQgY29tcHJlc3NlZFRleEltYWdlM0RSb2J1c3RBTkdMRShH
Q0dMZW51bSB0YXJnZXQsIGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xz
aXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBpbnQgYm9yZGVy
LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3Qgdm9pZCogZGF0
YSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBjb21wcmVzc2VkVGV4U3ViSW1hZ2UzRFJvYnVzdEFOR0xF
KEdDR0xlbnVtIHRhcmdldCwgaW50IGxldmVsLCBpbnQgeG9mZnNldCwgaW50IHlvZmZzZXQsIGlu
dCB6b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBk
ZXB0aCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgY29uc3Qgdm9pZCogZGF0YSkgb3ZlcnJpZGU7Ci0KLSAgICB2b2lkIHRleEltYWdlM0RS
b2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIGludCBsZXZlbCwgaW50IGludGVybmFsZm9ybWF0
LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgaW50
IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgY29uc3Qgdm9pZCAqcGl4ZWxzKSBvdmVycmlkZTsKLSAgICB2b2lkIHRleFN1YkltYWdlM0RS
b2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIGludCBsZXZlbCwgaW50IHhvZmZzZXQsIGludCB5
b2Zmc2V0LCBpbnQgem9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBH
Q0dMc2l6ZWkgZGVwdGgsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIGNvbnN0IHZvaWQgKnBpeGVscykgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRRdWVy
eWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwog
ICAgIHZvaWQgZ2V0UXVlcnlPYmplY3R1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVu
dW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQg
KnBhcmFtcykgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRCdWZmZXJQb2ludGVydlJvYnVzdEFOR0xF
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dM
c2l6ZWkgKmxlbmd0aCwgdm9pZCAqKnBhcmFtcykgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNH
TE9wZW5HTEVTLmNwcAppbmRleCBkMjhmNGEwMzFlYmRjNDgzODc1ZDM5ODQ4N2Q1Nzg3NDhmZGU0
N2U3Li4zNmMzZWYzOGY5OGI5OWFmMDExNTA2OTkxNDI3YmFjZWZjYmI4YWMzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3Bl
bkdMRVMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9F
eHRlbnNpb25zR0xPcGVuR0xFUy5jcHAKQEAgLTE4MCw3ICsxODAsNyBAQCB2b2lkIEV4dGVuc2lv
bnNHTE9wZW5HTEVTOjpiaW5kVmVydGV4QXJyYXlPRVMoUGxhdGZvcm1HTE9iamVjdCBhcnJheSkK
ICAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElP
Tik7CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMRVM6OmRyYXdCdWZmZXJzRVhUKEdDR0xz
aXplaSAvKiBuICovLCBjb25zdCBHQ0dMZW51bSogLyogYnVmcyAqLykKK3ZvaWQgRXh0ZW5zaW9u
c0dMT3BlbkdMRVM6OmRyYXdCdWZmZXJzRVhUKEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVtPiAvKiBi
dWZzICovKQogewogICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQgdGhlIHN1cHBvcnQuCiAgICAgbm90
SW1wbGVtZW50ZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmgKaW5kZXggYzc0ODI1Yzgx
ZWFkMGE3NDYwYWVhMWRhZjFjOWFlMTgzNzAyOTM5Ni4uMDE3YTQ1YjczOThkMDk5MmVkMTQ3Njdm
MDc2N2UwNGI0NjQxNjI4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmgKQEAgLTg1LDcg
Kzg1LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGVsZXRlVmVydGV4QXJyYXlPRVMoUGxhdGZvcm1H
TE9iamVjdCkgb3ZlcnJpZGU7CiAgICAgR0NHTGJvb2xlYW4gaXNWZXJ0ZXhBcnJheU9FUyhQbGF0
Zm9ybUdMT2JqZWN0KSBvdmVycmlkZTsKICAgICB2b2lkIGJpbmRWZXJ0ZXhBcnJheU9FUyhQbGF0
Zm9ybUdMT2JqZWN0KSBvdmVycmlkZTsKLSAgICB2b2lkIGRyYXdCdWZmZXJzRVhUKEdDR0xzaXpl
aSwgY29uc3QgR0NHTGVudW0qKSBvdmVycmlkZTsKKyAgICB2b2lkIGRyYXdCdWZmZXJzRVhUKEdD
R0xTcGFuPGNvbnN0IEdDR0xlbnVtPikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGRyYXdBcnJheXNJ
bnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHNpemVpIGNvdW50LCBH
Q0dMc2l6ZWkgcHJpbWNvdW50KSBvdmVycmlkZTsKICAgICB2b2lkIGRyYXdFbGVtZW50c0luc3Rh
bmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIGxvbmcg
bG9uZyBvZmZzZXQsIEdDR0xzaXplaSBwcmltY291bnQpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdM
T3BlbkdMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFw
aGljc0NvbnRleHRHTE9wZW5HTC5jcHAKaW5kZXggZjE1YjdmMjk1YTk1MWIyZDg5NGVjMGZhOTE5
NTRlOTZmNDdhNGMxMy4uODQyYjZhYmY3YjY2YTUxODk5ZmVmMjkyODNkOGI5ZGQ5ODcwNGRlYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBo
aWNzQ29udGV4dEdMT3BlbkdMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuY3BwCkBAIC03Niw4ICs3Niw4IEBA
IGJvb2wgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnRleEltYWdlMkRSZXNvdXJjZVNhZmUoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxlCiB7CiAgICAgQVNTRVJUKHVucGFja0FsaWdubWVudCA9
PSAxIHx8IHVucGFja0FsaWdubWVudCA9PSAyIHx8IHVucGFja0FsaWdubWVudCA9PSA0IHx8IHVu
cGFja0FsaWdubWVudCA9PSA4KTsKICAgICBVbmlxdWVBcnJheTx1bnNpZ25lZCBjaGFyPiB6ZXJv
OworICAgIHVuc2lnbmVkIHNpemUgPSAwOwogICAgIGlmICh3aWR0aCA+IDAgJiYgaGVpZ2h0ID4g
MCkgewotICAgICAgICB1bnNpZ25lZCBzaXplOwogICAgICAgICBQaXhlbFN0b3JlUGFyYW1zIHBh
cmFtczsKICAgICAgICAgcGFyYW1zLmFsaWdubWVudCA9IHVucGFja0FsaWdubWVudDsKICAgICAg
ICAgR0NHTGVudW0gZXJyb3IgPSBjb21wdXRlSW1hZ2VTaXplSW5CeXRlcyhmb3JtYXQsIHR5cGUs
IHdpZHRoLCBoZWlnaHQsIDEsIHBhcmFtcywgJnNpemUsIG51bGxwdHIsIG51bGxwdHIpOwpAQCAt
OTIsNyArOTIsNyBAQCBib29sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp0ZXhJbWFnZTJEUmVz
b3VyY2VTYWZlKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZQogICAgICAgICB9CiAgICAgICAg
IG1lbXNldCh6ZXJvLmdldCgpLCAwLCBzaXplKTsKICAgICB9Ci0gICAgcmV0dXJuIHRleEltYWdl
MkQodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGJvcmRlciwg
Zm9ybWF0LCB0eXBlLCB6ZXJvLmdldCgpKTsKKyAgICByZXR1cm4gdGV4SW1hZ2UyRCh0YXJnZXQs
IGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgYm9yZGVyLCBmb3JtYXQsIHR5
cGUsIG1ha2VHQ0dMU3Bhbih6ZXJvLmdldCgpLCBzaXplKSk7CiB9CiAjZW5kaWYKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wv
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaAppbmRleCAwOTkyNjc4YjhkYzFlMTgzZDk4MjU5Yjc3
MzE1YzM2MTIxNzAxMzBmLi5jMjU1YjBjMTJmNGZjYmZhNDZkYjAyZDU1YzgwYjRjYjc3ZDE3Yjcw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaApAQCAtMTE5LDkgKzExOSw2IEBA
IHB1YmxpYzoKICAgICAvLyBXaXRoIG11bHRpc2FtcGxpbmcgb24sIGJsaXQgZnJvbSBtdWx0aXNh
bXBsZUZCTyB0byByZWd1bGFyIEZCTy4KICAgICB2b2lkIHByZXBhcmVUZXh0dXJlKCk7CiAKLSAg
ICAvLyBFcXVpdmFsZW50IHRvIDo6Z2xUZXhJbWFnZTJEKCkuIEFsbG93cyBwaXhlbHM9PTAgd2l0
aCBubyBhbGxvY2F0aW9uLgotICAgIHZvaWQgdGV4SW1hZ2UyRERpcmVjdChHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lk
dGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdD
R0xlbnVtIHR5cGUsIGNvbnN0IHZvaWQqIHBpeGVscyk7Ci0KICAgICAvLyBHZXQgYW4gYXR0cmli
dXRlIGxvY2F0aW9uIHdpdGhvdXQgY2hlY2tpbmcgdGhlIG5hbWUgLT4gbWFuZ2xlZG5hbWUgbWFw
cGluZy4KICAgICBpbnQgZ2V0QXR0cmliTG9jYXRpb25EaXJlY3QoUGxhdGZvcm1HTE9iamVjdCBw
cm9ncmFtLCBjb25zdCBTdHJpbmcmIG5hbWUpOwogCkBAIC0xMjksNiArMTI2LDkgQEAgcHVibGlj
OgogICAgIHZvaWQgY29tcGlsZVNoYWRlckRpcmVjdChQbGF0Zm9ybUdMT2JqZWN0KTsKIAogI2lm
ICFVU0UoQU5HTEUpCisgICAgLy8gRXF1aXZhbGVudCB0byA6OmdsVGV4SW1hZ2UyRCgpLiBBbGxv
d3MgcGl4ZWxzPT0wIHdpdGggbm8gYWxsb2NhdGlvbi4KKyAgICB2b2lkIHRleEltYWdlMkREaXJl
Y3QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1h
dCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NH
TGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBjb25zdCB2b2lkKiBwaXhlbHMpOworCiAgICAg
Ly8gSGVscGVyIHRvIHRleEltYWdlMkQgd2l0aCBwaXhlbD09MCBjYXNlOiBwaXhlbHMgYXJlIGlu
aXRpYWxpemVkIHRvIDAuCiAgICAgLy8gUmV0dXJuIHRydWUgaWYgbm8gR0wgZXJyb3IgaXMgc3lu
dGhlc2l6ZWQuCiAgICAgLy8gQnkgZGVmYXVsdCwgYWxpZ25tZW50IGlzIDQsIHRoZSBPcGVuR0wg
ZGVmYXVsdCBzZXR0aW5nLgpAQCAtMTU1LDggKzE1NSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGJs
ZW5kRnVuY1NlcGFyYXRlKEdDR0xlbnVtIHNyY1JHQiwgR0NHTGVudW0gZHN0UkdCLCBHQ0dMZW51
bSBzcmNBbHBoYSwgR0NHTGVudW0gZHN0QWxwaGEpIGZpbmFsOwogCiAgICAgdm9pZCBidWZmZXJE
YXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpcHRyIHNpemUsIEdDR0xlbnVtIHVzYWdlKSBm
aW5hbDsKLSAgICB2b2lkIGJ1ZmZlckRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWlwdHIg
c2l6ZSwgY29uc3Qgdm9pZCogZGF0YSwgR0NHTGVudW0gdXNhZ2UpIGZpbmFsOwotICAgIHZvaWQg
YnVmZmVyU3ViRGF0YShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnRwdHIgb2Zmc2V0LCBHQ0dMc2l6
ZWlwdHIgc2l6ZSwgY29uc3Qgdm9pZCogZGF0YSkgZmluYWw7CisgICAgdm9pZCBidWZmZXJEYXRh
KEdDR0xlbnVtIHRhcmdldCwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEsIEdDR0xlbnVt
IHVzYWdlKSBmaW5hbDsKKyAgICB2b2lkIGJ1ZmZlclN1YkRhdGEoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMaW50cHRyIG9mZnNldCwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEpIGZpbmFsOwog
CiAgICAgR0NHTGVudW0gY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhHQ0dMZW51bSB0YXJnZXQpIGZp
bmFsOwogICAgIHZvaWQgY2xlYXIoR0NHTGJpdGZpZWxkIG1hc2spIGZpbmFsOwpAQCAtMTY2LDEw
ICsxNjYsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBjb2xvck1hc2soR0NHTGJvb2xlYW4gcmVkLCBH
Q0dMYm9vbGVhbiBncmVlbiwgR0NHTGJvb2xlYW4gYmx1ZSwgR0NHTGJvb2xlYW4gYWxwaGEpIGZp
bmFsOwogICAgIHZvaWQgY29tcGlsZVNoYWRlcihQbGF0Zm9ybUdMT2JqZWN0KSBmaW5hbDsKIAot
I2lmICFVU0UoQU5HTEUpCi0gICAgdm9pZCBjb21wcmVzc2VkVGV4SW1hZ2UyRChHQ0dMZW51bSB0
YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkg
d2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMc2l6ZWkgaW1hZ2VT
aXplLCBjb25zdCB2b2lkKiBkYXRhKTsKLSAgICB2b2lkIGNvbXByZXNzZWRUZXhTdWJJbWFnZTJE
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50
IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9y
bWF0LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBjb25zdCB2b2lkKiBkYXRhKTsKLSNlbmRpZgogICAg
IHZvaWQgY29weVRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dM
ZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0
aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIpIGZpbmFsOwogICAgIHZvaWQgY29w
eVRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhv
ZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3
aWR0aCwgR0NHTHNpemVpIGhlaWdodCkgZmluYWw7CiAgICAgdm9pZCBjdWxsRmFjZShHQ0dMZW51
bSBtb2RlKSBmaW5hbDsKQEAgLTI1MywzMCArMjQ5LDM3IEBAIHB1YmxpYzoKICAgICB2b2lkIHN0
ZW5jaWxPcChHQ0dMZW51bSBmYWlsLCBHQ0dMZW51bSB6ZmFpbCwgR0NHTGVudW0genBhc3MpIGZp
bmFsOwogICAgIHZvaWQgc3RlbmNpbE9wU2VwYXJhdGUoR0NHTGVudW0gZmFjZSwgR0NHTGVudW0g
ZmFpbCwgR0NHTGVudW0gemZhaWwsIEdDR0xlbnVtIHpwYXNzKSBmaW5hbDsKIAotICAgIGJvb2wg
dGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVy
bmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9y
ZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIGNvbnN0IHZvaWQqIHBpeGVscykg
ZmluYWw7CisgICAgdm9pZCB0ZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZl
bCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhl
aWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NH
TFNwYW48Y29uc3QgR0NHTHZvaWQ+IHBpeGVscykgZmluYWw7CisgICAgdm9pZCB0ZXhJbWFnZTJE
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQs
IEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xl
bnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpIGZpbmFsOworICAg
IHZvaWQgdGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xp
bnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBo
ZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48Y29uc3QgR0NH
THZvaWQ+IHBpeGVscykgZmluYWw7CisgICAgdm9pZCB0ZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRh
cmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdD
R0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51
bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCkgZmluYWw7CisgICAgdm9pZCBjb21wcmVzc2VkVGV4
SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFs
Zm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVy
LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gZGF0YSkgZmlu
YWw7CisgICAgdm9pZCBjb21wcmVzc2VkVGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xp
bnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xz
aXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMaW50
cHRyIG9mZnNldCkgZmluYWw7IAorICAgIHZvaWQgY29tcHJlc3NlZFRleFN1YkltYWdlMkQoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9m
ZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQs
IEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRhKSBmaW5h
bDsKKyAgICB2b2lkIGNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NH
TGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3
aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMc2l6ZWkgaW1hZ2VT
aXplLCBHQ0dMaW50cHRyIG9mZnNldCkgZmluYWw7CisKICAgICB2b2lkIHRleFBhcmFtZXRlcmYo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGZsb2F0IHBhcmFtKSBmaW5hbDsK
ICAgICB2b2lkIHRleFBhcmFtZXRlcmkoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwg
R0NHTGludCBwYXJhbSkgZmluYWw7Ci0gICAgdm9pZCB0ZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRh
cmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdD
R0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51
bSB0eXBlLCBjb25zdCB2b2lkKiBwaXhlbHMpIGZpbmFsOwogCiAgICAgdm9pZCB1bmlmb3JtMWYo
R0NHTGludCBsb2NhdGlvbiwgR0NHTGZsb2F0IHgpIGZpbmFsOwotICAgIHZvaWQgdW5pZm9ybTFm
dihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWksIGNvbnN0IEdDR0xmbG9hdCogdikgZmluYWw7
CisgICAgdm9pZCB1bmlmb3JtMWZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdD
R0xmbG9hdD4gdikgZmluYWw7CiAgICAgdm9pZCB1bmlmb3JtMWkoR0NHTGludCBsb2NhdGlvbiwg
R0NHTGludCB4KSBmaW5hbDsKLSAgICB2b2lkIHVuaWZvcm0xaXYoR0NHTGludCBsb2NhdGlvbiwg
R0NHTHNpemVpLCBjb25zdCBHQ0dMaW50KiB2KSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm0xaXYo
R0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gdikgZmluYWw7CiAgICAg
dm9pZCB1bmlmb3JtMmYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGZsb2F0IHgsIEdDR0xmbG9hdCB5
KSBmaW5hbDsKLSAgICB2b2lkIHVuaWZvcm0yZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVp
LCBjb25zdCBHQ0dMZmxvYXQqIHYpIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybTJmdihHQ0dMaW50
IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IHYpIGZpbmFsOwogICAgIHZvaWQg
dW5pZm9ybTJpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xpbnQgeCwgR0NHTGludCB5KSBmaW5hbDsK
LSAgICB2b2lkIHVuaWZvcm0yaXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpLCBjb25zdCBH
Q0dMaW50KiB2KSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm0yaXYoR0NHTGludCBsb2NhdGlvbiwg
R0NHTFNwYW48Y29uc3QgR0NHTGludD4gdikgZmluYWw7CiAgICAgdm9pZCB1bmlmb3JtM2YoR0NH
TGludCBsb2NhdGlvbiwgR0NHTGZsb2F0IHgsIEdDR0xmbG9hdCB5LCBHQ0dMZmxvYXQgeikgZmlu
YWw7Ci0gICAgdm9pZCB1bmlmb3JtM2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSwgY29u
c3QgR0NHTGZsb2F0KiB2KSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm0zZnYoR0NHTGludCBsb2Nh
dGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiB2KSBmaW5hbDsKICAgICB2b2lkIHVuaWZv
cm0zaShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTGludCB6KSBm
aW5hbDsKLSAgICB2b2lkIHVuaWZvcm0zaXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpLCBj
b25zdCBHQ0dMaW50KiB2KSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm0zaXYoR0NHTGludCBsb2Nh
dGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gdikgZmluYWw7CiAgICAgdm9pZCB1bmlmb3Jt
NGYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGZsb2F0IHgsIEdDR0xmbG9hdCB5LCBHQ0dMZmxvYXQg
eiwgR0NHTGZsb2F0IHcpIGZpbmFsOwotICAgIHZvaWQgdW5pZm9ybTRmdihHQ0dMaW50IGxvY2F0
aW9uLCBHQ0dMc2l6ZWksIGNvbnN0IEdDR0xmbG9hdCogdikgZmluYWw7CisgICAgdm9pZCB1bmlm
b3JtNGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gdikgZmlu
YWw7CiAgICAgdm9pZCB1bmlmb3JtNGkoR0NHTGludCBsb2NhdGlvbiwgR0NHTGludCB4LCBHQ0dM
aW50IHksIEdDR0xpbnQgeiwgR0NHTGludCB3KSBmaW5hbDsKLSAgICB2b2lkIHVuaWZvcm00aXYo
R0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpLCBjb25zdCBHQ0dMaW50KiB2KSBmaW5hbDsKLSAg
ICB2b2lkIHVuaWZvcm1NYXRyaXgyZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpLCBHQ0dM
Ym9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogdmFsdWUpIGZpbmFsOwotICAgIHZv
aWQgdW5pZm9ybU1hdHJpeDNmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWksIEdDR0xib29s
ZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiB2YWx1ZSkgZmluYWw7Ci0gICAgdm9pZCB1
bmlmb3JtTWF0cml4NGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSwgR0NHTGJvb2xlYW4g
dHJhbnNwb3NlLCBjb25zdCBHQ0dMZmxvYXQqIHZhbHVlKSBmaW5hbDsKKyAgICB2b2lkIHVuaWZv
cm00aXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gdikgZmluYWw7
CisgICAgdm9pZCB1bmlmb3JtTWF0cml4MmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFu
IHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiB2YWx1ZSkgZmluYWw7CisgICAg
dm9pZCB1bmlmb3JtTWF0cml4M2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5z
cG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiB2YWx1ZSkgZmluYWw7CisgICAgdm9pZCB1
bmlmb3JtTWF0cml4NGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwg
R0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiB2YWx1ZSkgZmluYWw7CiAKICAgICB2b2lkIHVzZVBy
b2dyYW0oUGxhdGZvcm1HTE9iamVjdCkgZmluYWw7CiAgICAgdm9pZCB2YWxpZGF0ZVByb2dyYW0o
UGxhdGZvcm1HTE9iamVjdCkgZmluYWw7CkBAIC0yODYsMTMgKzI4OSwxMyBAQCBwdWJsaWM6CiAj
ZW5kaWYKIAogICAgIHZvaWQgdmVydGV4QXR0cmliMWYoR0NHTHVpbnQgaW5kZXgsIEdDR0xmbG9h
dCB4KSBmaW5hbDsKLSAgICB2b2lkIHZlcnRleEF0dHJpYjFmdihHQ0dMdWludCBpbmRleCwgY29u
c3QgR0NHTGZsb2F0KiB2YWx1ZXMpIGZpbmFsOworICAgIHZvaWQgdmVydGV4QXR0cmliMWZ2KEdD
R0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQsIDE+IHZhbHVlcykgZmluYWw7
CiAgICAgdm9pZCB2ZXJ0ZXhBdHRyaWIyZihHQ0dMdWludCBpbmRleCwgR0NHTGZsb2F0IHgsIEdD
R0xmbG9hdCB5KSBmaW5hbDsKLSAgICB2b2lkIHZlcnRleEF0dHJpYjJmdihHQ0dMdWludCBpbmRl
eCwgY29uc3QgR0NHTGZsb2F0KiB2YWx1ZXMpIGZpbmFsOworICAgIHZvaWQgdmVydGV4QXR0cmli
MmZ2KEdDR0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQsIDI+IHZhbHVlcykg
ZmluYWw7CiAgICAgdm9pZCB2ZXJ0ZXhBdHRyaWIzZihHQ0dMdWludCBpbmRleCwgR0NHTGZsb2F0
IHgsIEdDR0xmbG9hdCB5LCBHQ0dMZmxvYXQgeikgZmluYWw7Ci0gICAgdm9pZCB2ZXJ0ZXhBdHRy
aWIzZnYoR0NHTHVpbnQgaW5kZXgsIGNvbnN0IEdDR0xmbG9hdCogdmFsdWVzKSBmaW5hbDsKKyAg
ICB2b2lkIHZlcnRleEF0dHJpYjNmdihHQ0dMdWludCBpbmRleCwgR0NHTFNwYW48Y29uc3QgR0NH
TGZsb2F0LCAzPiB2YWx1ZXMpIGZpbmFsOwogICAgIHZvaWQgdmVydGV4QXR0cmliNGYoR0NHTHVp
bnQgaW5kZXgsIEdDR0xmbG9hdCB4LCBHQ0dMZmxvYXQgeSwgR0NHTGZsb2F0IHosIEdDR0xmbG9h
dCB3KSBmaW5hbDsKLSAgICB2b2lkIHZlcnRleEF0dHJpYjRmdihHQ0dMdWludCBpbmRleCwgY29u
c3QgR0NHTGZsb2F0KiB2YWx1ZXMpIGZpbmFsOworICAgIHZvaWQgdmVydGV4QXR0cmliNGZ2KEdD
R0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQsIDQ+IHZhbHVlcykgZmluYWw7
CiAgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJQb2ludGVyKEdDR0x1aW50IGluZGV4LCBHQ0dMaW50IHNp
emUsIEdDR0xlbnVtIHR5cGUsIEdDR0xib29sZWFuIG5vcm1hbGl6ZWQsIEdDR0xzaXplaSBzdHJp
ZGUsIEdDR0xpbnRwdHIgb2Zmc2V0KSBmaW5hbDsKIAogICAgIHZvaWQgdmlld3BvcnQoR0NHTGlu
dCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkgZmluYWw7
CkBAIC0zMjMsOCArMzI2LDggQEAgcHVibGljOgogCiAgICAgdm9pZCBibGl0RnJhbWVidWZmZXIo
R0NHTGludCBzcmNYMCwgR0NHTGludCBzcmNZMCwgR0NHTGludCBzcmNYMSwgR0NHTGludCBzcmNZ
MSwgR0NHTGludCBkc3RYMCwgR0NHTGludCBkc3RZMCwgR0NHTGludCBkc3RYMSwgR0NHTGludCBk
c3RZMSwgR0NHTGJpdGZpZWxkIG1hc2ssIEdDR0xlbnVtIGZpbHRlcikgZmluYWw7CiAgICAgdm9p
ZCBmcmFtZWJ1ZmZlclRleHR1cmVMYXllcihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGF0dGFj
aG1lbnQsIFBsYXRmb3JtR0xPYmplY3QgdGV4dHVyZSwgR0NHTGludCBsZXZlbCwgR0NHTGludCBs
YXllcikgZmluYWw7Ci0gICAgdm9pZCBpbnZhbGlkYXRlRnJhbWVidWZmZXIoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMc2l6ZWkgbnVtQXR0YWNobWVudHMsIGNvbnN0IEdDR0xlbnVtKiBhdHRhY2htZW50
cykgZmluYWw7Ci0gICAgdm9pZCBpbnZhbGlkYXRlU3ViRnJhbWVidWZmZXIoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMc2l6ZWkgbnVtQXR0YWNobWVudHMsIGNvbnN0IEdDR0xlbnVtKiBhdHRhY2htZW50
cywgR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdo
dCkgZmluYWw7CisgICAgdm9pZCBpbnZhbGlkYXRlRnJhbWVidWZmZXIoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4gYXR0YWNobWVudHMpIGZpbmFsOworICAgIHZvaWQg
aW52YWxpZGF0ZVN1YkZyYW1lYnVmZmVyKEdDR0xlbnVtIHRhcmdldCwgR0NHTFNwYW48Y29uc3Qg
R0NHTGVudW0+IGF0dGFjaG1lbnRzLCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdp
ZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KSBmaW5hbDsKICAgICB2b2lkIHJlYWRCdWZmZXIoR0NHTGVu
dW0gc3JjKSBmaW5hbDsKIAogICAgIC8vIGdldEludGVybmFsRm9ybWF0UGFyYW1ldGVyCkBAIC0z
MzQsNyArMzM3LDE1IEBAIHB1YmxpYzoKICAgICB2b2lkIHRleFN0b3JhZ2UyRChHQ0dMZW51bSB0
YXJnZXQsIEdDR0xzaXplaSBsZXZlbHMsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6
ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpIGZpbmFsOwogICAgIHZvaWQgdGV4U3RvcmFnZTNE
KEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpIGxldmVscywgR0NHTGVudW0gaW50ZXJuYWxmb3Jt
YXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoKSBm
aW5hbDsKIAorICAgIHZvaWQgdGV4SW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2
ZWwsIEdDR0xpbnQgaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhl
aWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMaW50IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0LCBH
Q0dMZW51bSB0eXBlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gcGl4ZWxzKSBmaW5hbDsKKyAg
ICB2b2lkIHRleEltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50
IGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xz
aXplaSBkZXB0aCwgR0NHTGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlw
ZSwgR0NHTGludHB0ciBvZmZzZXQpIGZpbmFsOworICAgIHZvaWQgdGV4U3ViSW1hZ2UzRChHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zm
c2V0LCBHQ0dMaW50IHpvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwg
R0NHTHNpemVpIGRlcHRoLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFu
PGNvbnN0IEdDR0x2b2lkPiBwaXhlbHMpIGZpbmFsOworICAgIHZvaWQgdGV4U3ViSW1hZ2UzRChH
Q0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5
b2Zmc2V0LCBHQ0dMaW50IHpvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdo
dCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xp
bnRwdHIgb2Zmc2V0KSBmaW5hbDsKICAgICB2b2lkIGNvcHlUZXhTdWJJbWFnZTNEKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQs
IEdDR0xpbnQgem9mZnNldCwgR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwg
R0NHTHNpemVpIGhlaWdodCkgZmluYWw7CisgICAgdm9pZCBjb21wcmVzc2VkVGV4SW1hZ2UzRChH
Q0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBH
Q0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGlu
dCBib3JkZXIsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBk
YXRhKSBmaW5hbDsKKyAgICB2b2lkIGNvbXByZXNzZWRUZXhJbWFnZTNEKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0
aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMaW50IGJvcmRlciwgR0NH
THNpemVpIGltYWdlU2l6ZSwgR0NHTGludHB0ciBvZmZzZXQpIGZpbmFsOworICAgIHZvaWQgY29t
cHJlc3NlZFRleFN1YkltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dM
aW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTGludCB6b2Zmc2V0LCBHQ0dMc2l6ZWkg
d2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGVudW0gZm9ybWF0
LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gZGF0YSkgZmlu
YWw7CisgICAgdm9pZCBjb21wcmVzc2VkVGV4U3ViSW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdD
R0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMaW50IHpv
ZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRo
LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xpbnRwdHIgb2Zmc2V0
KSBmaW5hbDsKIAogICAgIEdDR0xpbnQgZ2V0RnJhZ0RhdGFMb2NhdGlvbihQbGF0Zm9ybUdMT2Jq
ZWN0IHByb2dyYW0sIGNvbnN0IFN0cmluZyYgbmFtZSkgZmluYWw7CiAKQEAgLTM0MiwyOCArMzUz
LDI4IEBAIHB1YmxpYzoKICAgICB2b2lkIHVuaWZvcm0ydWkoR0NHTGludCBsb2NhdGlvbiwgR0NH
THVpbnQgdjAsIEdDR0x1aW50IHYxKSBmaW5hbDsKICAgICB2b2lkIHVuaWZvcm0zdWkoR0NHTGlu
dCBsb2NhdGlvbiwgR0NHTHVpbnQgdjAsIEdDR0x1aW50IHYxLCBHQ0dMdWludCB2MikgZmluYWw7
CiAgICAgdm9pZCB1bmlmb3JtNHVpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0x1aW50IHYwLCBHQ0dM
dWludCB2MSwgR0NHTHVpbnQgdjIsIEdDR0x1aW50IHYzKSBmaW5hbDsKLSAgICB2b2lkIHVuaWZv
cm0xdWl2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0x1aW50KiBkYXRhLCBHQ0dMdWludCBz
cmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkgZmluYWw7Ci0gICAgdm9pZCB1bmlmb3JtMnVp
dihHQ0dMaW50IGxvY2F0aW9uLCBjb25zdCBHQ0dMdWludCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zm
c2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpIGZpbmFsOwotICAgIHZvaWQgdW5pZm9ybTN1aXYoR0NH
TGludCBsb2NhdGlvbiwgY29uc3QgR0NHTHVpbnQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwg
R0NHTHVpbnQgc3JjTGVuZ3RoKSBmaW5hbDsKLSAgICB2b2lkIHVuaWZvcm00dWl2KEdDR0xpbnQg
bG9jYXRpb24sIGNvbnN0IEdDR0x1aW50KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1
aW50IHNyY0xlbmd0aCkgZmluYWw7Ci0gICAgdm9pZCB1bmlmb3JtTWF0cml4MngzZnYoR0NHTGlu
dCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEs
IEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKSBmaW5hbDsKLSAgICB2b2lk
IHVuaWZvcm1NYXRyaXgzeDJmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bv
c2UsIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBz
cmNMZW5ndGgpIGZpbmFsOwotICAgIHZvaWQgdW5pZm9ybU1hdHJpeDJ4NGZ2KEdDR0xpbnQgbG9j
YXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dM
dWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkgZmluYWw7Ci0gICAgdm9pZCB1bmlm
b3JtTWF0cml4NHgyZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBj
b25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVu
Z3RoKSBmaW5hbDsKLSAgICB2b2lkIHVuaWZvcm1NYXRyaXgzeDRmdihHQ0dMaW50IGxvY2F0aW9u
LCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQg
c3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpIGZpbmFsOwotICAgIHZvaWQgdW5pZm9ybU1h
dHJpeDR4M2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3Qg
R0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkg
ZmluYWw7CisgICAgdm9pZCB1bmlmb3JtMXVpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxj
b25zdCBHQ0dMdWludD4pIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybTJ1aXYoR0NHTGludCBsb2Nh
dGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTHVpbnQ+KSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm0z
dWl2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0x1aW50PikgZmluYWw7Cisg
ICAgdm9pZCB1bmlmb3JtNHVpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dM
dWludD4pIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybU1hdHJpeDJ4M2Z2KEdDR0xpbnQgbG9jYXRp
b24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiBkYXRh
KSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm1NYXRyaXgzeDJmdihHQ0dMaW50IGxvY2F0aW9uLCBH
Q0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gZGF0YSkgZmlu
YWw7CisgICAgdm9pZCB1bmlmb3JtTWF0cml4Mng0ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJv
b2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEpIGZpbmFsOwor
ICAgIHZvaWQgdW5pZm9ybU1hdHJpeDR4MmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFu
IHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiBkYXRhKSBmaW5hbDsKKyAgICB2
b2lkIHVuaWZvcm1NYXRyaXgzeDRmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFu
c3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gZGF0YSkgZmluYWw7CisgICAgdm9pZCB1
bmlmb3JtTWF0cml4NHgzZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3Nl
LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEpIGZpbmFsOwogICAgIHZvaWQgdmVydGV4
QXR0cmliSTRpKEdDR0x1aW50IGluZGV4LCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTGludCB6
LCBHQ0dMaW50IHcpIGZpbmFsOwotICAgIHZvaWQgdmVydGV4QXR0cmliSTRpdihHQ0dMdWludCBp
bmRleCwgY29uc3QgR0NHTGludCogdmFsdWVzKSBmaW5hbDsKKyAgICB2b2lkIHZlcnRleEF0dHJp
Ykk0aXYoR0NHTHVpbnQgaW5kZXgsIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQsIDQ+IHZhbHVlcykg
ZmluYWw7CiAgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJJNHVpKEdDR0x1aW50IGluZGV4LCBHQ0dMdWlu
dCB4LCBHQ0dMdWludCB5LCBHQ0dMdWludCB6LCBHQ0dMdWludCB3KSBmaW5hbDsKLSAgICB2b2lk
IHZlcnRleEF0dHJpYkk0dWl2KEdDR0x1aW50IGluZGV4LCBjb25zdCBHQ0dMdWludCogdmFsdWVz
KSBmaW5hbDsKKyAgICB2b2lkIHZlcnRleEF0dHJpYkk0dWl2KEdDR0x1aW50IGluZGV4LCBHQ0dM
U3Bhbjxjb25zdCBHQ0dMdWludCwgND4gdmFsdWVzKSBmaW5hbDsKICAgICB2b2lkIHZlcnRleEF0
dHJpYklQb2ludGVyKEdDR0x1aW50IGluZGV4LCBHQ0dMaW50IHNpemUsIEdDR0xlbnVtIHR5cGUs
IEdDR0xzaXplaSBzdHJpZGUsIEdDR0xpbnRwdHIgb2Zmc2V0KSBmaW5hbDsKIAogICAgIHZvaWQg
ZHJhd1JhbmdlRWxlbWVudHMoR0NHTGVudW0gbW9kZSwgR0NHTHVpbnQgc3RhcnQsIEdDR0x1aW50
IGVuZCwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCkg
ZmluYWw7CiAKLSAgICB2b2lkIGRyYXdCdWZmZXJzKEdDR0xzaXplaSBuLCBjb25zdCBHQ0dMZW51
bSogYnVmcykgZmluYWw7Ci0gICAgdm9pZCBjbGVhckJ1ZmZlcml2KEdDR0xlbnVtIGJ1ZmZlciwg
R0NHTGludCBkcmF3YnVmZmVyLCBjb25zdCBHQ0dMaW50KiB2YWx1ZXMsIEdDR0x1aW50IHNyY09m
ZnNldCkgZmluYWw7Ci0gICAgdm9pZCBjbGVhckJ1ZmZlcnVpdihHQ0dMZW51bSBidWZmZXIsIEdD
R0xpbnQgZHJhd2J1ZmZlciwgY29uc3QgR0NHTHVpbnQqIHZhbHVlcywgR0NHTHVpbnQgc3JjT2Zm
c2V0KSBmaW5hbDsKLSAgICB2b2lkIGNsZWFyQnVmZmVyZnYoR0NHTGVudW0gYnVmZmVyLCBHQ0dM
aW50IGRyYXdidWZmZXIsIGNvbnN0IEdDR0xmbG9hdCogdmFsdWVzLCBHQ0dMdWludCBzcmNPZmZz
ZXQpIGZpbmFsOworICAgIHZvaWQgZHJhd0J1ZmZlcnMoR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+
IGJ1ZnMpIGZpbmFsOworICAgIHZvaWQgY2xlYXJCdWZmZXJpdihHQ0dMZW51bSBidWZmZXIsIEdD
R0xpbnQgZHJhd2J1ZmZlciwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gdmFsdWVzKSBmaW5hbDsK
KyAgICB2b2lkIGNsZWFyQnVmZmVydWl2KEdDR0xlbnVtIGJ1ZmZlciwgR0NHTGludCBkcmF3YnVm
ZmVyLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdWludD4gdmFsdWVzKSBmaW5hbDsKKyAgICB2b2lkIGNs
ZWFyQnVmZmVyZnYoR0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50IGRyYXdidWZmZXIsIEdDR0xTcGFu
PGNvbnN0IEdDR0xmbG9hdD4gdmFsdWVzKSBmaW5hbDsKICAgICB2b2lkIGNsZWFyQnVmZmVyZmko
R0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50IGRyYXdidWZmZXIsIEdDR0xmbG9hdCBkZXB0aCwgR0NH
TGludCBzdGVuY2lsKSBmaW5hbDsKIAogICAgIFBsYXRmb3JtR0xPYmplY3QgY3JlYXRlUXVlcnko
KSBmaW5hbDsKQEAgLTQxNiwyNyArNDI3LDYgQEAgcHVibGljOgogICAgIFN0cmluZyBnZXRBY3Rp
dmVVbmlmb3JtQmxvY2tOYW1lKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTHVpbnQgdW5p
Zm9ybUJsb2NrSW5kZXgpIGZpbmFsOwogICAgIHZvaWQgdW5pZm9ybUJsb2NrQmluZGluZyhQbGF0
Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1aW50IHVuaWZvcm1CbG9ja0luZGV4LCBHQ0dMdWlu
dCB1bmlmb3JtQmxvY2tCaW5kaW5nKSBmaW5hbDsKIAotI2lmICFVU0UoQU5HTEUpCi0gICAgdm9p
ZCBjb21wcmVzc2VkVGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdD
R0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQs
IEdDR0xpbnQgYm9yZGVyLCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMaW50cHRyIG9mZnNldCk7
Ci0gICAgdm9pZCBjb21wcmVzc2VkVGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQg
bGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXpl
aSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBjb25zdCB2b2lkKiBzcmNEYXRhLCBHQ0dMdWludCBz
cmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aE92ZXJyaWRlKTsKLQotICAgIHZvaWQgY29tcHJl
c3NlZFRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50
IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVp
Z2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xpbnRwdHIgb2Zm
c2V0KTsKLSAgICB2b2lkIGNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xzaXpl
aSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBjb25zdCB2b2lkKiBz
cmNEYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aE92ZXJyaWRlKTsK
LSNlbmRpZgotCi0gICAgdm9pZCB1bmlmb3JtMWZ2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdD
R0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpIGZp
bmFsOwotICAgIHZvaWQgdW5pZm9ybTJmdihHQ0dMaW50IGxvY2F0aW9uLCBjb25zdCBHQ0dMZmxv
YXQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKSBmaW5hbDsK
LSAgICB2b2lkIHVuaWZvcm0zZnYoR0NHTGludCBsb2NhdGlvbiwgY29uc3QgR0NHTGZsb2F0KiBk
YXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkgZmluYWw7Ci0gICAg
dm9pZCB1bmlmb3JtNGZ2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwg
R0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpIGZpbmFsOwotCi0gICAgdm9p
ZCB1bmlmb3JtMWl2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0xpbnQqIGRhdGEsIEdDR0x1
aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKSBmaW5hbDsKLSAgICB2b2lkIHVuaWZv
cm0yaXYoR0NHTGludCBsb2NhdGlvbiwgY29uc3QgR0NHTGludCogZGF0YSwgR0NHTHVpbnQgc3Jj
T2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpIGZpbmFsOwotICAgIHZvaWQgdW5pZm9ybTNpdihH
Q0dMaW50IGxvY2F0aW9uLCBjb25zdCBHQ0dMaW50KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQs
IEdDR0x1aW50IHNyY0xlbmd0aCkgZmluYWw7Ci0gICAgdm9pZCB1bmlmb3JtNGl2KEdDR0xpbnQg
bG9jYXRpb24sIGNvbnN0IEdDR0xpbnQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVp
bnQgc3JjTGVuZ3RoKSBmaW5hbDsKLQotICAgIHZvaWQgdW5pZm9ybU1hdHJpeDJmdihHQ0dMaW50
IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwg
R0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpIGZpbmFsOwotICAgIHZvaWQg
dW5pZm9ybU1hdHJpeDNmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2Us
IGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNM
ZW5ndGgpIGZpbmFsOwotICAgIHZvaWQgdW5pZm9ybU1hdHJpeDRmdihHQ0dMaW50IGxvY2F0aW9u
LCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQg
c3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpIGZpbmFsOwogICAgIHZvaWQgZ2V0QWN0aXZl
VW5pZm9ybUJsb2NraXYoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTHVpbnQgdW5pZm9ybUJsb2NrSW5k
ZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMaW50PiBwYXJhbXMpIGZpbmFsOwogCiAj
aWYgIVVTRShBTkdMRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEJhc2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFzZS5j
cHAKaW5kZXggOWQ3Y2M5MjE2ZTdhNDJjZjBkOTcxNjQ1NzIwODUxZjE0NTUxNzBkNS4uNjM1NmY4
MWY0ODIxYjZhMWVhNmMzNTU3ZWRmMWY0ZTY4ODEzZjZiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFz
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBo
aWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHAKQEAgLTM0MSwxMSArMzQxLDExIEBAIHZvaWQgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFNoYWRlclByZWNpc2lvbkZvcm1hdChHQ0dMZW51bSBz
aGFkZXJUeXBlLCBHQ0dMCiAgICAgfQogfQogCi1ib29sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
Ojp0ZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50
ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBi
b3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgY29uc3Qgdm9pZCogcGl4ZWxz
KQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lk
dGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdD
R0xlbnVtIHR5cGUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBwaXhlbHMpCiB7Ci0gICAgaWYg
KHdpZHRoICYmIGhlaWdodCAmJiAhcGl4ZWxzKSB7CisgICAgaWYgKHdpZHRoICYmIGhlaWdodCAm
JiAhcGl4ZWxzLmRhdGEpIHsKICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoSU5WQUxJRF9WQUxV
RSk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAg
IEdDR0xlbnVtIG9wZW5HTEZvcm1hdCA9IGZvcm1hdDsKQEAgLTQwMyw4ICs0MDMsNyBAQCBib29s
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp0ZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NH
TGludCBsZXZlbCwgR0NHTGVudQogICAgICAgICB9CiAgICAgfQogCi0gICAgdGV4SW1hZ2UyRERp
cmVjdCh0YXJnZXQsIGxldmVsLCBvcGVuR0xJbnRlcm5hbEZvcm1hdCwgd2lkdGgsIGhlaWdodCwg
Ym9yZGVyLCBvcGVuR0xGb3JtYXQsIHR5cGUsIHBpeGVscyk7Ci0gICAgcmV0dXJuIHRydWU7Cisg
ICAgdGV4SW1hZ2UyRERpcmVjdCh0YXJnZXQsIGxldmVsLCBvcGVuR0xJbnRlcm5hbEZvcm1hdCwg
d2lkdGgsIGhlaWdodCwgYm9yZGVyLCBvcGVuR0xGb3JtYXQsIHR5cGUsIHBpeGVscy5kYXRhKTsK
IH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6ZGVwdGhSYW5nZShHQ0dMY2xhbXBm
IHpOZWFyLCBHQ0dMY2xhbXBmIHpGYXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb21tb24uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdM
T3BlbkdMQ29tbW9uLmNwcAppbmRleCBhYmI3ZTI1YTA2ZjA4NWNjZWFjZmY1YWI2ZTgyMDQ1N2Nl
OWEyZDkzLi5iYzQ0Y2Q1Nzc4ODY3MjAzOWFlYTRmNTk5OTZlNGQ5NGUxYzFhMGZlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0xDb21tb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvbW1vbi5jcHAKQEAgLTU1MiwyMCAr
NTUyLDIwIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmJ1ZmZlckRhdGEoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMc2l6ZWlwdHIgc2l6ZSwgR0NHCiAgICAgOjpnbEJ1ZmZlckRhdGEodGFy
Z2V0LCBzaXplLCAwLCB1c2FnZSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OmJ1ZmZlckRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWlwdHIgc2l6ZSwgY29uc3Qgdm9p
ZCogZGF0YSwgR0NHTGVudW0gdXNhZ2UpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpi
dWZmZXJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTFNwYW48Y29uc3Qgdm9pZD4gZGF0YSwgR0NH
TGVudW0gdXNhZ2UpCiB7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgOjpnbEJ1ZmZlckRhdGEodGFyZ2V0LCBzaXplLCBkYXRhLCB1c2FnZSk7
CisgICAgOjpnbEJ1ZmZlckRhdGEodGFyZ2V0LCBkYXRhLmJ1ZlNpemUsIGRhdGEuZGF0YSwgdXNh
Z2UpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpidWZmZXJTdWJEYXRhKEdD
R0xlbnVtIHRhcmdldCwgR0NHTGludHB0ciBvZmZzZXQsIEdDR0xzaXplaXB0ciBzaXplLCBjb25z
dCB2b2lkKiBkYXRhKQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6YnVmZmVyU3ViRGF0
YShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnRwdHIgb2Zmc2V0LCBHQ0dMU3Bhbjxjb25zdCBHQ0dM
dm9pZD4gZGF0YSkKIHsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICA6OmdsQnVmZmVyU3ViRGF0YSh0YXJnZXQsIG9mZnNldCwgc2l6ZSwgZGF0
YSk7CisgICAgOjpnbEJ1ZmZlclN1YkRhdGEodGFyZ2V0LCBvZmZzZXQsIGRhdGEuYnVmU2l6ZSwg
ZGF0YS5kYXRhKTsKIH0KIAogR0NHTGVudW0gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNoZWNr
RnJhbWVidWZmZXJTdGF0dXMoR0NHTGVudW0gdGFyZ2V0KQpAQCAtMTQxNSwxMiArMTQxNSwxMiBA
QCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMWYoR0NHTGludCBsb2NhdGlv
biwgR0NHTGZsb2F0IHYwKQogICAgIDo6Z2xVbmlmb3JtMWYobG9jYXRpb24sIHYwKTsKIH0KIAot
dm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTFmdihHQ0dMaW50IGxvY2F0aW9u
LCBHQ0dMc2l6ZWkgc2l6ZSwgY29uc3QgR0NHTGZsb2F0KiBhcnJheSkKK3ZvaWQgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OnVuaWZvcm0xZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29u
c3QgR0NHTGZsb2F0PiBhcnJheSkKIHsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQog
ICAgICAgICByZXR1cm47CiAKLSAgICA6OmdsVW5pZm9ybTFmdihsb2NhdGlvbiwgc2l6ZSwgYXJy
YXkpOworICAgIDo6Z2xVbmlmb3JtMWZ2KGxvY2F0aW9uLCBhcnJheS5idWZTaXplLCBhcnJheS5k
YXRhKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTJmKEdDR0xp
bnQgbG9jYXRpb24sIEdDR0xmbG9hdCB2MCwgR0NHTGZsb2F0IHYxKQpAQCAtMTQzMSwxMyArMTQz
MSwxMyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMmYoR0NHTGludCBs
b2NhdGlvbiwgR0NHTGZsb2F0IHYwLCBHQ0dMZmxvYQogICAgIDo6Z2xVbmlmb3JtMmYobG9jYXRp
b24sIHYwLCB2MSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0y
ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIHNpemUsIGNvbnN0IEdDR0xmbG9hdCogYXJy
YXkpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMmZ2KEdDR0xpbnQgbG9j
YXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gYXJyYXkpCiB7Ci0gICAgLy8gRklYTUU6
IGxlbmd0aCBuZWVkcyB0byBiZSBhIG11bHRpcGxlIG9mIDIuCisgICAgQVNTRVJUKCEoYXJyYXku
YnVmU2l6ZSAlIDIpKTsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICA6OmdsVW5pZm9ybTJmdihsb2NhdGlvbiwgc2l6ZSwgYXJyYXkpOworICAg
IDo6Z2xVbmlmb3JtMmZ2KGxvY2F0aW9uLCBhcnJheS5idWZTaXplIC8gMiwgYXJyYXkuZGF0YSk7
CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0zZihHQ0dMaW50IGxv
Y2F0aW9uLCBHQ0dMZmxvYXQgdjAsIEdDR0xmbG9hdCB2MSwgR0NHTGZsb2F0IHYyKQpAQCAtMTQ0
OCwxMyArMTQ0OCwxMyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtM2Yo
R0NHTGludCBsb2NhdGlvbiwgR0NHTGZsb2F0IHYwLCBHQ0dMZmxvYQogICAgIDo6Z2xVbmlmb3Jt
M2YobG9jYXRpb24sIHYwLCB2MSwgdjIpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjp1bmlmb3JtM2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBzaXplLCBjb25zdCBH
Q0dMZmxvYXQqIGFycmF5KQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTNm
dihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGFycmF5KQogewot
ICAgIC8vIEZJWE1FOiBsZW5ndGggbmVlZHMgdG8gYmUgYSBtdWx0aXBsZSBvZiAzLgorICAgIEFT
U0VSVCghKGFycmF5LmJ1ZlNpemUgJSAzKSk7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQo
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgOjpnbFVuaWZvcm0zZnYobG9jYXRpb24sIHNpemUs
IGFycmF5KTsKKyAgICA6OmdsVW5pZm9ybTNmdihsb2NhdGlvbiwgYXJyYXkuYnVmU2l6ZSAvIDMs
IGFycmF5LmRhdGEpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3Jt
NGYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGZsb2F0IHYwLCBHQ0dMZmxvYXQgdjEsIEdDR0xmbG9h
dCB2MiwgR0NHTGZsb2F0IHYzKQpAQCAtMTQ2NSwxMyArMTQ2NSwxMyBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjp1bmlmb3JtNGYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGZsb2F0IHYw
LCBHQ0dMZmxvYQogICAgIDo6Z2xVbmlmb3JtNGYobG9jYXRpb24sIHYwLCB2MSwgdjIsIHYzKTsK
IH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTRmdihHQ0dMaW50IGxv
Y2F0aW9uLCBHQ0dMc2l6ZWkgc2l6ZSwgY29uc3QgR0NHTGZsb2F0KiBhcnJheSkKK3ZvaWQgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm00ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNw
YW48Y29uc3QgR0NHTGZsb2F0PiBhcnJheSkKIHsKLSAgICAvLyBGSVhNRTogbGVuZ3RoIG5lZWRz
IHRvIGJlIGEgbXVsdGlwbGUgb2YgNC4KKyAgICBBU1NFUlQoIShhcnJheS5idWZTaXplICUgNCkp
OwogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAg
IDo6Z2xVbmlmb3JtNGZ2KGxvY2F0aW9uLCBzaXplLCBhcnJheSk7CisgICAgOjpnbFVuaWZvcm00
ZnYobG9jYXRpb24sIGFycmF5LmJ1ZlNpemUgLyA0LCBhcnJheS5kYXRhKTsKIH0KIAogdm9pZCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTFpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xp
bnQgdjApCkBAIC0xNDgyLDEyICsxNDgyLDEyIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OnVuaWZvcm0xaShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMaW50IHYwKQogICAgIDo6Z2xVbmlm
b3JtMWkobG9jYXRpb24sIHYwKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
dW5pZm9ybTFpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgc2l6ZSwgY29uc3QgR0NHTGlu
dCogYXJyYXkpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMWl2KEdDR0xp
bnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+IGFycmF5KQogewogICAgIGlmICgh
bWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIDo6Z2xVbmlmb3Jt
MWl2KGxvY2F0aW9uLCBzaXplLCBhcnJheSk7CisgICAgOjpnbFVuaWZvcm0xaXYobG9jYXRpb24s
IGFycmF5LmJ1ZlNpemUsIGFycmF5LmRhdGEpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjp1bmlmb3JtMmkoR0NHTGludCBsb2NhdGlvbiwgR0NHTGludCB2MCwgR0NHTGludCB2
MSkKQEAgLTE0OTgsMTMgKzE0OTgsMTMgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
dW5pZm9ybTJpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xpbnQgdjAsIEdDR0xpbnQgdjEKICAgICA6
OmdsVW5pZm9ybTJpKGxvY2F0aW9uLCB2MCwgdjEpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjp1bmlmb3JtMml2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBzaXplLCBj
b25zdCBHQ0dMaW50KiBhcnJheSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZv
cm0yaXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gYXJyYXkpCiB7
Ci0gICAgLy8gRklYTUU6IGxlbmd0aCBuZWVkcyB0byBiZSBhIG11bHRpcGxlIG9mIDIuCisgICAg
QVNTRVJUKCEoYXJyYXkuYnVmU2l6ZSAlIDIpKTsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVu
dCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICA6OmdsVW5pZm9ybTJpdihsb2NhdGlvbiwgc2l6
ZSwgYXJyYXkpOworICAgIDo6Z2xVbmlmb3JtMml2KGxvY2F0aW9uLCBhcnJheS5idWZTaXplIC8g
MiwgYXJyYXkuZGF0YSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZv
cm0zaShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMaW50IHYwLCBHQ0dMaW50IHYxLCBHQ0dMaW50IHYy
KQpAQCAtMTUxNSwxMyArMTUxNSwxMyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1
bmlmb3JtM2koR0NHTGludCBsb2NhdGlvbiwgR0NHTGludCB2MCwgR0NHTGludCB2MQogICAgIDo6
Z2xVbmlmb3JtM2kobG9jYXRpb24sIHYwLCB2MSwgdjIpOwogfQogCi12b2lkIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjp1bmlmb3JtM2l2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBzaXpl
LCBjb25zdCBHQ0dMaW50KiBhcnJheSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVu
aWZvcm0zaXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gYXJyYXkp
CiB7Ci0gICAgLy8gRklYTUU6IGxlbmd0aCBuZWVkcyB0byBiZSBhIG11bHRpcGxlIG9mIDMuCisg
ICAgQVNTRVJUKCEoYXJyYXkuYnVmU2l6ZSAlIDMpKTsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3Vy
cmVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICA6OmdsVW5pZm9ybTNpdihsb2NhdGlvbiwg
c2l6ZSwgYXJyYXkpOworICAgIDo6Z2xVbmlmb3JtM2l2KGxvY2F0aW9uLCBhcnJheS5idWZTaXpl
IC8gMywgYXJyYXkuZGF0YSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVu
aWZvcm00aShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMaW50IHYwLCBHQ0dMaW50IHYxLCBHQ0dMaW50
IHYyLCBHQ0dMaW50IHYzKQpAQCAtMTUzMiw0MCArMTUzMiw0MCBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjp1bmlmb3JtNGkoR0NHTGludCBsb2NhdGlvbiwgR0NHTGludCB2MCwgR0NH
TGludCB2MQogICAgIDo6Z2xVbmlmb3JtNGkobG9jYXRpb24sIHYwLCB2MSwgdjIsIHYzKTsKIH0K
IAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTRpdihHQ0dMaW50IGxvY2F0
aW9uLCBHQ0dMc2l6ZWkgc2l6ZSwgY29uc3QgR0NHTGludCogYXJyYXkpCit2b2lkIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjp1bmlmb3JtNGl2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNv
bnN0IEdDR0xpbnQ+IGFycmF5KQogewotICAgIC8vIEZJWE1FOiBsZW5ndGggbmVlZHMgdG8gYmUg
YSBtdWx0aXBsZSBvZiA0LgorICAgIEFTU0VSVCghKGFycmF5LmJ1ZlNpemUgJSA0KSk7CiAgICAg
aWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgOjpnbFVu
aWZvcm00aXYobG9jYXRpb24sIHNpemUsIGFycmF5KTsKKyAgICA6OmdsVW5pZm9ybTRpdihsb2Nh
dGlvbiwgYXJyYXkuYnVmU2l6ZSAvIDQsIGFycmF5LmRhdGEpOwogfQogCi12b2lkIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4MmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xz
aXplaSBzaXplLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogYXJyYXkp
Cit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4MmZ2KEdDR0xpbnQg
bG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0
PiBhcnJheSkKIHsKLSAgICAvLyBGSVhNRTogbGVuZ3RoIG5lZWRzIHRvIGJlIGEgbXVsdGlwbGUg
b2YgNC4KKyAgICBBU1NFUlQoIShhcnJheS5idWZTaXplICUgNCkpOwogICAgIGlmICghbWFrZUNv
bnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIDo6Z2xVbmlmb3JtTWF0cml4
MmZ2KGxvY2F0aW9uLCBzaXplLCB0cmFuc3Bvc2UsIGFycmF5KTsKKyAgICA6OmdsVW5pZm9ybU1h
dHJpeDJmdihsb2NhdGlvbiwgYXJyYXkuYnVmU2l6ZSAvIDQsIHRyYW5zcG9zZSwgYXJyYXkuZGF0
YSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXgzZnYo
R0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIHNpemUsIEdDR0xib29sZWFuIHRyYW5zcG9zZSwg
Y29uc3QgR0NHTGZsb2F0KiBhcnJheSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVu
aWZvcm1NYXRyaXgzZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBH
Q0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGFycmF5KQogewotICAgIC8vIEZJWE1FOiBsZW5ndGgg
bmVlZHMgdG8gYmUgYSBtdWx0aXBsZSBvZiA5LgorICAgIEFTU0VSVCghKGFycmF5LmJ1ZlNpemUg
JSA5KSk7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgOjpnbFVuaWZvcm1NYXRyaXgzZnYobG9jYXRpb24sIHNpemUsIHRyYW5zcG9zZSwgYXJy
YXkpOworICAgIDo6Z2xVbmlmb3JtTWF0cml4M2Z2KGxvY2F0aW9uLCBhcnJheS5idWZTaXplIC8g
OSwgdHJhbnNwb3NlLCBhcnJheS5kYXRhKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6dW5pZm9ybU1hdHJpeDRmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgc2l6ZSwg
R0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHQ0dMZmxvYXQqIGFycmF5KQordm9pZCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybU1hdHJpeDRmdihHQ0dMaW50IGxvY2F0aW9uLCBH
Q0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gYXJyYXkpCiB7
Ci0gICAgLy8gRklYTUU6IGxlbmd0aCBuZWVkcyB0byBiZSBhIG11bHRpcGxlIG9mIDE2LgorICAg
IEFTU0VSVCghKGFycmF5LmJ1ZlNpemUgJSAxNikpOwogICAgIGlmICghbWFrZUNvbnRleHRDdXJy
ZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIDo6Z2xVbmlmb3JtTWF0cml4NGZ2KGxvY2F0
aW9uLCBzaXplLCB0cmFuc3Bvc2UsIGFycmF5KTsKKyAgICA6OmdsVW5pZm9ybU1hdHJpeDRmdihs
b2NhdGlvbiwgYXJyYXkuYnVmU2l6ZSAvIDE2LCB0cmFuc3Bvc2UsIGFycmF5LmRhdGEpOwogfQog
CiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1c2VQcm9ncmFtKFBsYXRmb3JtR0xPYmpl
Y3QgcHJvZ3JhbSkKQEAgLTE1OTQsMTIgKzE1OTQsMTIgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6dmVydGV4QXR0cmliMWYoR0NHTHVpbnQgaW5kZXgsIEdDR0xmbG9hdCB2MCkKICAg
ICA6OmdsVmVydGV4QXR0cmliMWYoaW5kZXgsIHYwKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6dmVydGV4QXR0cmliMWZ2KEdDR0x1aW50IGluZGV4LCBjb25zdCBHQ0dMZmxv
YXQqIGFycmF5KQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliMWZ2
KEdDR0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQsIDE+IGFycmF5KQogewog
ICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIDo6
Z2xWZXJ0ZXhBdHRyaWIxZnYoaW5kZXgsIGFycmF5KTsKKyAgICA6OmdsVmVydGV4QXR0cmliMWZ2
KGluZGV4LCBhcnJheS5kYXRhKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
dmVydGV4QXR0cmliMmYoR0NHTHVpbnQgaW5kZXgsIEdDR0xmbG9hdCB2MCwgR0NHTGZsb2F0IHYx
KQpAQCAtMTYxMCwxMiArMTYxMCwxMiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2
ZXJ0ZXhBdHRyaWIyZihHQ0dMdWludCBpbmRleCwgR0NHTGZsb2F0IHYwLCBHQ0dMZgogICAgIDo6
Z2xWZXJ0ZXhBdHRyaWIyZihpbmRleCwgdjAsIHYxKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6dmVydGV4QXR0cmliMmZ2KEdDR0x1aW50IGluZGV4LCBjb25zdCBHQ0dMZmxv
YXQqIGFycmF5KQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliMmZ2
KEdDR0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQsIDI+IGFycmF5KQogewog
ICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIDo6
Z2xWZXJ0ZXhBdHRyaWIyZnYoaW5kZXgsIGFycmF5KTsKKyAgICA6OmdsVmVydGV4QXR0cmliMmZ2
KGluZGV4LCBhcnJheS5kYXRhKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
dmVydGV4QXR0cmliM2YoR0NHTHVpbnQgaW5kZXgsIEdDR0xmbG9hdCB2MCwgR0NHTGZsb2F0IHYx
LCBHQ0dMZmxvYXQgdjIpCkBAIC0xNjI2LDEyICsxNjI2LDEyIEBAIHZvaWQgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYjNmKEdDR0x1aW50IGluZGV4LCBHQ0dMZmxvYXQgdjAs
IEdDR0xmCiAgICAgOjpnbFZlcnRleEF0dHJpYjNmKGluZGV4LCB2MCwgdjEsIHYyKTsKIH0KIAot
dm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliM2Z2KEdDR0x1aW50IGlu
ZGV4LCBjb25zdCBHQ0dMZmxvYXQqIGFycmF5KQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6dmVydGV4QXR0cmliM2Z2KEdDR0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxv
YXQsIDM+IGFycmF5KQogewogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIDo6Z2xWZXJ0ZXhBdHRyaWIzZnYoaW5kZXgsIGFycmF5KTsKKyAgICA6
OmdsVmVydGV4QXR0cmliM2Z2KGluZGV4LCBhcnJheS5kYXRhKTsKIH0KIAogdm9pZCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliNGYoR0NHTHVpbnQgaW5kZXgsIEdDR0xmbG9h
dCB2MCwgR0NHTGZsb2F0IHYxLCBHQ0dMZmxvYXQgdjIsIEdDR0xmbG9hdCB2MykKQEAgLTE2NDIs
MTIgKzE2NDIsMTIgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmli
NGYoR0NHTHVpbnQgaW5kZXgsIEdDR0xmbG9hdCB2MCwgR0NHTGYKICAgICA6OmdsVmVydGV4QXR0
cmliNGYoaW5kZXgsIHYwLCB2MSwgdjIsIHYzKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6dmVydGV4QXR0cmliNGZ2KEdDR0x1aW50IGluZGV4LCBjb25zdCBHQ0dMZmxvYXQq
IGFycmF5KQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliNGZ2KEdD
R0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQsIDQ+IGFycmF5KQogewogICAg
IGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIDo6Z2xW
ZXJ0ZXhBdHRyaWI0ZnYoaW5kZXgsIGFycmF5KTsKKyAgICA6OmdsVmVydGV4QXR0cmliNGZ2KGlu
ZGV4LCBhcnJheS5kYXRhKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVy
dGV4QXR0cmliUG9pbnRlcihHQ0dMdWludCBpbmRleCwgR0NHTGludCBzaXplLCBHQ0dMZW51bSB0
eXBlLCBHQ0dMYm9vbGVhbiBub3JtYWxpemVkLCBHQ0dMc2l6ZWkgc3RyaWRlLCBHQ0dMaW50cHRy
IG9mZnNldCkKQEAgLTIwNTUsNyArMjA1NSw3IEBAIEdDR0xzaXplaXB0ciBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6Z2V0VmVydGV4QXR0cmliT2Zmc2V0KEdDR0x1aW50IGluZGV4LCBHQ0dMCiAg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PEdDR0xzaXplaXB0cj4ocmVpbnRlcnByZXRfY2FzdDxpbnRw
dHJfdD4ocG9pbnRlcikpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp0ZXhT
dWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2ZmLCBH
Q0dMaW50IHlvZmYsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0g
Zm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBjb25zdCB2b2lkKiBwaXhlbHMpCit2b2lkIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjp0ZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBs
ZXZlbCwgR0NHTGludCB4b2ZmLCBHQ0dMaW50IHlvZmYsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNp
emVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bhbjxjb25z
dCBHQ0dMdm9pZD4gcGl4ZWxzKQogewogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAg
ICAgICAgIHJldHVybjsKQEAgLTIwODMsMjUgKzIwODMsMjUgQEAgdm9pZCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6dGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWws
IEdDR0wKICAgICB9CiAKICAgICAvLyBGSVhNRTogd2Ugd2lsbCBuZWVkIHRvIGRlYWwgd2l0aCBQ
aXhlbFN0b3JlIHBhcmFtcyB3aGVuIGRlYWxpbmcgd2l0aCBpbWFnZSBidWZmZXJzIHRoYXQgZGlm
ZmVyIGZyb20gdGhlIHN1YmltYWdlIHNpemUuCi0gICAgOjpnbFRleFN1YkltYWdlMkQodGFyZ2V0
LCBsZXZlbCwgeG9mZiwgeW9mZiwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBwaXhlbHMp
OworICAgIDo6Z2xUZXhTdWJJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIHhvZmYsIHlvZmYsIHdpZHRo
LCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgcGl4ZWxzLmRhdGEpOwogICAgIG1fc3RhdGUudGV4dHVy
ZVNlZWRDb3VudC5hZGQobV9zdGF0ZS5jdXJyZW50Qm91bmRUZXh0dXJlKCkpOwogfQogCi12b2lk
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjb21wcmVzc2VkVGV4SW1hZ2UyRChHQ0dMZW51bSB0
YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkg
d2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMc2l6ZWkgaW1hZ2VT
aXplLCBjb25zdCB2b2lkKiBkYXRhKQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y29t
cHJlc3NlZFRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51
bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dM
aW50IGJvcmRlciwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+
IGRhdGEpCiB7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgOjpnbENvbXByZXNzZWRUZXhJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIGludGVybmFs
Zm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIsIGltYWdlU2l6ZSwgZGF0YSk7CisgICAgOjpn
bENvbXByZXNzZWRUZXhJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0
aCwgaGVpZ2h0LCBib3JkZXIsIGltYWdlU2l6ZSwgZGF0YS5kYXRhKTsKICAgICBtX3N0YXRlLnRl
eHR1cmVTZWVkQ291bnQuYWRkKG1fc3RhdGUuY3VycmVudEJvdW5kVGV4dHVyZSgpKTsKIH0KIAot
dm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y29tcHJlc3NlZFRleFN1YkltYWdlMkQoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9m
ZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQs
IEdDR0xzaXplaSBpbWFnZVNpemUsIGNvbnN0IHZvaWQqIGRhdGEpCit2b2lkIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdD
R0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkg
d2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTHNpemVpIGltYWdl
U2l6ZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEpCiB7CiAgICAgaWYgKCFtYWtlQ29u
dGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgOjpnbENvbXByZXNzZWRUZXhT
dWJJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQs
IGZvcm1hdCwgaW1hZ2VTaXplLCBkYXRhKTsKKyAgICA6OmdsQ29tcHJlc3NlZFRleFN1YkltYWdl
MkQodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0
LCBpbWFnZVNpemUsIGRhdGEuZGF0YSk7CiAgICAgbV9zdGF0ZS50ZXh0dXJlU2VlZENvdW50LmFk
ZChtX3N0YXRlLmN1cnJlbnRCb3VuZFRleHR1cmUoKSk7CiB9CiAKQEAgLTIzOTUsMTcgKzIzOTUs
MTUgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6ZnJhbWVidWZmZXJUZXh0dXJlTGF5
ZXIoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bQogICAgIFVOVVNFRF9QQVJBTShsYXllcik7CiB9
CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmludmFsaWRhdGVGcmFtZWJ1ZmZlcihH
Q0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaSBudW1BdHRhY2htZW50cywgY29uc3QgR0NHTGVudW0q
IGF0dGFjaG1lbnRzKQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6aW52YWxpZGF0ZUZy
YW1lYnVmZmVyKEdDR0xlbnVtIHRhcmdldCwgR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+IGF0dGFj
aG1lbnRzKQogewogICAgIFVOVVNFRF9QQVJBTSh0YXJnZXQpOwotICAgIFVOVVNFRF9QQVJBTShu
dW1BdHRhY2htZW50cyk7CiAgICAgVU5VU0VEX1BBUkFNKGF0dGFjaG1lbnRzKTsKIH0KIAotdm9p
ZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6aW52YWxpZGF0ZVN1YkZyYW1lYnVmZmVyKEdDR0xl
bnVtIHRhcmdldCwgR0NHTHNpemVpIG51bUF0dGFjaG1lbnRzLCBjb25zdCBHQ0dMZW51bSogYXR0
YWNobWVudHMsIEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXpl
aSBoZWlnaHQpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjppbnZhbGlkYXRlU3ViRnJh
bWVidWZmZXIoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4gYXR0YWNo
bWVudHMsIEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBo
ZWlnaHQpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHRhcmdldCk7Ci0gICAgVU5VU0VEX1BBUkFNKG51
bUF0dGFjaG1lbnRzKTsKICAgICBVTlVTRURfUEFSQU0oYXR0YWNobWVudHMpOwogICAgIFVOVVNF
RF9QQVJBTSh4KTsKICAgICBVTlVTRURfUEFSQU0oeSk7CkBAIC0yNTI5LDkwICsyNTI3LDcwIEBA
IHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm00dWkoR0NHTGludCBsb2NhdGlv
biwgR0NHTHVpbnQgdjAsIEdDR0x1aW50CiAgICAgVU5VU0VEX1BBUkFNKHYzKTsKIH0KIAotdm9p
ZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTF1aXYoR0NHTGludCBsb2NhdGlvbiwg
Y29uc3QgR0NHTHVpbnQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVu
Z3RoKQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTF1aXYoR0NHTGludCBs
b2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTHVpbnQ+IGRhdGEpCiB7CiAgICAgVU5VU0VEX1BB
UkFNKGxvY2F0aW9uKTsKICAgICBVTlVTRURfUEFSQU0oZGF0YSk7Ci0gICAgVU5VU0VEX1BBUkFN
KHNyY09mZnNldCk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY0xlbmd0aCk7CiB9CiAKLXZvaWQgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0ydWl2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0
IEdDR0x1aW50KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkK
K3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0ydWl2KEdDR0xpbnQgbG9jYXRp
b24sIEdDR0xTcGFuPGNvbnN0IEdDR0x1aW50PiBkYXRhKQogewogICAgIFVOVVNFRF9QQVJBTShs
b2NhdGlvbik7CiAgICAgVU5VU0VEX1BBUkFNKGRhdGEpOwotICAgIFVOVVNFRF9QQVJBTShzcmNP
ZmZzZXQpOwotICAgIFVOVVNFRF9QQVJBTShzcmNMZW5ndGgpOwogfQogCi12b2lkIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjp1bmlmb3JtM3VpdihHQ0dMaW50IGxvY2F0aW9uLCBjb25zdCBHQ0dM
dWludCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCit2b2lk
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtM3VpdihHQ0dMaW50IGxvY2F0aW9uLCBH
Q0dMU3Bhbjxjb25zdCBHQ0dMdWludD4gZGF0YSkKIHsKICAgICBVTlVTRURfUEFSQU0obG9jYXRp
b24pOwogICAgIFVOVVNFRF9QQVJBTShkYXRhKTsKLSAgICBVTlVTRURfUEFSQU0oc3JjT2Zmc2V0
KTsKLSAgICBVTlVTRURfUEFSQU0oc3JjTGVuZ3RoKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6dW5pZm9ybTR1aXYoR0NHTGludCBsb2NhdGlvbiwgY29uc3QgR0NHTHVpbnQq
IGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQordm9pZCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTR1aXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNw
YW48Y29uc3QgR0NHTHVpbnQ+IGRhdGEpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGxvY2F0aW9uKTsK
ICAgICBVTlVTRURfUEFSQU0oZGF0YSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY09mZnNldCk7Ci0g
ICAgVU5VU0VEX1BBUkFNKHNyY0xlbmd0aCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OnVuaWZvcm1NYXRyaXgyeDNmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0
cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dM
dWludCBzcmNMZW5ndGgpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0
cml4MngzZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bh
bjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGxvY2F0aW9uKTsK
ICAgICBVTlVTRURfUEFSQU0odHJhbnNwb3NlKTsKICAgICBVTlVTRURfUEFSQU0oZGF0YSk7Ci0g
ICAgVU5VU0VEX1BBUkFNKHNyY09mZnNldCk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY0xlbmd0aCk7
CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXgzeDJmdihH
Q0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCog
ZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCit2b2lkIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4M3gyZnYoR0NHTGludCBsb2NhdGlvbiwg
R0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEpCiB7
CiAgICAgVU5VU0VEX1BBUkFNKGxvY2F0aW9uKTsKICAgICBVTlVTRURfUEFSQU0odHJhbnNwb3Nl
KTsKICAgICBVTlVTRURfUEFSQU0oZGF0YSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY09mZnNldCk7
Ci0gICAgVU5VU0VEX1BBUkFNKHNyY0xlbmd0aCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXgyeDRmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVh
biB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBH
Q0dMdWludCBzcmNMZW5ndGgpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3Jt
TWF0cml4Mng0ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dM
U3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGxvY2F0aW9u
KTsKICAgICBVTlVTRURfUEFSQU0odHJhbnNwb3NlKTsKICAgICBVTlVTRURfUEFSQU0oZGF0YSk7
Ci0gICAgVU5VU0VEX1BBUkFNKHNyY09mZnNldCk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY0xlbmd0
aCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXg0eDJm
dihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9h
dCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCit2b2lkIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4NHgyZnYoR0NHTGludCBsb2NhdGlv
biwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEp
CiB7CiAgICAgVU5VU0VEX1BBUkFNKGxvY2F0aW9uKTsKICAgICBVTlVTRURfUEFSQU0odHJhbnNw
b3NlKTsKICAgICBVTlVTRURfUEFSQU0oZGF0YSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY09mZnNl
dCk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY0xlbmd0aCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXgzeDRmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9v
bGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0
LCBHQ0dMdWludCBzcmNMZW5ndGgpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlm
b3JtTWF0cml4M3g0ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBH
Q0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGxvY2F0
aW9uKTsKICAgICBVTlVTRURfUEFSQU0odHJhbnNwb3NlKTsKICAgICBVTlVTRURfUEFSQU0oZGF0
YSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY09mZnNldCk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY0xl
bmd0aCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXg0
eDNmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xm
bG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCit2b2lk
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4NHgzZnYoR0NHTGludCBsb2Nh
dGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRh
dGEpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGxvY2F0aW9uKTsKICAgICBVTlVTRURfUEFSQU0odHJh
bnNwb3NlKTsKICAgICBVTlVTRURfUEFSQU0oZGF0YSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY09m
ZnNldCk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY0xlbmd0aCk7CiB9CiAKIHZvaWQgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYkk0aShHQ0dMdWludCBpbmRleCwgR0NHTGludCB4
LCBHQ0dMaW50IHksIEdDR0xpbnQgeiwgR0NHTGludCB3KQpAQCAtMjYyNCw3ICsyNjAyLDcgQEAg
dm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliSTRpKEdDR0x1aW50IGlu
ZGV4LCBHQ0dMaW50IHgsIEdDR0xpbnQKICAgICBVTlVTRURfUEFSQU0odyk7CiB9CiAKLXZvaWQg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYkk0aXYoR0NHTHVpbnQgaW5kZXgs
IGNvbnN0IEdDR0xpbnQqIHZhbHVlcykKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZl
cnRleEF0dHJpYkk0aXYoR0NHTHVpbnQgaW5kZXgsIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQsIDQ+
IHZhbHVlcykKIHsKICAgICBVTlVTRURfUEFSQU0oaW5kZXgpOwogICAgIFVOVVNFRF9QQVJBTSh2
YWx1ZXMpOwpAQCAtMjYzOSw3ICsyNjE3LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6dmVydGV4QXR0cmliSTR1aShHQ0dMdWludCBpbmRleCwgR0NHTHVpbnQgeCwgR0NHTHUKICAg
ICBVTlVTRURfUEFSQU0odyk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZl
cnRleEF0dHJpYkk0dWl2KEdDR0x1aW50IGluZGV4LCBjb25zdCBHQ0dMdWludCogdmFsdWVzKQor
dm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliSTR1aXYoR0NHTHVpbnQg
aW5kZXgsIEdDR0xTcGFuPGNvbnN0IEdDR0x1aW50LCA0PiB2YWx1ZXMpCiB7CiAgICAgVU5VU0VE
X1BBUkFNKGluZGV4KTsKICAgICBVTlVTRURfUEFSQU0odmFsdWVzKTsKQEAgLTI2NjQsMzQgKzI2
NDIsMzAgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6ZHJhd1JhbmdlRWxlbWVudHMo
R0NHTGVudW0gbW9kZSwgR0NHTHVpbnQgc3RhcnQsIEcKICAgICBVTlVTRURfUEFSQU0ob2Zmc2V0
KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6ZHJhd0J1ZmZlcnMoR0NHTHNp
emVpIG4sIGNvbnN0IEdDR0xlbnVtKiBidWZzKQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6ZHJhd0J1ZmZlcnMoR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+IGJ1ZnMpCiB7Ci0gICAgVU5V
U0VEX1BBUkFNKG4pOwogICAgIFVOVVNFRF9QQVJBTShidWZzKTsKIH0KIAotdm9pZCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6Y2xlYXJCdWZmZXJpdihHQ0dMZW51bSBidWZmZXIsIEdDR0xpbnQg
ZHJhd2J1ZmZlciwgY29uc3QgR0NHTGludCogdmFsdWVzLCBHQ0dMdWludCBzcmNPZmZzZXQpCit2
b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjbGVhckJ1ZmZlcml2KEdDR0xlbnVtIGJ1ZmZl
ciwgR0NHTGludCBkcmF3YnVmZmVyLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50PiB2YWx1ZXMpCiB7
CiAgICAgVU5VU0VEX1BBUkFNKGJ1ZmZlcik7CiAgICAgVU5VU0VEX1BBUkFNKGRyYXdidWZmZXIp
OwogICAgIFVOVVNFRF9QQVJBTSh2YWx1ZXMpOwotICAgIFVOVVNFRF9QQVJBTShzcmNPZmZzZXQp
OwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjbGVhckJ1ZmZlcnVpdihHQ0dM
ZW51bSBidWZmZXIsIEdDR0xpbnQgZHJhd2J1ZmZlciwgY29uc3QgR0NHTHVpbnQqIHZhbHVlcywg
R0NHTHVpbnQgc3JjT2Zmc2V0KQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y2xlYXJC
dWZmZXJ1aXYoR0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50IGRyYXdidWZmZXIsIEdDR0xTcGFuPGNv
bnN0IEdDR0x1aW50PiB2YWx1ZXMpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGJ1ZmZlcik7CiAgICAg
VU5VU0VEX1BBUkFNKGRyYXdidWZmZXIpOwogICAgIFVOVVNFRF9QQVJBTSh2YWx1ZXMpOwotICAg
IFVOVVNFRF9QQVJBTShzcmNPZmZzZXQpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpjbGVhckJ1ZmZlcmZ2KEdDR0xlbnVtIGJ1ZmZlciwgR0NHTGludCBkcmF3YnVmZmVyLCBj
b25zdCBHQ0dMZmxvYXQqIHZhbHVlcywgR0NHTHVpbnQgc3JjT2Zmc2V0KQordm9pZCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6Y2xlYXJCdWZmZXJmdihHQ0dMZW51bSBidWZmZXIsIEdDR0xpbnQg
ZHJhd2J1ZmZlciwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiB2YWx1ZXMpCiB7CiAgICAgVU5V
U0VEX1BBUkFNKGJ1ZmZlcik7CiAgICAgVU5VU0VEX1BBUkFNKGRyYXdidWZmZXIpOwogICAgIFVO
VVNFRF9QQVJBTSh2YWx1ZXMpOwotICAgIFVOVVNFRF9QQVJBTShzcmNPZmZzZXQpOwogfQogCiB2
b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjbGVhckJ1ZmZlcmZpKEdDR0xlbnVtIGJ1ZmZl
ciwgR0NHTGludCBkcmF3YnVmZmVyLCBHQ0dMZmxvYXQgZGVwdGgsIEdDR0xpbnQgc3RlbmNpbCkK
QEAgLTI5NjksMTc4ICsyOTQzLDgzIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVu
aWZvcm1CbG9ja0JpbmRpbmcoUGxhdGZvcm1HTE9iamVjdCwgR0NHTHVpbnQsIEdDCiB9CiAjZW5k
aWYKIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y29tcHJlc3NlZFRleEltYWdlMkQo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwg
R0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTHNp
emVpIGltYWdlU2l6ZSwgR0NHTGludHB0ciBvZmZzZXQpCi17Ci0gICAgVU5VU0VEX1BBUkFNKHRh
cmdldCk7Ci0gICAgVU5VU0VEX1BBUkFNKGxldmVsKTsKLSAgICBVTlVTRURfUEFSQU0oaW50ZXJu
YWxmb3JtYXQpOwotICAgIFVOVVNFRF9QQVJBTSh3aWR0aCk7Ci0gICAgVU5VU0VEX1BBUkFNKGhl
aWdodCk7Ci0gICAgVU5VU0VEX1BBUkFNKGJvcmRlcik7Ci0gICAgVU5VU0VEX1BBUkFNKGltYWdl
U2l6ZSk7Ci0gICAgVU5VU0VEX1BBUkFNKG9mZnNldCk7Ci19Ci0KLXZvaWQgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OmNvbXByZXNzZWRUZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGlu
dCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNp
emVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIGNvbnN0IHZvaWQqIHNyY0RhdGEsIEdDR0x1aW50
IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoT3ZlcnJpZGUpCi17Ci0gICAgVU5VU0VEX1BB
UkFNKHRhcmdldCk7Ci0gICAgVU5VU0VEX1BBUkFNKGxldmVsKTsKLSAgICBVTlVTRURfUEFSQU0o
aW50ZXJuYWxmb3JtYXQpOwotICAgIFVOVVNFRF9QQVJBTSh3aWR0aCk7Ci0gICAgVU5VU0VEX1BB
UkFNKGhlaWdodCk7Ci0gICAgVU5VU0VEX1BBUkFNKGJvcmRlcik7Ci0gICAgVU5VU0VEX1BBUkFN
KHNyY0RhdGEpOwotICAgIFVOVVNFRF9QQVJBTShzcmNPZmZzZXQpOwotICAgIFVOVVNFRF9QQVJB
TShzcmNMZW5ndGhPdmVycmlkZSk7Ci19Ci0KLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwg
R0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNp
emVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMaW50
cHRyIG9mZnNldCkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRQaXhlbHMoR0NH
TGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NH
TGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCkKIHsKLSAgICBV
TlVTRURfUEFSQU0odGFyZ2V0KTsKLSAgICBVTlVTRURfUEFSQU0obGV2ZWwpOwotICAgIFVOVVNF
RF9QQVJBTSh4b2Zmc2V0KTsKLSAgICBVTlVTRURfUEFSQU0oeW9mZnNldCk7CisgICAgVU5VU0VE
X1BBUkFNKHgpOworICAgIFVOVVNFRF9QQVJBTSh5KTsKICAgICBVTlVTRURfUEFSQU0od2lkdGgp
OwogICAgIFVOVVNFRF9QQVJBTShoZWlnaHQpOwogICAgIFVOVVNFRF9QQVJBTShmb3JtYXQpOwot
ICAgIFVOVVNFRF9QQVJBTShpbWFnZVNpemUpOworICAgIFVOVVNFRF9QQVJBTSh0eXBlKTsKICAg
ICBVTlVTRURfUEFSQU0ob2Zmc2V0KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6Y29tcHJlc3NlZFRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVs
LCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dM
c2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIGNvbnN0IHZvaWQqIHNyY0RhdGEsIEdDR0x1
aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoT3ZlcnJpZGUpCit2b2lkIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpyZWFkUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6
ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlw
ZSwgY29uc3Qgdm9pZCogZHN0RGF0YSwgR0NHTHVpbnQgZHN0T2Zmc2V0KQogewotICAgIFVOVVNF
RF9QQVJBTSh0YXJnZXQpOwotICAgIFVOVVNFRF9QQVJBTShsZXZlbCk7Ci0gICAgVU5VU0VEX1BB
UkFNKHhvZmZzZXQpOwotICAgIFVOVVNFRF9QQVJBTSh5b2Zmc2V0KTsKKyAgICBVTlVTRURfUEFS
QU0oeCk7CisgICAgVU5VU0VEX1BBUkFNKHkpOwogICAgIFVOVVNFRF9QQVJBTSh3aWR0aCk7CiAg
ICAgVU5VU0VEX1BBUkFNKGhlaWdodCk7CiAgICAgVU5VU0VEX1BBUkFNKGZvcm1hdCk7Ci0gICAg
VU5VU0VEX1BBUkFNKHNyY0RhdGEpOwotICAgIFVOVVNFRF9QQVJBTShzcmNPZmZzZXQpOwotICAg
IFVOVVNFRF9QQVJBTShzcmNMZW5ndGhPdmVycmlkZSk7Ci19Ci0KLXZvaWQgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OnVuaWZvcm0xZnYoR0NHTGludCBsb2NhdGlvbiwgY29uc3QgR0NHTGZsb2F0
KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKLXsKLSAgICBV
TlVTRURfUEFSQU0obG9jYXRpb24pOwotICAgIFVOVVNFRF9QQVJBTShkYXRhKTsKLSAgICBVTlVT
RURfUEFSQU0oc3JjT2Zmc2V0KTsKLSAgICBVTlVTRURfUEFSQU0oc3JjTGVuZ3RoKTsKKyAgICBV
TlVTRURfUEFSQU0odHlwZSk7CisgICAgVU5VU0VEX1BBUkFNKGRzdERhdGEpOworICAgIFVOVVNF
RF9QQVJBTShkc3RPZmZzZXQpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1
bmlmb3JtMmZ2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVp
bnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpnZXRBY3RpdmVVbmlmb3JtQmxvY2tpdihHQ0dMdWludCBwcm9ncmFtLCBHQ0dMdWlu
dCB1bmlmb3JtQmxvY2tJbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xpbnQ+IHBh
cmFtcykKIHsKLSAgICBVTlVTRURfUEFSQU0obG9jYXRpb24pOwotICAgIFVOVVNFRF9QQVJBTShk
YXRhKTsKLSAgICBVTlVTRURfUEFSQU0oc3JjT2Zmc2V0KTsKLSAgICBVTlVTRURfUEFSQU0oc3Jj
TGVuZ3RoKTsKKyAgICBVTlVTRURfUEFSQU0ocHJvZ3JhbSk7CisgICAgVU5VU0VEX1BBUkFNKHVu
aWZvcm1CbG9ja0luZGV4KTsKKyAgICBVTlVTRURfUEFSQU0ocG5hbWUpOworICAgIFVOVVNFRF9Q
QVJBTShwYXJhbXMpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3Jt
M2Z2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3Jj
T2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
Ojp0ZXhJbWFnZTJEKEdDR0xlbnVtLCBHQ0dMaW50LCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dM
c2l6ZWksIEdDR0xpbnQsIEdDR0xlbnVtLCBHQ0dMZW51bSAsIEdDR0xpbnRwdHIpCiB7Ci0gICAg
VU5VU0VEX1BBUkFNKGxvY2F0aW9uKTsKLSAgICBVTlVTRURfUEFSQU0oZGF0YSk7Ci0gICAgVU5V
U0VEX1BBUkFNKHNyY09mZnNldCk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY0xlbmd0aCk7CiB9CiAK
LXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm00ZnYoR0NHTGludCBsb2NhdGlv
biwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNy
Y0xlbmd0aCkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnRleFN1YkltYWdlMkQoR0NH
TGVudW0sIEdDR0xpbnQsIEdDR0xpbnQsIEdDR0xpbnQsIEdDR0xzaXplaSwgR0NHTHNpemVpLCBH
Q0dMZW51bSwgR0NHTGVudW0sIEdDR0xpbnRwdHIpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGxvY2F0
aW9uKTsKLSAgICBVTlVTRURfUEFSQU0oZGF0YSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY09mZnNl
dCk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY0xlbmd0aCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OnVuaWZvcm0xaXYoR0NHTGludCBsb2NhdGlvbiwgY29uc3QgR0NHTGludCog
ZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCit2b2lkIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpjb21wcmVzc2VkVGV4SW1hZ2UyRChHQ0dMZW51bSwgR0NHTGlu
dCwgR0NHTGVudW0sIEdDR0xzaXplaSwgR0NHTHNpemVpLCBHQ0dMaW50LCBHQ0dMc2l6ZWksIEdD
R0xpbnRwdHIpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGxvY2F0aW9uKTsKLSAgICBVTlVTRURfUEFS
QU0oZGF0YSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY09mZnNldCk7Ci0gICAgVU5VU0VEX1BBUkFN
KHNyY0xlbmd0aCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0y
aXYoR0NHTGludCBsb2NhdGlvbiwgY29uc3QgR0NHTGludCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zm
c2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpj
b21wcmVzc2VkVGV4U3ViSW1hZ2UyRChHQ0dMZW51bSwgR0NHTGludCwgR0NHTGludCwgR0NHTGlu
dCwgR0NHTHNpemVpLCBHQ0dMc2l6ZWksIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xpbnRwdHIp
CiB7Ci0gICAgVU5VU0VEX1BBUkFNKGxvY2F0aW9uKTsKLSAgICBVTlVTRURfUEFSQU0oZGF0YSk7
Ci0gICAgVU5VU0VEX1BBUkFNKHNyY09mZnNldCk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY0xlbmd0
aCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0zaXYoR0NHTGlu
dCBsb2NhdGlvbiwgY29uc3QgR0NHTGludCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dM
dWludCBzcmNMZW5ndGgpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp0ZXhJbWFnZTNE
KEdDR0xlbnVtLCBHQ0dMaW50LCBHQ0dMaW50LCBHQ0dMc2l6ZWksIEdDR0xzaXplaSwgR0NHTHNp
emVpLCBHQ0dMaW50LCBHQ0dMZW51bSwgR0NHTGVudW0sIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lk
PikKIHsKLSAgICBVTlVTRURfUEFSQU0obG9jYXRpb24pOwotICAgIFVOVVNFRF9QQVJBTShkYXRh
KTsKLSAgICBVTlVTRURfUEFSQU0oc3JjT2Zmc2V0KTsKLSAgICBVTlVTRURfUEFSQU0oc3JjTGVu
Z3RoKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTRpdihHQ0dM
aW50IGxvY2F0aW9uLCBjb25zdCBHQ0dMaW50KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdD
R0x1aW50IHNyY0xlbmd0aCkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnRleEltYWdl
M0QoR0NHTGVudW0sIEdDR0xpbnQsIEdDR0xpbnQsIEdDR0xzaXplaSwgR0NHTHNpemVpLCBHQ0dM
c2l6ZWksIEdDR0xpbnQsIEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTGludHB0cikKIHsKLSAgICBV
TlVTRURfUEFSQU0obG9jYXRpb24pOwotICAgIFVOVVNFRF9QQVJBTShkYXRhKTsKLSAgICBVTlVT
RURfUEFSQU0oc3JjT2Zmc2V0KTsKLSAgICBVTlVTRURfUEFSQU0oc3JjTGVuZ3RoKTsKIH0KIAot
dm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybU1hdHJpeDJmdihHQ0dMaW50IGxv
Y2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NH
THVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCit2b2lkIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjp0ZXhTdWJJbWFnZTNEKEdDR0xlbnVtLCBHQ0dMaW50LCBHQ0dMaW50LCBHQ0dM
aW50LCBHQ0dMaW50LCBHQ0dMc2l6ZWksIEdDR0xzaXplaSwgR0NHTHNpemVpLCBHQ0dMZW51bSwg
R0NHTGVudW0sIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPikKIHsKLSAgICBVTlVTRURfUEFSQU0o
bG9jYXRpb24pOwotICAgIFVOVVNFRF9QQVJBTSh0cmFuc3Bvc2UpOwotICAgIFVOVVNFRF9QQVJB
TShkYXRhKTsKLSAgICBVTlVTRURfUEFSQU0oc3JjT2Zmc2V0KTsKLSAgICBVTlVTRURfUEFSQU0o
c3JjTGVuZ3RoKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybU1h
dHJpeDNmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdD
R0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCit2
b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp0ZXhTdWJJbWFnZTNEKEdDR0xlbnVtLCBHQ0dM
aW50LCBHQ0dMaW50LCBHQ0dMaW50LCBHQ0dMaW50LCBHQ0dMc2l6ZWksIEdDR0xzaXplaSwgR0NH
THNpemVpLCBHQ0dMZW51bSwgR0NHTGVudW0sIEdDR0xpbnRwdHIpCiB7Ci0gICAgVU5VU0VEX1BB
UkFNKGxvY2F0aW9uKTsKLSAgICBVTlVTRURfUEFSQU0odHJhbnNwb3NlKTsKLSAgICBVTlVTRURf
UEFSQU0oZGF0YSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY09mZnNldCk7Ci0gICAgVU5VU0VEX1BB
UkFNKHNyY0xlbmd0aCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZv
cm1NYXRyaXg0ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25z
dCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3Ro
KQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y29tcHJlc3NlZFRleEltYWdlM0QoR0NH
TGVudW0sIEdDR0xpbnQsIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSwgR0NHTHNpemVp
LCBHQ0dMaW50LCBHQ0dMc2l6ZWksIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPikKIHsKLSAgICBV
TlVTRURfUEFSQU0obG9jYXRpb24pOwotICAgIFVOVVNFRF9QQVJBTSh0cmFuc3Bvc2UpOwotICAg
IFVOVVNFRF9QQVJBTShkYXRhKTsKLSAgICBVTlVTRURfUEFSQU0oc3JjT2Zmc2V0KTsKLSAgICBV
TlVTRURfUEFSQU0oc3JjTGVuZ3RoKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6cmVhZFBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dM
c2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIg
b2Zmc2V0KQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y29tcHJlc3NlZFRleEltYWdl
M0QoR0NHTGVudW0sIEdDR0xpbnQsIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSwgR0NH
THNpemVpLCBHQ0dMaW50LCBHQ0dMc2l6ZWksIEdDR0xpbnRwdHIpCiB7Ci0gICAgVU5VU0VEX1BB
UkFNKHgpOwotICAgIFVOVVNFRF9QQVJBTSh5KTsKLSAgICBVTlVTRURfUEFSQU0od2lkdGgpOwot
ICAgIFVOVVNFRF9QQVJBTShoZWlnaHQpOwotICAgIFVOVVNFRF9QQVJBTShmb3JtYXQpOwotICAg
IFVOVVNFRF9QQVJBTSh0eXBlKTsKLSAgICBVTlVTRURfUEFSQU0ob2Zmc2V0KTsKIH0KIAotdm9p
ZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZFBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQg
eSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdD
R0xlbnVtIHR5cGUsIGNvbnN0IHZvaWQqIGRzdERhdGEsIEdDR0x1aW50IGRzdE9mZnNldCkKK3Zv
aWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNvbXByZXNzZWRUZXhTdWJJbWFnZTNEKEdDR0xl
bnVtLCBHQ0dMaW50LCBHQ0dMaW50LCBHQ0dMaW50LCBHQ0dMaW50LCBHQ0dMc2l6ZWksIEdDR0xz
aXplaSwgR0NHTHNpemVpLCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMU3Bhbjxjb25zdCBHQ0dM
dm9pZD4pCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHgpOwotICAgIFVOVVNFRF9QQVJBTSh5KTsKLSAg
ICBVTlVTRURfUEFSQU0od2lkdGgpOwotICAgIFVOVVNFRF9QQVJBTShoZWlnaHQpOwotICAgIFVO
VVNFRF9QQVJBTShmb3JtYXQpOwotICAgIFVOVVNFRF9QQVJBTSh0eXBlKTsKLSAgICBVTlVTRURf
UEFSQU0oZHN0RGF0YSk7Ci0gICAgVU5VU0VEX1BBUkFNKGRzdE9mZnNldCk7CiB9CiAKLXZvaWQg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2KEdDR0x1aW50
IHByb2dyYW0sIEdDR0x1aW50IHVuaWZvcm1CbG9ja0luZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NH
TFNwYW48R0NHTGludD4gcGFyYW1zKQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y29t
cHJlc3NlZFRleFN1YkltYWdlM0QoR0NHTGVudW0sIEdDR0xpbnQsIEdDR0xpbnQsIEdDR0xpbnQs
IEdDR0xpbnQsIEdDR0xzaXplaSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWksIEdDR0xlbnVtLCBHQ0dM
c2l6ZWksIEdDR0xpbnRwdHIpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHByb2dyYW0pOwotICAgIFVO
VVNFRF9QQVJBTSh1bmlmb3JtQmxvY2tJbmRleCk7Ci0gICAgVU5VU0VEX1BBUkFNKHBuYW1lKTsK
LSAgICBVTlVTRURfUEFSQU0ocGFyYW1zKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMRVMu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMRVMuY3BwCmluZGV4IGExZDgwOTJiY2NhZTAwOGQ2ZTY5ZThjZDhmNmRkZmIx
N2FjYWYwMGYuLjIzZDc0ZmE4MGQ3MDc5MWJlNjAwZGY1OGU3NTYxNzMzOTZhYTU1MDUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0Nv
bnRleHRHTE9wZW5HTEVTLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xFUy5jcHAKQEAgLTIxNSwxNSArMjE1LDE0
IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFNoYWRlclByZWNpc2lvbkZvcm1h
dChHQ0dMZW51bSBzaGFkZXJUeXBlLCBHQ0dMCiAgICAgOjpnbEdldFNoYWRlclByZWNpc2lvbkZv
cm1hdChzaGFkZXJUeXBlLCBwcmVjaXNpb25UeXBlLCByYW5nZS5kYXRhLCBwcmVjaXNpb24pOwog
fQogCi1ib29sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp0ZXhJbWFnZTJEKEdDR0xlbnVtIHRh
cmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3
aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwg
R0NHTGVudW0gdHlwZSwgY29uc3Qgdm9pZCogcGl4ZWxzKQordm9pZCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6dGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xl
bnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdD
R0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPGNv
bnN0IEdDR0x2b2lkPiBwaXhlbHMpCiB7Ci0gICAgaWYgKHdpZHRoICYmIGhlaWdodCAmJiAhcGl4
ZWxzKSB7CisgICAgaWYgKHdpZHRoICYmIGhlaWdodCAmJiAhcGl4ZWxzLmRhdGEpIHsKICAgICAg
ICAgc3ludGhlc2l6ZUdMRXJyb3IoSU5WQUxJRF9WQUxVRSk7Ci0gICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHRleEltYWdlMkREaXJlY3QodGFyZ2V0
LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGJvcmRlciwgZm9ybWF0LCB0
eXBlLCBwaXhlbHMpOwotICAgIHJldHVybiB0cnVlOworICAgIHRleEltYWdlMkREaXJlY3QodGFy
Z2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGJvcmRlciwgZm9ybWF0
LCB0eXBlLCBwaXhlbHMuZGF0YSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OnZhbGlkYXRlQXR0cmlidXRlcygpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>414899</attachid>
            <date>2020-11-26 05:50:28 -0800</date>
            <delta_ts>2020-11-27 01:52:03 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219256-20201126155026.patch</filename>
            <type>text/plain</type>
            <size>203833</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwMTY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzIzYWI2YjRlNmM0NDFj
MDYzZWM1Mzg0YzZmOTA5NDdiZDFhNDY5ZC4uNDYxNzUzYzg2N2RlMDc0MjA5Y2QzNzY2ODkzZGY5
NTQzMzJkMzRlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzNiBAQAorMjAyMC0xMS0yMyAgS2lt
bW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIEdyYXBoaWNzQ29u
dGV4dEdMIHNob3VsZCBoYXZlIHJvYnVzdCBtdWx0aXZhbHVlIHNldHRlcnMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxOTI1NgorCisgICAgICAgIFJl
dmlld2VkIGJ5IERlYW4gSmFja3Nvbi4KKworICAgICAgICBSZXBsYWNlIGJ1ZlNpemUsIHBvaW50
ZXIgcGFpcnMgYW5kIHBsYWluIHBvaW50ZXJzIGluIEdyYXBoaWNzQ29udGV4dEdMCisgICAgICAg
IHdpdGggR0NHTFNwYW4uIFRoaXMgbWFrZXMgaXQgZWFzaWVyIHRvIHVuZGVyc3RhbmQgaG93IG1h
bnkgdmFsdWVzIHRoZXJlCisgICAgICAgIGFyZSBwb2ludGVkIGJ5IHRoZSBwb2ludGVyLiBUaGlz
IGlzIG5lZWRlZCBmb3Igc2ltcGxlciBpbXBsZW1lbnRhdGlvbiBvZiBHUFUKKyAgICAgICAgcHJv
Y2VzcyBJUEMsIHdoZXJlIHRoZSBJUEMgbGF5ZXIgZG9lcyBub3QgbmVlZCB0byBpbnRlcnByZXQg
dGhlIE9wZW5HTAorICAgICAgICBwcm9wZXJ0aWVzLgorCisgICAgICAgIEluIFdlYkdMIGltcGxl
bWVudGF0aW9uLCBjaGFuZ2VzIHRoZSB2YWxpZGF0aW9uIGZ1bmN0aW9ucyB0byByZXR1cm4KKyAg
ICAgICAgdGhlIG1lbW9yeSByZWZlcmVuY2UgdGhhdCB3aWxsIGJlIHRvdWNoZWQgYnkgdGhlIHZh
bGlkIGZ1bmN0aW9uIGNhbGwuCisgICAgICAgIE9uIHZhbGlkYXRpb24gZmFpbHVyZSwgbnVsbG9w
dCB3aWxsIGJlIHJldHVybmVkLgorCisgICAgICAgIE1ha2VzIHRoZSBleGlzdGluZyBHcmFwaGlj
c0NvbnRleHRHTCB0ZXh0dXJlIGltYWdlIG1hbmlwdWxhdGlvbiBmdW5jdGlvbnMKKyAgICAgICAg
dG8gc3VwcG9ydCByb2J1c3QgaW52b2NhdGlvbi4gUmVtb3ZlcyB0aGUgcm9idXN0IEFQSXMgZnJv
bSBFeHRlbnNpb25zR0wuCisgICAgICAgIEFkZHMgdGhlIG1pc3NpbmcgdGV4dHVyZSBpbWFnZSBt
YW5pcHVsYXRpb24gZnVuY3Rpb25zIGZyb20gRXh0ZW5zaW9uR0wKKyAgICAgICAgdG8gR3JhcGhp
Y3NDb250ZXh0R0wuIEltcGxlbWVudGF0aW9ucyBmb3IgdGhlIG1vdmVkIG1ldGhvZHMKKyAgICAg
ICAgZXhpc3Qgb25seSBmb3IgQU5HTEUgaW1wbGVtZW50YXRpb24gb2YgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0wuCisKKyAgICAgICAgQ2hhbmdlcyB0aGUgQU5HTEUgdmFyaWFudCBvZiBHcmFwaGlj
c0NvbnRleHRHTDo6dGV4SW1hZ2UyRCB0byBiZQorICAgICAgICBpbXBsZW1lbnRlZCBhcyBFeHRl
bnNpb25zR0xBTkdMRTo6dGV4SW1hZ2UyRFJvYnVzdEFOR0xFLiBCZWZvcmUsIGZvcgorICAgICAg
ICBBTkdMRSB0aGUgR3JhcGhpY3NDb250ZXh0R0w6OnRleEltYWdlMkQgd2FzIHVudXNlZC4KKwor
ICAgICAgICBObyBuZXcgdGVzdHMsIGEgcmVmYWN0b3IuCisKKyAgICAgICAgKiBodG1sL2NhbnZh
cy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJl
bmRlcmluZ0NvbnRleHQ6OmludmFsaWRhdGVGcmFtZWJ1ZmZlcik6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjppbnZhbGlkYXRlU3ViRnJhbWVidWZmZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTF1aXYpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTJ1aXYpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTN1aXYpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTR1aXYpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybU1hdHJpeDJ4M2Z2
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm1NYXRy
aXgzeDJmdik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlm
b3JtTWF0cml4Mng0ZnYpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4
dDo6dW5pZm9ybU1hdHJpeDR4MmZ2KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmlu
Z0NvbnRleHQ6OnVuaWZvcm1NYXRyaXgzeDRmdik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJS
ZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtTWF0cml4NHgzZnYpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dmVydGV4QXR0cmliSTRpdik6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp2ZXJ0ZXhBdHRyaWJJNHVpdik6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpkcmF3QnVmZmVycyk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpjbGVhckJ1ZmZlcml2KToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmNsZWFyQnVmZmVydWl2KToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmNsZWFyQnVmZmVyZnYpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dmFsaWRhdGVDbGVhckJ1
ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3Jt
MWZ2KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm0y
ZnYpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTNm
dik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtNGZ2
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm0xaXYp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTJpdik6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtM2l2KToK
KyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm00aXYpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybU1hdHJpeDJm
dik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtTWF0
cml4M2Z2KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZv
cm1NYXRyaXg0ZnYpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRl
eHQuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTERyYXdCdWZmZXJzLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdMRHJhd0J1ZmZlcnM6OmRyYXdCdWZmZXJzV0VCR0wpOgorICAgICAg
ICAqIGh0bWwvY2FudmFzL1dlYkdMRnJhbWVidWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
V2ViR0xGcmFtZWJ1ZmZlcjo6ZHJhd0J1ZmZlcnNJZk5lY2Vzc2FyeSk6CisgICAgICAgICogaHRt
bC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpidWZmZXJEYXRhKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmJ1ZmZlclN1YkRhdGEpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybTFmdik6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtMmZ2KToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm0zZnYpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybTRmdik6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtMWl2KToK
KyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm0yaXYp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybTNp
dik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3Jt
NGl2KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZv
cm1NYXRyaXgyZnYpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZTo6dW5pZm9ybU1hdHJpeDNmdik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlOjp1bmlmb3JtTWF0cml4NGZ2KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlVW5pZm9ybU1hdHJpeFBhcmFtZXRlcnMpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmVydGV4QXR0cmliZnZJ
bXBsKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmg6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZVVu
aWZvcm1QYXJhbWV0ZXJzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNpb25z
R0wuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXNHTC5oOgorICAgICAgICAo
R0NHTFNwYW46OkdDR0xTcGFuKToKKyAgICAgICAgKHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90
Pjo6bWF4KToKKyAgICAgICAgKG1ha2VHQ0dMU3Bhbik6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXh0
ZW5zaW9uc0dMQU5HTEU6OmRyYXdCdWZmZXJzRVhUKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmJ1ZmZlckRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmJ1ZmZlclN1YkRhdGEpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0xZnYpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0yZnYpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0zZnYpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm00ZnYpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0xaXYpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0yaXYpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0zaXYpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm00aXYpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXgyZnYpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXgzZnYpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXg0ZnYp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJp
YjFmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4
QXR0cmliMmZ2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2
ZXJ0ZXhBdHRyaWIzZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OnZlcnRleEF0dHJpYjRmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6aW52YWxpZGF0ZUZyYW1lYnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjppbnZhbGlkYXRlU3ViRnJhbWVidWZmZXIpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0xdWl2KToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMnVpdik6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTN1aXYpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm00dWl2KToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4MngzZnYp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRy
aXgzeDJmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5p
Zm9ybU1hdHJpeDJ4NGZ2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjp1bmlmb3JtTWF0cml4NHgyZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXgzeDRmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybU1hdHJpeDR4M2Z2KToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2ZXJ0ZXhBdHRyaWJJNGl2KToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2ZXJ0ZXhBdHRyaWJJNHVpdik6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6ZHJhd0J1ZmZlcnMpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNsZWFyQnVmZmVyaXYp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNsZWFyQnVmZmVy
dWl2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjbGVhckJ1
ZmZlcmZ2KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jdi9HcmFwaGljc0NvbnRleHRH
TENWQU5HTEUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xDVkFOR0xF
Ojppbml0aWFsaXplVVZDb250ZXh0T2JqZWN0cyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTENWQU5HTEU6OmNvcHlQaXhlbEJ1ZmZlclRvVGV4dHVyZSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmg6CisKIDIw
MjAtMTEtMjIgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgogCiAgICAgICAgIFtM
RkNdW0ludGVncmF0aW9uXSBDb252ZXJ0IHNvbWUgcmVtYWluaW5nIElubGluZUJveCBhY2Nlc3Mg
dG8gdXNlIGlubGluZSBpdGVyYXRvcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcAppbmRleCA1NWJjMWY4ZGIyNDlkMzM4MjJl
Nzg4OWNhNzgzZjViZWMwMjVhMjk5Li4yZmM5M2FlYWZjOTM5MDM3NGE2ZWIzYzIwOWVlYTc2YTE5
NjMyZGM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5k
ZXJpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJS
ZW5kZXJpbmdDb250ZXh0LmNwcApAQCAtODk1LDcgKzg5NSw3IEBAIHZvaWQgV2ViR0wyUmVuZGVy
aW5nQ29udGV4dDo6aW52YWxpZGF0ZUZyYW1lYnVmZmVyKEdDR0xlbnVtIHRhcmdldCwgY29uc3Qg
VmVjdG9yCiAgICAgVmVjdG9yPEdDR0xlbnVtPiB0cmFuc2xhdGVkQXR0YWNobWVudHMgPSBhdHRh
Y2htZW50czsKICAgICBpZiAoIWNoZWNrQW5kVHJhbnNsYXRlQXR0YWNobWVudHMoImludmFsaWRh
dGVGcmFtZWJ1ZmZlciIsIHRhcmdldCwgdHJhbnNsYXRlZEF0dGFjaG1lbnRzKSkKICAgICAgICAg
cmV0dXJuOwotICAgIG1fY29udGV4dC0+aW52YWxpZGF0ZUZyYW1lYnVmZmVyKHRhcmdldCwgdHJh
bnNsYXRlZEF0dGFjaG1lbnRzLnNpemUoKSwgdHJhbnNsYXRlZEF0dGFjaG1lbnRzLmRhdGEoKSk7
CisgICAgbV9jb250ZXh0LT5pbnZhbGlkYXRlRnJhbWVidWZmZXIodGFyZ2V0LCB0cmFuc2xhdGVk
QXR0YWNobWVudHMpOwogfQogCiB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmludmFsaWRh
dGVTdWJGcmFtZWJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQsIGNvbnN0IFZlY3RvcjxHQ0dMZW51bT4m
IGF0dGFjaG1lbnRzLCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dM
c2l6ZWkgaGVpZ2h0KQpAQCAtOTA2LDcgKzkwNiw3IEBAIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29u
dGV4dDo6aW52YWxpZGF0ZVN1YkZyYW1lYnVmZmVyKEdDR0xlbnVtIHRhcmdldCwgY29uc3QgVmVj
CiAgICAgVmVjdG9yPEdDR0xlbnVtPiB0cmFuc2xhdGVkQXR0YWNobWVudHMgPSBhdHRhY2htZW50
czsKICAgICBpZiAoIWNoZWNrQW5kVHJhbnNsYXRlQXR0YWNobWVudHMoImludmFsaWRhdGVTdWJG
cmFtZWJ1ZmZlciIsIHRhcmdldCwgdHJhbnNsYXRlZEF0dGFjaG1lbnRzKSkKICAgICAgICAgcmV0
dXJuOwotICAgIG1fY29udGV4dC0+aW52YWxpZGF0ZVN1YkZyYW1lYnVmZmVyKHRhcmdldCwgdHJh
bnNsYXRlZEF0dGFjaG1lbnRzLnNpemUoKSwgdHJhbnNsYXRlZEF0dGFjaG1lbnRzLmRhdGEoKSwg
eCwgeSwgd2lkdGgsIGhlaWdodCk7CisgICAgbV9jb250ZXh0LT5pbnZhbGlkYXRlU3ViRnJhbWVi
dWZmZXIodGFyZ2V0LCB0cmFuc2xhdGVkQXR0YWNobWVudHMsIHgsIHksIHdpZHRoLCBoZWlnaHQp
OwogfQogCiB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnJlYWRCdWZmZXIoR0NHTGVudW0g
c3JjKQpAQCAtMTEyOSw3ICsxMTI5LDcgQEAgdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp0
ZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludAogICAgIGlm
ICghdmFsaWRhdGVUZXhGdW5jKCJ0ZXhJbWFnZTJEIiwgVGV4SW1hZ2VGdW5jdGlvblR5cGU6OlRl
eEltYWdlLCBTb3VyY2VVbnBhY2tCdWZmZXIsIHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0
LCB3aWR0aCwgaGVpZ2h0LCAxLCBib3JkZXIsIGZvcm1hdCwgdHlwZSwgMCwgMCwgMCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnRleEltYWdlMkRS
b2J1c3RBTkdMRSh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwg
Ym9yZGVyLCBmb3JtYXQsIHR5cGUsIDAsIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KG9mZnNldCkp
OworICAgIG1fY29udGV4dC0+dGV4SW1hZ2UyRCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1h
dCwgd2lkdGgsIGhlaWdodCwgYm9yZGVyLCBmb3JtYXQsIHR5cGUsIG9mZnNldCk7CiB9CiAKIEV4
Y2VwdGlvbk9yPHZvaWQ+IFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnRleEltYWdlMkQoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IGludGVybmFsZm9ybWF0LCBHQ0dMc2l6
ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3Jt
YXQsIEdDR0xlbnVtIHR5cGUsIFRleEltYWdlU291cmNlJiYgc291cmNlKQpAQCAtMTE3Myw3ICsx
MTczLDcgQEAgdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp0ZXhJbWFnZTNEKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludAogICAgIGlmICghdmFsaWRhdGVUZXhGdW5j
KCJ0ZXhJbWFnZTNEIiwgVGV4SW1hZ2VGdW5jdGlvblR5cGU6OlRleEltYWdlLCBTb3VyY2VVbnBh
Y2tCdWZmZXIsIHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBk
ZXB0aCwgYm9yZGVyLCBmb3JtYXQsIHR5cGUsIDAsIDAsIDApKQogICAgICAgICByZXR1cm47CiAK
LSAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS50ZXhJbWFnZTNEUm9idXN0QU5HTEUodGFy
Z2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBib3JkZXIs
IGZvcm1hdCwgdHlwZSwgMCwgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ob2Zmc2V0KSk7CisgICAg
bV9jb250ZXh0LT50ZXhJbWFnZTNEKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0
aCwgaGVpZ2h0LCBkZXB0aCwgYm9yZGVyLCBmb3JtYXQsIHR5cGUsICBvZmZzZXQpOwogfQogCiBF
eGNlcHRpb25Pcjx2b2lkPiBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp0ZXhJbWFnZTNEKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCBpbnRlcm5hbGZvcm1hdCwgR0NHTHNp
emVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xpbnQgYm9y
ZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIFRleEltYWdlU291cmNlJiYgc291
cmNlKQpAQCAtMTI1OSw3ICsxMjU5LDcgQEAgdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp0
ZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGkKICAgICBp
ZiAoIXZhbGlkYXRlVGV4RnVuYygidGV4U3ViSW1hZ2UyRCIsIFRleEltYWdlRnVuY3Rpb25UeXBl
OjpUZXhTdWJJbWFnZSwgU291cmNlVW5wYWNrQnVmZmVyLCB0YXJnZXQsIGxldmVsLCAwLCB3aWR0
aCwgaGVpZ2h0LCAxLCAwLCBmb3JtYXQsIHR5cGUsIHhvZmZzZXQsIHlvZmZzZXQsIDApKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS50ZXhTdWJJbWFn
ZTJEUm9idXN0QU5HTEUodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhl
aWdodCwgZm9ybWF0LCB0eXBlLCAwLCByZWludGVycHJldF9jYXN0PHZvaWQqPihvZmZzZXQpKTsK
KyAgICBtX2NvbnRleHQtPnRleFN1YkltYWdlMkQodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9m
ZnNldCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBvZmZzZXQpOwogfQogCiBFeGNlcHRp
b25Pcjx2b2lkPiBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp0ZXhTdWJJbWFnZTJEKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQs
IEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dM
ZW51bSB0eXBlLCBUZXhJbWFnZVNvdXJjZSYmIHNvdXJjZSkKQEAgLTEzMDMsNyArMTMwMyw3IEBA
IHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dGV4U3ViSW1hZ2UzRChHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpCiAgICAgaWYgKCF2YWxpZGF0ZVRleEZ1bmMoInRleFN1
YkltYWdlM0QiLCBUZXhJbWFnZUZ1bmN0aW9uVHlwZTo6VGV4U3ViSW1hZ2UsIFNvdXJjZVVucGFj
a0J1ZmZlciwgdGFyZ2V0LCBsZXZlbCwgMCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIDAsIGZvcm1h
dCwgdHlwZSwgeG9mZnNldCwgeW9mZnNldCwgem9mZnNldCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnRleFN1YkltYWdlM0RSb2J1c3RBTkdMRSh0
YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB6b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBk
ZXB0aCwgZm9ybWF0LCB0eXBlLCAwLCByZWludGVycHJldF9jYXN0PHZvaWQqPihvZmZzZXQpKTsK
KyAgICBtX2NvbnRleHQtPnRleFN1YkltYWdlM0QodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9m
ZnNldCwgem9mZnNldCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGZvcm1hdCwgdHlwZSwgb2Zmc2V0
KTsKIH0KIAogdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp0ZXhTdWJJbWFnZTNEKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZz
ZXQsIEdDR0xpbnQgem9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBH
Q0dMc2l6ZWkgZGVwdGgsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgUmVmUHRyPEFy
cmF5QnVmZmVyVmlldz4mJiBzcmNEYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQpCkBAIC0xMzY5LDEw
ICsxMzY5LDcgQEAgdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojpjb21wcmVzc2VkVGV4SW1h
Z2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwKICAgICB9CiAgICAgaWYgKCF2YWxp
ZGF0ZVRleHR1cmUyREJpbmRpbmcoImNvbXByZXNzZWRUZXhJbWFnZTJEIiwgdGFyZ2V0KSkKICAg
ICAgICAgcmV0dXJuOwotICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmNvbXByZXNzZWRU
ZXhJbWFnZTJEUm9idXN0QU5HTEUoCi0gICAgICAgIHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9y
bWF0LCB3aWR0aCwKLSAgICAgICAgaGVpZ2h0LCBib3JkZXIsIGltYWdlU2l6ZSwKLSAgICAgICAg
MCwgcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4ob2Zmc2V0KSk7CisgICAgbV9jb250ZXh0LT5j
b21wcmVzc2VkVGV4SW1hZ2UyRCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgs
IGhlaWdodCwgYm9yZGVyLCBpbWFnZVNpemUsIG9mZnNldCk7CiB9CiAKIHZvaWQgV2ViR0wyUmVu
ZGVyaW5nQ29udGV4dDo6Y29tcHJlc3NlZFRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
aW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dM
c2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgQXJyYXlCdWZmZXJWaWV3JiBzcmNEYXRhLCBH
Q0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aE92ZXJyaWRlKQpAQCAtMTM5MCwx
MCArMTM4Nyw3IEBAIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Y29tcHJlc3NlZFRleElt
YWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsCiAgICAgYXV0byBzbGljZSA9IHNs
aWNlQXJyYXlCdWZmZXJWaWV3KCJjb21wcmVzc2VkVGV4SW1hZ2UyRCIsIHNyY0RhdGEsIHNyY09m
ZnNldCwgc3JjTGVuZ3RoT3ZlcnJpZGUpOwogICAgIGlmICghc2xpY2UpCiAgICAgICAgIHJldHVy
bjsKLSAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5jb21wcmVzc2VkVGV4SW1hZ2UyRFJv
YnVzdEFOR0xFKAotICAgICAgICB0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgs
IGhlaWdodCwKLSAgICAgICAgYm9yZGVyLCBzbGljZS0+Ynl0ZUxlbmd0aCgpLAotICAgICAgICBz
bGljZS0+Ynl0ZUxlbmd0aCgpLCBzbGljZS0+YmFzZUFkZHJlc3MoKSk7CisgICAgbV9jb250ZXh0
LT5jb21wcmVzc2VkVGV4SW1hZ2UyRCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lk
dGgsIGhlaWdodCwgYm9yZGVyLCBzbGljZS0+Ynl0ZUxlbmd0aCgpLCBtYWtlR0NHTFNwYW4oc2xp
Y2UtPmJhc2VBZGRyZXNzKCksIHNsaWNlLT5ieXRlTGVuZ3RoKCkpKTsKIH0KIAogdm9pZCBXZWJH
TDJSZW5kZXJpbmdDb250ZXh0Ojpjb21wcmVzc2VkVGV4SW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQs
IEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgs
IEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGludCBib3JkZXIsIEdDR0xz
aXplaSBpbWFnZVNpemUsIEdDR0xpbnQ2NCBvZmZzZXQpCkBAIC0xNDA4LDEwICsxNDAyLDcgQEAg
dm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojpjb21wcmVzc2VkVGV4SW1hZ2UzRChHQ0dMZW51
bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwKICAgICB9CiAgICAgaWYgKCF2YWxpZGF0ZVRleHR1cmUz
REJpbmRpbmcoImNvbXByZXNzZWRUZXhJbWFnZTNEIiwgdGFyZ2V0KSkKICAgICAgICAgcmV0dXJu
OwotICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmNvbXByZXNzZWRUZXhJbWFnZTNEUm9i
dXN0QU5HTEUoCi0gICAgICAgIHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwK
LSAgICAgICAgaGVpZ2h0LCBkZXB0aCwgYm9yZGVyLCBpbWFnZVNpemUsCi0gICAgICAgIDAsIHJl
aW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KG9mZnNldCkpOworICAgIG1fY29udGV4dC0+Y29tcHJl
c3NlZFRleEltYWdlM0QodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWln
aHQsIGRlcHRoLCBib3JkZXIsIGltYWdlU2l6ZSwgb2Zmc2V0KTsKIH0KIAogdm9pZCBXZWJHTDJS
ZW5kZXJpbmdDb250ZXh0Ojpjb21wcmVzc2VkVGV4SW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdD
R0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdD
R0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGludCBib3JkZXIsIEFycmF5QnVm
ZmVyVmlldyYgc3JjRGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGhP
dmVycmlkZSkKQEAgLTE0MjksMTAgKzE0MjAsMTAgQEAgdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250
ZXh0Ojpjb21wcmVzc2VkVGV4SW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwK
ICAgICBhdXRvIHNsaWNlID0gc2xpY2VBcnJheUJ1ZmZlclZpZXcoImNvbXByZXNzZWRUZXhJbWFn
ZTNEIiwgc3JjRGF0YSwgc3JjT2Zmc2V0LCBzcmNMZW5ndGhPdmVycmlkZSk7CiAgICAgaWYgKCFz
bGljZSkKICAgICAgICAgcmV0dXJuOwotICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmNv
bXByZXNzZWRUZXhJbWFnZTNEUm9idXN0QU5HTEUoCisgICAgbV9jb250ZXh0LT5jb21wcmVzc2Vk
VGV4SW1hZ2UzRCgKICAgICAgICAgdGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRo
LCBoZWlnaHQsCiAgICAgICAgIGRlcHRoLCBib3JkZXIsIHNsaWNlLT5ieXRlTGVuZ3RoKCksCi0g
ICAgICAgIHNsaWNlLT5ieXRlTGVuZ3RoKCksIHNsaWNlLT5iYXNlQWRkcmVzcygpKTsKKyAgICAg
ICAgbWFrZUdDR0xTcGFuKHNsaWNlLT5iYXNlQWRkcmVzcygpLCBzbGljZS0+Ynl0ZUxlbmd0aCgp
KSk7CiB9CiAKIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Y29tcHJlc3NlZFRleFN1Yklt
YWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdD
R0xpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51
bSBmb3JtYXQsIEFycmF5QnVmZmVyVmlldyYgc3JjRGF0YSkKQEAgLTE0NjAsMTAgKzE0NTEsNyBA
QCB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKEdD
R0xlbnVtIHRhcmdldCwgR0NHTGludCBsZQogICAgIH0KICAgICBpZiAoIXZhbGlkYXRlVGV4dHVy
ZTJEQmluZGluZygiY29tcHJlc3NlZFRleEltYWdlMkQiLCB0YXJnZXQpKQogICAgICAgICByZXR1
cm47Ci0gICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuY29tcHJlc3NlZFRleFN1YkltYWdl
MkRSb2J1c3RBTkdMRSgKLSAgICAgICAgdGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwK
LSAgICAgICAgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCBpbWFnZVNpemUsCi0gICAgICAgIDAsIHJl
aW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KG9mZnNldCkpOworICAgIG1fY29udGV4dC0+Y29tcHJl
c3NlZFRleFN1YkltYWdlMkQodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgd2lkdGgs
IGhlaWdodCwgZm9ybWF0LCBpbWFnZVNpemUsIG9mZnNldCk7CiB9CiAKIHZvaWQgV2ViR0wyUmVu
ZGVyaW5nQ29udGV4dDo6Y29tcHJlc3NlZFRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTHNpemVp
IHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEFycmF5QnVmZmVyVmll
dyYgc3JjRGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGhPdmVycmlk
ZSkKQEAgLTE0ODEsMTAgKzE0NjksNyBAQCB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmNv
bXByZXNzZWRUZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZQogICAgIGF1
dG8gc2xpY2UgPSBzbGljZUFycmF5QnVmZmVyVmlldygiY29tcHJlc3NlZFRleFN1YkltYWdlMkQi
LCBzcmNEYXRhLCBzcmNPZmZzZXQsIHNyY0xlbmd0aE92ZXJyaWRlKTsKICAgICBpZiAoIXNsaWNl
KQogICAgICAgICByZXR1cm47Ci0gICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuY29tcHJl
c3NlZFRleFN1YkltYWdlMkRSb2J1c3RBTkdMRSgKLSAgICAgICAgdGFyZ2V0LCBsZXZlbCwgeG9m
ZnNldCwgeW9mZnNldCwKLSAgICAgICAgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCBzbGljZS0+Ynl0
ZUxlbmd0aCgpLAotICAgICAgICBzbGljZS0+Ynl0ZUxlbmd0aCgpLCBzbGljZS0+YmFzZUFkZHJl
c3MoKSk7CisgICAgbV9jb250ZXh0LT5jb21wcmVzc2VkVGV4U3ViSW1hZ2UyRCh0YXJnZXQsIGxl
dmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHNsaWNlLT5ieXRl
TGVuZ3RoKCksIG1ha2VHQ0dMU3BhbihzbGljZS0+YmFzZUFkZHJlc3MoKSwgc2xpY2UtPmJ5dGVM
ZW5ndGgoKSkpOwogfQogCiB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmNvbXByZXNzZWRU
ZXhTdWJJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zm
c2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xpbnQgem9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBH
Q0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTHNp
emVpIGltYWdlU2l6ZSwgR0NHTGludDY0IG9mZnNldCkKQEAgLTE0OTksMTAgKzE0ODQsNyBAQCB2
b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmNvbXByZXNzZWRUZXhTdWJJbWFnZTNEKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGludCBsZQogICAgIH0KICAgICBpZiAoIXZhbGlkYXRlVGV4dHVyZTNE
QmluZGluZygiY29tcHJlc3NlZFRleFN1YkltYWdlM0QiLCB0YXJnZXQpKQogICAgICAgICByZXR1
cm47Ci0gICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuY29tcHJlc3NlZFRleFN1YkltYWdl
M0RSb2J1c3RBTkdMRSgKLSAgICAgICAgdGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwg
em9mZnNldCwKLSAgICAgICAgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGZvcm1hdCwgaW1hZ2VTaXpl
LAotICAgICAgICAwLCByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihvZmZzZXQpKTsKKyAgICBt
X2NvbnRleHQtPmNvbXByZXNzZWRUZXhTdWJJbWFnZTNEKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQs
IHlvZmZzZXQsIHpvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBmb3JtYXQsIGltYWdlU2l6
ZSwgb2Zmc2V0KTsKIH0KIAogdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojpjb21wcmVzc2Vk
VGV4U3ViSW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9m
ZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMaW50IHpvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwg
R0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMZW51bSBmb3JtYXQsIEFycmF5
QnVmZmVyVmlldyYgc3JjRGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5n
dGhPdmVycmlkZSkKQEAgLTE1MjAsMTAgKzE1MDIsNyBAQCB2b2lkIFdlYkdMMlJlbmRlcmluZ0Nv
bnRleHQ6OmNvbXByZXNzZWRUZXhTdWJJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBs
ZQogICAgIGF1dG8gc2xpY2UgPSBzbGljZUFycmF5QnVmZmVyVmlldygiY29tcHJlc3NlZFRleFN1
YkltYWdlM0QiLCBzcmNEYXRhLCBzcmNPZmZzZXQsIHNyY0xlbmd0aE92ZXJyaWRlKTsKICAgICBp
ZiAoIXNsaWNlKQogICAgICAgICByZXR1cm47Ci0gICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25z
KCkuY29tcHJlc3NlZFRleFN1YkltYWdlM0RSb2J1c3RBTkdMRSgKLSAgICAgICAgdGFyZ2V0LCBs
ZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgem9mZnNldCwKLSAgICAgICAgd2lkdGgsIGhlaWdodCwg
ZGVwdGgsIGZvcm1hdCwgc2xpY2UtPmJ5dGVMZW5ndGgoKSwKLSAgICAgICAgc2xpY2UtPmJ5dGVM
ZW5ndGgoKSwgc2xpY2UtPmJhc2VBZGRyZXNzKCkpOworICAgIG1fY29udGV4dC0+Y29tcHJlc3Nl
ZFRleFN1YkltYWdlM0QodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgem9mZnNldCwg
d2lkdGgsIGhlaWdodCwgZGVwdGgsIGZvcm1hdCwgc2xpY2UtPmJ5dGVMZW5ndGgoKSwgbWFrZUdD
R0xTcGFuKHNsaWNlLT5iYXNlQWRkcmVzcygpLCBzbGljZS0+Ynl0ZUxlbmd0aCgpKSk7CiB9CiAK
IEdDR0xpbnQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0RnJhZ0RhdGFMb2NhdGlvbihXZWJH
TFByb2dyYW0mIHByb2dyYW0sIGNvbnN0IFN0cmluZyYgbmFtZSkKQEAgLTE1NjMsNzIgKzE1NDIs
MTAyIEBAIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTR1aShXZWJHTFVuaWZv
cm1Mb2NhdGlvbiogbG9jYXRpb24sIEdDR0x1aW50CiAKIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29u
dGV4dDo6dW5pZm9ybTF1aXYoV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBVaW50MzJM
aXN0JiYgdmFsdWUsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQogewot
ICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlVW5pZm9ybVBhcmFt
ZXRlcnMoInVuaWZvcm0xdWl2IiwgbG9jYXRpb24sIHZhbHVlLCAxLCBzcmNPZmZzZXQsIHNyY0xl
bmd0aCkpCisgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSkKICAgICAgICAgcmV0dXJu
OwotICAgIG1fY29udGV4dC0+dW5pZm9ybTF1aXYobG9jYXRpb24tPmxvY2F0aW9uKCksIHZhbHVl
LmRhdGEoKSwgc3JjT2Zmc2V0LCBzcmNMZW5ndGggPyBzcmNMZW5ndGggOiAodmFsdWUubGVuZ3Ro
KCkgLSBzcmNPZmZzZXQpKTsKKyAgICBhdXRvIGRhdGEgPSB2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0
ZXJzKCJ1bmlmb3JtMXVpdiIsIGxvY2F0aW9uLCB2YWx1ZSwgMSwgc3JjT2Zmc2V0LCBzcmNMZW5n
dGgpOworICAgIGlmICghZGF0YSkKKyAgICAgICAgcmV0dXJuOworICAgIG1fY29udGV4dC0+dW5p
Zm9ybTF1aXYobG9jYXRpb24tPmxvY2F0aW9uKCksIGRhdGEudmFsdWUoKSk7CiB9CiAKIHZvaWQg
V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTJ1aXYoV2ViR0xVbmlmb3JtTG9jYXRpb24q
IGxvY2F0aW9uLCBVaW50MzJMaXN0JiYgdmFsdWUsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVp
bnQgc3JjTGVuZ3RoKQogewotICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZh
bGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMoInVuaWZvcm0ydWl2IiwgbG9jYXRpb24sIHZhbHVlLCAy
LCBzcmNPZmZzZXQsIHNyY0xlbmd0aCkpCisgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmco
KSkKICAgICAgICAgcmV0dXJuOwotICAgIG1fY29udGV4dC0+dW5pZm9ybTJ1aXYobG9jYXRpb24t
PmxvY2F0aW9uKCksIHZhbHVlLmRhdGEoKSwgc3JjT2Zmc2V0LCAoc3JjTGVuZ3RoID8gc3JjTGVu
Z3RoIDogdmFsdWUubGVuZ3RoKCkgLSBzcmNPZmZzZXQpIC8gMik7CisgICAgYXV0byBkYXRhID0g
dmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycygidW5pZm9ybTJ1aXYiLCBsb2NhdGlvbiwgdmFsdWUs
IDIsIHNyY09mZnNldCwgc3JjTGVuZ3RoKTsKKyAgICBpZiAoIWRhdGEpCisgICAgICAgIHJldHVy
bjsKKyAgICBtX2NvbnRleHQtPnVuaWZvcm0ydWl2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCBkYXRh
LnZhbHVlKCkpOwogfQogCiB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm0zdWl2
KFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgVWludDMyTGlzdCYmIHZhbHVlLCBHQ0dM
dWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKIHsKLSAgICBpZiAoaXNDb250ZXh0
TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKCJ1bmlmb3JtM3Vp
diIsIGxvY2F0aW9uLCB2YWx1ZSwgMywgc3JjT2Zmc2V0LCBzcmNMZW5ndGgpKQorICAgIGlmIChp
c0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBtX2NvbnRleHQt
PnVuaWZvcm0zdWl2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCB2YWx1ZS5kYXRhKCksIHNyY09mZnNl
dCwgKHNyY0xlbmd0aCA/IHNyY0xlbmd0aCA6IHZhbHVlLmxlbmd0aCgpIC0gc3JjT2Zmc2V0KSAv
IDMpOworICAgIGF1dG8gZGF0YSA9IHZhbGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMoInVuaWZvcm0z
dWl2IiwgbG9jYXRpb24sIHZhbHVlLCAzLCBzcmNPZmZzZXQsIHNyY0xlbmd0aCk7CisgICAgaWYg
KCFkYXRhKQorICAgICAgICByZXR1cm47CisgICAgbV9jb250ZXh0LT51bmlmb3JtM3Vpdihsb2Nh
dGlvbi0+bG9jYXRpb24oKSwgZGF0YS52YWx1ZSgpKTsKIH0KIAogdm9pZCBXZWJHTDJSZW5kZXJp
bmdDb250ZXh0Ojp1bmlmb3JtNHVpdihXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIFVp
bnQzMkxpc3QmJiB2YWx1ZSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgp
CiB7Ci0gICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVVbmlmb3Jt
UGFyYW1ldGVycygidW5pZm9ybTR1aXYiLCBsb2NhdGlvbiwgdmFsdWUsIDQsIHNyY09mZnNldCwg
c3JjTGVuZ3RoKSkKKyAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpKQogICAgICAgICBy
ZXR1cm47Ci0gICAgbV9jb250ZXh0LT51bmlmb3JtNHVpdihsb2NhdGlvbi0+bG9jYXRpb24oKSwg
dmFsdWUuZGF0YSgpLCBzcmNPZmZzZXQsIChzcmNMZW5ndGggPyBzcmNMZW5ndGggOiB2YWx1ZS5s
ZW5ndGgoKSAtIHNyY09mZnNldCkgLyA0KTsKKyAgICBhdXRvIGRhdGEgPSB2YWxpZGF0ZVVuaWZv
cm1QYXJhbWV0ZXJzKCJ1bmlmb3JtNHVpdiIsIGxvY2F0aW9uLCB2YWx1ZSwgNCwgc3JjT2Zmc2V0
LCBzcmNMZW5ndGgpOworICAgIGlmICghZGF0YSkKKyAgICAgICAgcmV0dXJuOworICAgIG1fY29u
dGV4dC0+dW5pZm9ybTR1aXYobG9jYXRpb24tPmxvY2F0aW9uKCksIGRhdGEudmFsdWUoKSk7CiB9
CiAKIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybU1hdHJpeDJ4M2Z2KFdlYkdM
VW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBGbG9hdDMy
TGlzdCYmIHYsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQogewotICAg
IGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlVW5pZm9ybU1hdHJpeFBh
cmFtZXRlcnMoInVuaWZvcm1NYXRyaXgyeDNmdiIsIGxvY2F0aW9uLCB0cmFuc3Bvc2UsIHYsIDYs
IHNyY09mZnNldCwgc3JjTGVuZ3RoKSkKKyAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygp
KQogICAgICAgICByZXR1cm47Ci0gICAgbV9jb250ZXh0LT51bmlmb3JtTWF0cml4MngzZnYobG9j
YXRpb24tPmxvY2F0aW9uKCksIHRyYW5zcG9zZSwgdi5kYXRhKCksIHNyY09mZnNldCwgKHNyY0xl
bmd0aCA/IHNyY0xlbmd0aCA6IHYubGVuZ3RoKCkgLSBzcmNPZmZzZXQpIC8gNik7CisgICAgYXV0
byBkYXRhID0gdmFsaWRhdGVVbmlmb3JtTWF0cml4UGFyYW1ldGVycygidW5pZm9ybU1hdHJpeDJ4
M2Z2IiwgbG9jYXRpb24sIHRyYW5zcG9zZSwgdiwgNiwgc3JjT2Zmc2V0LCBzcmNMZW5ndGgpOwor
ICAgIGlmICghZGF0YSkKKyAgICAgICAgcmV0dXJuOworICAgIG1fY29udGV4dC0+dW5pZm9ybU1h
dHJpeDJ4M2Z2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCB0cmFuc3Bvc2UsIGRhdGEudmFsdWUoKSk7
CiB9CiAKIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybU1hdHJpeDN4MmZ2KFdl
YkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBGbG9h
dDMyTGlzdCYmIHYsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQogewot
ICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlVW5pZm9ybU1hdHJp
eFBhcmFtZXRlcnMoInVuaWZvcm1NYXRyaXgzeDJmdiIsIGxvY2F0aW9uLCB0cmFuc3Bvc2UsIHYs
IDYsIHNyY09mZnNldCwgc3JjTGVuZ3RoKSkKKyAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGlu
ZygpKQogICAgICAgICByZXR1cm47Ci0gICAgbV9jb250ZXh0LT51bmlmb3JtTWF0cml4M3gyZnYo
bG9jYXRpb24tPmxvY2F0aW9uKCksIHRyYW5zcG9zZSwgdi5kYXRhKCksIHNyY09mZnNldCwgKHNy
Y0xlbmd0aCA/IHNyY0xlbmd0aCA6IHYubGVuZ3RoKCkgLSBzcmNPZmZzZXQpIC8gNik7CisgICAg
YXV0byBkYXRhID0gdmFsaWRhdGVVbmlmb3JtTWF0cml4UGFyYW1ldGVycygidW5pZm9ybU1hdHJp
eDN4MmZ2IiwgbG9jYXRpb24sIHRyYW5zcG9zZSwgdiwgNiwgc3JjT2Zmc2V0LCBzcmNMZW5ndGgp
OworICAgIGlmICghZGF0YSkKKyAgICAgICAgcmV0dXJuOworICAgIG1fY29udGV4dC0+dW5pZm9y
bU1hdHJpeDN4MmZ2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCB0cmFuc3Bvc2UsIGRhdGEudmFsdWUo
KSk7CiB9CiAKIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybU1hdHJpeDJ4NGZ2
KFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBG
bG9hdDMyTGlzdCYmIHYsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQog
ewotICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlVW5pZm9ybU1h
dHJpeFBhcmFtZXRlcnMoInVuaWZvcm1NYXRyaXgyeDRmdiIsIGxvY2F0aW9uLCB0cmFuc3Bvc2Us
IHYsIDgsIHNyY09mZnNldCwgc3JjTGVuZ3RoKSkKKyAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVu
ZGluZygpKQorICAgICAgICByZXR1cm47CisgICAgYXV0byBkYXRhID0gdmFsaWRhdGVVbmlmb3Jt
TWF0cml4UGFyYW1ldGVycygidW5pZm9ybU1hdHJpeDJ4NGZ2IiwgbG9jYXRpb24sIHRyYW5zcG9z
ZSwgdiwgOCwgc3JjT2Zmc2V0LCBzcmNMZW5ndGgpOworICAgIGlmICghZGF0YSkKICAgICAgICAg
cmV0dXJuOwotICAgIG1fY29udGV4dC0+dW5pZm9ybU1hdHJpeDJ4NGZ2KGxvY2F0aW9uLT5sb2Nh
dGlvbigpLCB0cmFuc3Bvc2UsIHYuZGF0YSgpLCBzcmNPZmZzZXQsIChzcmNMZW5ndGggPyBzcmNM
ZW5ndGggOiB2Lmxlbmd0aCgpIC0gc3JjT2Zmc2V0KSAvIDgpOworICAgIG1fY29udGV4dC0+dW5p
Zm9ybU1hdHJpeDJ4NGZ2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCB0cmFuc3Bvc2UsIGRhdGEudmFs
dWUoKSk7CiB9CiAKIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybU1hdHJpeDR4
MmZ2KFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3Nl
LCBGbG9hdDMyTGlzdCYmIHYsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3Ro
KQogewotICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlVW5pZm9y
bU1hdHJpeFBhcmFtZXRlcnMoInVuaWZvcm1NYXRyaXg0eDJmdiIsIGxvY2F0aW9uLCB0cmFuc3Bv
c2UsIHYsIDgsIHNyY09mZnNldCwgc3JjTGVuZ3RoKSkKKyAgICBpZiAoaXNDb250ZXh0TG9zdE9y
UGVuZGluZygpKQorICAgICAgICByZXR1cm47CisgICAgYXV0byBkYXRhID0gdmFsaWRhdGVVbmlm
b3JtTWF0cml4UGFyYW1ldGVycygidW5pZm9ybU1hdHJpeDR4MmZ2IiwgbG9jYXRpb24sIHRyYW5z
cG9zZSwgdiwgOCwgc3JjT2Zmc2V0LCBzcmNMZW5ndGgpOworICAgIGlmICghZGF0YSkKICAgICAg
ICAgcmV0dXJuOwotICAgIG1fY29udGV4dC0+dW5pZm9ybU1hdHJpeDR4MmZ2KGxvY2F0aW9uLT5s
b2NhdGlvbigpLCB0cmFuc3Bvc2UsIHYuZGF0YSgpLCBzcmNPZmZzZXQsIChzcmNMZW5ndGggPyBz
cmNMZW5ndGggOiB2Lmxlbmd0aCgpIC0gc3JjT2Zmc2V0KSAvIDgpOworICAgIG1fY29udGV4dC0+
dW5pZm9ybU1hdHJpeDR4MmZ2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCB0cmFuc3Bvc2UsIGRhdGEu
dmFsdWUoKSk7CiB9CiAKIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybU1hdHJp
eDN4NGZ2KFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNw
b3NlLCBGbG9hdDMyTGlzdCYmIHYsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVu
Z3RoKQogewotICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlVW5p
Zm9ybU1hdHJpeFBhcmFtZXRlcnMoInVuaWZvcm1NYXRyaXgzeDRmdiIsIGxvY2F0aW9uLCB0cmFu
c3Bvc2UsIHYsIDEyLCBzcmNPZmZzZXQsIHNyY0xlbmd0aCkpCisgICAgaWYgKGlzQ29udGV4dExv
c3RPclBlbmRpbmcoKSkKKyAgICAgICAgcmV0dXJuOworICAgIGF1dG8gZGF0YSA9IHZhbGlkYXRl
VW5pZm9ybU1hdHJpeFBhcmFtZXRlcnMoInVuaWZvcm1NYXRyaXgzeDRmdiIsIGxvY2F0aW9uLCB0
cmFuc3Bvc2UsIHYsIDEyLCBzcmNPZmZzZXQsIHNyY0xlbmd0aCk7CisgICAgaWYgKCFkYXRhKQog
ICAgICAgICByZXR1cm47Ci0gICAgbV9jb250ZXh0LT51bmlmb3JtTWF0cml4M3g0ZnYobG9jYXRp
b24tPmxvY2F0aW9uKCksIHRyYW5zcG9zZSwgdi5kYXRhKCksIHNyY09mZnNldCwgKHNyY0xlbmd0
aCA/IHNyY0xlbmd0aCA6IHYubGVuZ3RoKCkgLSBzcmNPZmZzZXQpIC8gMTIpOworICAgIG1fY29u
dGV4dC0+dW5pZm9ybU1hdHJpeDN4NGZ2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCB0cmFuc3Bvc2Us
IGRhdGEudmFsdWUoKSk7CiB9CiAKIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9y
bU1hdHJpeDR4M2Z2KFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgR0NHTGJvb2xlYW4g
dHJhbnNwb3NlLCBGbG9hdDMyTGlzdCYmIHYsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQg
c3JjTGVuZ3RoKQogewotICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlk
YXRlVW5pZm9ybU1hdHJpeFBhcmFtZXRlcnMoInVuaWZvcm1NYXRyaXg0eDNmdiIsIGxvY2F0aW9u
LCB0cmFuc3Bvc2UsIHYsIDEyLCBzcmNPZmZzZXQsIHNyY0xlbmd0aCkpCisgICAgaWYgKGlzQ29u
dGV4dExvc3RPclBlbmRpbmcoKSkKKyAgICAgICAgcmV0dXJuOworICAgIGF1dG8gZGF0YSA9IHZh
bGlkYXRlVW5pZm9ybU1hdHJpeFBhcmFtZXRlcnMoInVuaWZvcm1NYXRyaXg0eDNmdiIsIGxvY2F0
aW9uLCB0cmFuc3Bvc2UsIHYsIDEyLCBzcmNPZmZzZXQsIHNyY0xlbmd0aCk7CisgICAgaWYgKCFk
YXRhKQogICAgICAgICByZXR1cm47Ci0gICAgbV9jb250ZXh0LT51bmlmb3JtTWF0cml4NHgzZnYo
bG9jYXRpb24tPmxvY2F0aW9uKCksIHRyYW5zcG9zZSwgdi5kYXRhKCksIHNyY09mZnNldCwgKHNy
Y0xlbmd0aCA/IHNyY0xlbmd0aCA6IHYubGVuZ3RoKCkgLSBzcmNPZmZzZXQpIC8gMTIpOworICAg
IG1fY29udGV4dC0+dW5pZm9ybU1hdHJpeDR4M2Z2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCB0cmFu
c3Bvc2UsIGRhdGEudmFsdWUoKSk7CiB9CiAKIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6
dmVydGV4QXR0cmliSTRpKEdDR0x1aW50IGluZGV4LCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NH
TGludCB6LCBHQ0dMaW50IHcpCkBAIC0xNjY0LDcgKzE2NzMsNyBAQCB2b2lkIFdlYkdMMlJlbmRl
cmluZ0NvbnRleHQ6OnZlcnRleEF0dHJpYkk0aXYoR0NHTHVpbnQgaW5kZXgsIEludDMyTGlzdCYm
IGxpc3QpCiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZB
TElEX1ZBTFVFLCAidmVydGV4QXR0cmliSTRpdiIsICJpbmRleCBvdXQgb2YgcmFuZ2UiKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBtX2NvbnRleHQtPnZlcnRleEF0dHJpYkk0aXYoaW5k
ZXgsIGRhdGEpOworICAgIG1fY29udGV4dC0+dmVydGV4QXR0cmliSTRpdihpbmRleCwgbWFrZUdD
R0xTcGFuPDQ+KGRhdGEpKTsKICAgICBtX3ZlcnRleEF0dHJpYlZhbHVlW2luZGV4XS50eXBlID0g
R3JhcGhpY3NDb250ZXh0R0w6OklOVDsKICAgICBtZW1jcHkobV92ZXJ0ZXhBdHRyaWJWYWx1ZVtp
bmRleF0uaVZhbHVlLCBkYXRhLCBzaXplb2YobV92ZXJ0ZXhBdHRyaWJWYWx1ZVtpbmRleF0uaVZh
bHVlKSk7CiB9CkBAIC0xNzAyLDcgKzE3MTEsNyBAQCB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRl
eHQ6OnZlcnRleEF0dHJpYkk0dWl2KEdDR0x1aW50IGluZGV4LCBVaW50MzJMaXN0JiYgbGlzdAog
ICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9WQUxV
RSwgInZlcnRleEF0dHJpYkk0dWl2IiwgImluZGV4IG91dCBvZiByYW5nZSIpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQotICAgIG1fY29udGV4dC0+dmVydGV4QXR0cmliSTR1aXYoaW5kZXgsIGRh
dGEpOworICAgIG1fY29udGV4dC0+dmVydGV4QXR0cmliSTR1aXYoaW5kZXgsIG1ha2VHQ0dMU3Bh
bjw0PihkYXRhKSk7CiAgICAgbV92ZXJ0ZXhBdHRyaWJWYWx1ZVtpbmRleF0udHlwZSA9IEdyYXBo
aWNzQ29udGV4dEdMOjpVTlNJR05FRF9JTlQ7CiAgICAgbWVtY3B5KG1fdmVydGV4QXR0cmliVmFs
dWVbaW5kZXhdLnVpVmFsdWUsIGRhdGEsIHNpemVvZihtX3ZlcnRleEF0dHJpYlZhbHVlW2luZGV4
XS51aVZhbHVlKSk7CiB9CkBAIC0xNzYzLDggKzE3NzIsOCBAQCB2b2lkIFdlYkdMMlJlbmRlcmlu
Z0NvbnRleHQ6OmRyYXdCdWZmZXJzKGNvbnN0IFZlY3RvcjxHQ0dMZW51bT4mIGJ1ZmZlcnMpCiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgLy8gQmVjYXVzZSB0aGUgYmFj
a2J1ZmZlciBpcyBzaW11bGF0ZWQgb24gYWxsIGN1cnJlbnQgV2ViS2l0IHBvcnRzLCB3ZSBuZWVk
IHRvIGNoYW5nZSBCQUNLIHRvIENPTE9SX0FUVEFDSE1FTlQwLgotICAgICAgICBHQ0dMZW51bSB2
YWx1ZSA9IChidWZzWzBdID09IEdyYXBoaWNzQ29udGV4dEdMOjpCQUNLKSA/IEdyYXBoaWNzQ29u
dGV4dEdMOjpDT0xPUl9BVFRBQ0hNRU5UMCA6IEdyYXBoaWNzQ29udGV4dEdMOjpOT05FOwotICAg
ICAgICBtX2NvbnRleHQtPmRyYXdCdWZmZXJzKDEsICZ2YWx1ZSk7CisgICAgICAgIEdDR0xlbnVt
IHZhbHVlWzFdIHsgKGJ1ZnNbMF0gPT0gR3JhcGhpY3NDb250ZXh0R0w6OkJBQ0spID8gR3JhcGhp
Y3NDb250ZXh0R0w6OkNPTE9SX0FUVEFDSE1FTlQwIDogR3JhcGhpY3NDb250ZXh0R0w6Ok5PTkUg
fTsKKyAgICAgICAgbV9jb250ZXh0LT5kcmF3QnVmZmVycyh2YWx1ZSk7CiAgICAgICAgIHNldEJh
Y2tEcmF3QnVmZmVyKGJ1ZnNbMF0pOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGlmIChuID4gZ2V0
TWF4RHJhd0J1ZmZlcnMoKSkgewpAQCAtMTc4MywyOCArMTc5MiwzNiBAQCB2b2lkIFdlYkdMMlJl
bmRlcmluZ0NvbnRleHQ6OmRyYXdCdWZmZXJzKGNvbnN0IFZlY3RvcjxHQ0dMZW51bT4mIGJ1ZmZl
cnMpCiAKIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Y2xlYXJCdWZmZXJpdihHQ0dMZW51
bSBidWZmZXIsIEdDR0xpbnQgZHJhd2J1ZmZlciwgSW50MzJMaXN0JiYgdmFsdWVzLCBHQ0dMdWlu
dCBzcmNPZmZzZXQpCiB7Ci0gICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhdmFs
aWRhdGVDbGVhckJ1ZmZlcigiY2xlYXJCdWZmZXJpdiIsIGJ1ZmZlciwgdmFsdWVzLmxlbmd0aCgp
LCBzcmNPZmZzZXQpKQorICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCisgICAgICAg
IHJldHVybjsKKyAgICBhdXRvIGRhdGEgPSB2YWxpZGF0ZUNsZWFyQnVmZmVyKCJjbGVhckJ1ZmZl
cml2IiwgYnVmZmVyLCB2YWx1ZXMsIHNyY09mZnNldCk7CisgICAgaWYgKCFkYXRhKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBtX2NvbnRleHQtPmNsZWFyQnVmZmVyaXYoYnVmZmVyLCBkcmF3YnVm
ZmVyLCB2YWx1ZXMuZGF0YSgpLCBzcmNPZmZzZXQpOworICAgIG1fY29udGV4dC0+Y2xlYXJCdWZm
ZXJpdihidWZmZXIsIGRyYXdidWZmZXIsIGRhdGEudmFsdWUoKSk7CiAgICAgdXBkYXRlQnVmZmVy
c1RvQXV0b0NsZWFyKENsZWFyQnVmZmVyQ2FsbGVyOjpDbGVhckJ1ZmZlcml2LCBidWZmZXIsIGRy
YXdidWZmZXIpOwogfQogCiB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmNsZWFyQnVmZmVy
dWl2KEdDR0xlbnVtIGJ1ZmZlciwgR0NHTGludCBkcmF3YnVmZmVyLCBVaW50MzJMaXN0JiYgdmFs
dWVzLCBHQ0dMdWludCBzcmNPZmZzZXQpCiB7Ci0gICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRp
bmcoKSB8fCAhdmFsaWRhdGVDbGVhckJ1ZmZlcigiY2xlYXJCdWZmZXJ1aXYiLCBidWZmZXIsIHZh
bHVlcy5sZW5ndGgoKSwgc3JjT2Zmc2V0KSkKKyAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGlu
ZygpKQogICAgICAgICByZXR1cm47Ci0KLSAgICBtX2NvbnRleHQtPmNsZWFyQnVmZmVydWl2KGJ1
ZmZlciwgZHJhd2J1ZmZlciwgdmFsdWVzLmRhdGEoKSwgc3JjT2Zmc2V0KTsKKyAgICBhdXRvIGRh
dGEgPSB2YWxpZGF0ZUNsZWFyQnVmZmVyKCJjbGVhckJ1ZmZlcnVpdiIsIGJ1ZmZlciwgdmFsdWVz
LCBzcmNPZmZzZXQpOworICAgIGlmICghZGF0YSkKKyAgICAgICAgcmV0dXJuOworICAgIG1fY29u
dGV4dC0+Y2xlYXJCdWZmZXJ1aXYoYnVmZmVyLCBkcmF3YnVmZmVyLCBkYXRhLnZhbHVlKCkpOwog
ICAgIHVwZGF0ZUJ1ZmZlcnNUb0F1dG9DbGVhcihDbGVhckJ1ZmZlckNhbGxlcjo6Q2xlYXJCdWZm
ZXJ1aXYsIGJ1ZmZlciwgZHJhd2J1ZmZlcik7CiB9CiAKIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29u
dGV4dDo6Y2xlYXJCdWZmZXJmdihHQ0dMZW51bSBidWZmZXIsIEdDR0xpbnQgZHJhd2J1ZmZlciwg
RmxvYXQzMkxpc3QmJiB2YWx1ZXMsIEdDR0x1aW50IHNyY09mZnNldCkKIHsKLSAgICBpZiAoaXND
b250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZUNsZWFyQnVmZmVyKCJjbGVhckJ1ZmZl
cmZ2IiwgYnVmZmVyLCB2YWx1ZXMubGVuZ3RoKCksIHNyY09mZnNldCkpCisgICAgaWYgKGlzQ29u
dGV4dExvc3RPclBlbmRpbmcoKSkKKyAgICAgICAgcmV0dXJuOworICAgIGF1dG8gZGF0YSA9IHZh
bGlkYXRlQ2xlYXJCdWZmZXIoImNsZWFyQnVmZmVyZnYiLCBidWZmZXIsIHZhbHVlcywgc3JjT2Zm
c2V0KTsKKyAgICBpZiAoIWRhdGEpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fY29udGV4dC0+
Y2xlYXJCdWZmZXJmdihidWZmZXIsIGRyYXdidWZmZXIsIHZhbHVlcy5kYXRhKCksIHNyY09mZnNl
dCk7CisgICAgbV9jb250ZXh0LT5jbGVhckJ1ZmZlcmZ2KGJ1ZmZlciwgZHJhd2J1ZmZlciwgZGF0
YS52YWx1ZSgpKTsKICAgICAvLyBjbGVhckJ1ZmZlcml2IGFuZCBjbGVhckJ1ZmZlcnVpdiB3aWxs
IGN1cnJlbnRseSBnZW5lcmF0ZSBhbiBlcnJvcgogICAgIC8vIGlmIHRoZXkncmUgY2FsbGVkIGFn
YWluc3QgdGhlIGRlZmF1bHQgYmFjayBidWZmZXIuIElmIHN1cHBvcnQgZm9yCiAgICAgLy8gZXh0
ZW5kZWQgY2FudmFzIGNvbG9yIHNwYWNlcyBpcyBhZGRlZCwgdGhpcyBjYWxsIG1pZ2h0IG5lZWQg
dG8gYmUKQEAgLTMzNzIsMTEwICszMzg5LDE0NCBAQCBib29sIFdlYkdMMlJlbmRlcmluZ0NvbnRl
eHQ6OnZhbGlkYXRlQ2FwYWJpbGl0eShjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIEdDR0xlbgog
ICAgIH0KIH0KIAotYm9vbCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp2YWxpZGF0ZUNsZWFyQnVm
ZmVyKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgR0NHTGVudW0gYnVmZmVyLCBzaXplX3Qgc2l6
ZSwgR0NHTHVpbnQgc3JjT2Zmc2V0KQordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVHlw
ZWRBcnJheVR5cGU+CitPcHRpb25hbDxHQ0dMU3Bhbjxjb25zdCBUPj4gV2ViR0wyUmVuZGVyaW5n
Q29udGV4dDo6dmFsaWRhdGVDbGVhckJ1ZmZlcihjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIEdD
R0xlbnVtIGJ1ZmZlciwgVHlwZWRMaXN0PFR5cGVkQXJyYXlUeXBlLCBUPiYgdmFsdWVzLCBHQ0dM
dWludCBzcmNPZmZzZXQpCiB7Ci0gICAgQ2hlY2tlZDxHQ0dMc2l6ZWksIFJlY29yZE92ZXJmbG93
PiBjaGVja2VkU2l6ZShzaXplKTsKKyAgICBDaGVja2VkPEdDR0xzaXplaSwgUmVjb3JkT3ZlcmZs
b3c+IGNoZWNrZWRTaXplKHZhbHVlcy5sZW5ndGgoKSk7CiAgICAgY2hlY2tlZFNpemUgLT0gc3Jj
T2Zmc2V0OwogICAgIGlmIChjaGVja2VkU2l6ZS5oYXNPdmVyZmxvd2VkKCkpIHsKICAgICAgICAg
c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfVkFMVUUsIGZ1bmN0
aW9uTmFtZSwgImludmFsaWQgYXJyYXkgc2l6ZSAvIHNyY09mZnNldCIpOwotICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgIHJldHVybiB7IH07CiAgICAgfQogICAgIHN3aXRjaCAoYnVmZmVy
KSB7CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09MT1I6CiAgICAgICAgIGlmIChjaGVj
a2VkU2l6ZS51bnNhZmVHZXQoKSA8IDQpIHsKICAgICAgICAgICAgIHN5bnRoZXNpemVHTEVycm9y
KEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX1ZBTFVFLCBmdW5jdGlvbk5hbWUsICJpbnZhbGlk
IGFycmF5IHNpemUgLyBzcmNPZmZzZXQiKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgICAgIHJldHVybiB7IH07CiAgICAgICAgIH0KLSAgICAgICAgYnJlYWs7CisgICAgICAg
IHJldHVybiBtYWtlR0NHTFNwYW4odmFsdWVzLmRhdGEoKSArIHNyY09mZnNldCwgNCk7CiAgICAg
Y2FzZSBHcmFwaGljc0NvbnRleHRHTDo6REVQVEg6CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRH
TDo6U1RFTkNJTDoKICAgICAgICAgaWYgKGNoZWNrZWRTaXplLnVuc2FmZUdldCgpIDwgMSkgewog
ICAgICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURf
VkFMVUUsIGZ1bmN0aW9uTmFtZSwgImludmFsaWQgYXJyYXkgc2l6ZSAvIHNyY09mZnNldCIpOwot
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgcmV0dXJuIHsgfTsKICAgICAg
ICAgfQotICAgICAgICBicmVhazsKKyAgICAgICAgcmV0dXJuIG1ha2VHQ0dMU3Bhbih2YWx1ZXMu
ZGF0YSgpICsgc3JjT2Zmc2V0LCAxKTsKKwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHN5bnRoZXNp
emVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX0VOVU0sIGZ1bmN0aW9uTmFtZSwg
ImludmFsaWQgYnVmZmVyIik7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJu
IHsgfTsKICAgICB9Ci0gICAgcmV0dXJuIHRydWU7CiB9CiAKIHZvaWQgV2ViR0wyUmVuZGVyaW5n
Q29udGV4dDo6dW5pZm9ybTFmdihXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEZsb2F0
MzJMaXN0IGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQogewot
ICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlVW5pZm9ybVBhcmFt
ZXRlcnMoInVuaWZvcm0xZnYiLCBsb2NhdGlvbiwgZGF0YSwgMSwgc3JjT2Zmc2V0LCBzcmNMZW5n
dGgpKQorICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCisgICAgICAgIHJldHVybjsK
KyAgICBhdXRvIHJlc3VsdCA9IHZhbGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMoInVuaWZvcm0xZnYi
LCBsb2NhdGlvbiwgZGF0YSwgMSwgc3JjT2Zmc2V0LCBzcmNMZW5ndGgpOworICAgIGlmICghcmVz
dWx0KQogICAgICAgICByZXR1cm47Ci0gICAgbV9jb250ZXh0LT51bmlmb3JtMWZ2KGxvY2F0aW9u
LT5sb2NhdGlvbigpLCBkYXRhLmRhdGEoKSwgc3JjT2Zmc2V0LCBzcmNMZW5ndGggPyBzcmNMZW5n
dGggOiAoZGF0YS5sZW5ndGgoKSAtIHNyY09mZnNldCkpOworICAgIG1fY29udGV4dC0+dW5pZm9y
bTFmdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgcmVzdWx0LnZhbHVlKCkpOwogfQogCiB2b2lkIFdl
YkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm0yZnYoV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxv
Y2F0aW9uLCBGbG9hdDMyTGlzdCBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNy
Y0xlbmd0aCkKIHsKLSAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0
ZVVuaWZvcm1QYXJhbWV0ZXJzKCJ1bmlmb3JtMmZ2IiwgbG9jYXRpb24sIGRhdGEsIDIsIHNyY09m
ZnNldCwgc3JjTGVuZ3RoKSkKKyAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpKQorICAg
ICAgICByZXR1cm47CisgICAgYXV0byByZXN1bHQgPSB2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJz
KCJ1bmlmb3JtMmZ2IiwgbG9jYXRpb24sIGRhdGEsIDIsIHNyY09mZnNldCwgc3JjTGVuZ3RoKTsK
KyAgICBpZiAoIXJlc3VsdCkKICAgICAgICAgcmV0dXJuOwotICAgIG1fY29udGV4dC0+dW5pZm9y
bTJmdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgZGF0YS5kYXRhKCksIHNyY09mZnNldCwgKHNyY0xl
bmd0aCA/IHNyY0xlbmd0aCA6IGRhdGEubGVuZ3RoKCkgLSBzcmNPZmZzZXQpIC8gMik7CisgICAg
bV9jb250ZXh0LT51bmlmb3JtMmZ2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCByZXN1bHQudmFsdWUo
KSk7CiB9CiAKIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTNmdihXZWJHTFVu
aWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEZsb2F0MzJMaXN0IGRhdGEsIEdDR0x1aW50IHNyY09m
ZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQogewotICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5k
aW5nKCkgfHwgIXZhbGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMoInVuaWZvcm0zZnYiLCBsb2NhdGlv
biwgZGF0YSwgMywgc3JjT2Zmc2V0LCBzcmNMZW5ndGgpKQorICAgIGlmIChpc0NvbnRleHRMb3N0
T3JQZW5kaW5nKCkpCisgICAgICAgIHJldHVybjsKKyAgICBhdXRvIHJlc3VsdCA9IHZhbGlkYXRl
VW5pZm9ybVBhcmFtZXRlcnMoInVuaWZvcm0zZnYiLCBsb2NhdGlvbiwgZGF0YSwgMywgc3JjT2Zm
c2V0LCBzcmNMZW5ndGgpOworICAgIGlmICghcmVzdWx0KQogICAgICAgICByZXR1cm47Ci0gICAg
bV9jb250ZXh0LT51bmlmb3JtM2Z2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCBkYXRhLmRhdGEoKSwg
c3JjT2Zmc2V0LCAoc3JjTGVuZ3RoID8gc3JjTGVuZ3RoIDogZGF0YS5sZW5ndGgoKSAtIHNyY09m
ZnNldCkgLyAzKTsKKyAgICBtX2NvbnRleHQtPnVuaWZvcm0zZnYobG9jYXRpb24tPmxvY2F0aW9u
KCksIHJlc3VsdC52YWx1ZSgpKTsKIH0KIAogdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1
bmlmb3JtNGZ2KFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgRmxvYXQzMkxpc3QgZGF0
YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCiB7Ci0gICAgaWYgKGlz
Q29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycygidW5p
Zm9ybTRmdiIsIGxvY2F0aW9uLCBkYXRhLCA0LCBzcmNPZmZzZXQsIHNyY0xlbmd0aCkpCisgICAg
aWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSkKICAgICAgICAgcmV0dXJuOwotICAgIG1fY29u
dGV4dC0+dW5pZm9ybTRmdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgZGF0YS5kYXRhKCksIHNyY09m
ZnNldCwgKHNyY0xlbmd0aCA/IHNyY0xlbmd0aCA6IGRhdGEubGVuZ3RoKCkgLSBzcmNPZmZzZXQp
IC8gNCk7CisgICAgYXV0byByZXN1bHQgPSB2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKCJ1bmlm
b3JtNGZ2IiwgbG9jYXRpb24sIGRhdGEsIDQsIHNyY09mZnNldCwgc3JjTGVuZ3RoKTsKKyAgICBp
ZiAoIXJlc3VsdCkKKyAgICAgICAgcmV0dXJuOworICAgIG1fY29udGV4dC0+dW5pZm9ybTRmdihs
b2NhdGlvbi0+bG9jYXRpb24oKSwgcmVzdWx0LnZhbHVlKCkpOwogfQogCiB2b2lkIFdlYkdMMlJl
bmRlcmluZ0NvbnRleHQ6OnVuaWZvcm0xaXYoV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9u
LCBJbnQzMkxpc3QgZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgp
CiB7Ci0gICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVVbmlmb3Jt
UGFyYW1ldGVycygidW5pZm9ybTFpdiIsIGxvY2F0aW9uLCBkYXRhLCAxLCBzcmNPZmZzZXQsIHNy
Y0xlbmd0aCkpCisgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSkKICAgICAgICAgcmV0
dXJuOwotICAgIG1fY29udGV4dC0+dW5pZm9ybTFpdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgZGF0
YS5kYXRhKCksIHNyY09mZnNldCwgc3JjTGVuZ3RoID8gc3JjTGVuZ3RoIDogKGRhdGEubGVuZ3Ro
KCkgLSBzcmNPZmZzZXQpKTsKKyAgICBhdXRvIHJlc3VsdCA9IHZhbGlkYXRlVW5pZm9ybVBhcmFt
ZXRlcnMoInVuaWZvcm0xaXYiLCBsb2NhdGlvbiwgZGF0YSwgMSwgc3JjT2Zmc2V0LCBzcmNMZW5n
dGgpOworICAgIGlmICghcmVzdWx0KQorICAgICAgICByZXR1cm47CisgICAgbV9jb250ZXh0LT51
bmlmb3JtMWl2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCByZXN1bHQudmFsdWUoKSk7CiB9CiAKIHZv
aWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTJpdihXZWJHTFVuaWZvcm1Mb2NhdGlv
biogbG9jYXRpb24sIEludDMyTGlzdCBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50
IHNyY0xlbmd0aCkKIHsKLSAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxp
ZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKCJ1bmlmb3JtMml2IiwgbG9jYXRpb24sIGRhdGEsIDIsIHNy
Y09mZnNldCwgc3JjTGVuZ3RoKSkKKyAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpKQog
ICAgICAgICByZXR1cm47Ci0gICAgbV9jb250ZXh0LT51bmlmb3JtMml2KGxvY2F0aW9uLT5sb2Nh
dGlvbigpLCBkYXRhLmRhdGEoKSwgc3JjT2Zmc2V0LCAoc3JjTGVuZ3RoID8gc3JjTGVuZ3RoIDog
ZGF0YS5sZW5ndGgoKSAtIHNyY09mZnNldCkgLyAyKTsKKyAgICBhdXRvIHJlc3VsdCA9IHZhbGlk
YXRlVW5pZm9ybVBhcmFtZXRlcnMoInVuaWZvcm0yaXYiLCBsb2NhdGlvbiwgZGF0YSwgMiwgc3Jj
T2Zmc2V0LCBzcmNMZW5ndGgpOworICAgIGlmICghcmVzdWx0KQorICAgICAgICByZXR1cm47Cisg
ICAgbV9jb250ZXh0LT51bmlmb3JtMml2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCByZXN1bHQudmFs
dWUoKSk7CiB9CiAKIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTNpdihXZWJH
TFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEludDMyTGlzdCBkYXRhLCBHQ0dMdWludCBzcmNP
ZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKIHsKLSAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVu
ZGluZygpIHx8ICF2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKCJ1bmlmb3JtM2l2IiwgbG9jYXRp
b24sIGRhdGEsIDMsIHNyY09mZnNldCwgc3JjTGVuZ3RoKSkKKyAgICBpZiAoaXNDb250ZXh0TG9z
dE9yUGVuZGluZygpKQogICAgICAgICByZXR1cm47Ci0gICAgbV9jb250ZXh0LT51bmlmb3JtM2l2
KGxvY2F0aW9uLT5sb2NhdGlvbigpLCBkYXRhLmRhdGEoKSwgc3JjT2Zmc2V0LCAoc3JjTGVuZ3Ro
ID8gc3JjTGVuZ3RoIDogZGF0YS5sZW5ndGgoKSAtIHNyY09mZnNldCkgLyAzKTsKKyAgICBhdXRv
IHJlc3VsdCA9IHZhbGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMoInVuaWZvcm0zaXYiLCBsb2NhdGlv
biwgZGF0YSwgMywgc3JjT2Zmc2V0LCBzcmNMZW5ndGgpOworICAgIGlmICghcmVzdWx0KQorICAg
ICAgICByZXR1cm47CisgICAgbV9jb250ZXh0LT51bmlmb3JtM2l2KGxvY2F0aW9uLT5sb2NhdGlv
bigpLCByZXN1bHQudmFsdWUoKSk7CiB9CiAKIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6
dW5pZm9ybTRpdihXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEludDMyTGlzdCBkYXRh
LCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKIHsKLSAgICBpZiAoaXND
b250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKCJ1bmlm
b3JtNGl2IiwgbG9jYXRpb24sIGRhdGEsIDQsIHNyY09mZnNldCwgc3JjTGVuZ3RoKSkKKyAgICBp
ZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpKQogICAgICAgICByZXR1cm47Ci0gICAgbV9jb250
ZXh0LT51bmlmb3JtNGl2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCBkYXRhLmRhdGEoKSwgc3JjT2Zm
c2V0LCAoc3JjTGVuZ3RoID8gc3JjTGVuZ3RoIDogZGF0YS5sZW5ndGgoKSAtIHNyY09mZnNldCkg
LyA0KTsKKyAgICBhdXRvIHJlc3VsdCA9IHZhbGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMoInVuaWZv
cm00aXYiLCBsb2NhdGlvbiwgZGF0YSwgNCwgc3JjT2Zmc2V0LCBzcmNMZW5ndGgpOworICAgIGlm
ICghcmVzdWx0KQorICAgICAgICByZXR1cm47CisgICAgbV9jb250ZXh0LT51bmlmb3JtNGl2KGxv
Y2F0aW9uLT5sb2NhdGlvbigpLCByZXN1bHQudmFsdWUoKSk7CiB9CiAKIHZvaWQgV2ViR0wyUmVu
ZGVyaW5nQ29udGV4dDo6dW5pZm9ybU1hdHJpeDJmdihXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9j
YXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgRmxvYXQzMkxpc3QgZGF0YSwgR0NHTHVpbnQg
c3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCiB7Ci0gICAgaWYgKGlzQ29udGV4dExvc3RP
clBlbmRpbmcoKSB8fCAhdmFsaWRhdGVVbmlmb3JtTWF0cml4UGFyYW1ldGVycygidW5pZm9ybU1h
dHJpeDJmdiIsIGxvY2F0aW9uLCB0cmFuc3Bvc2UsIGRhdGEsIDIqMiwgc3JjT2Zmc2V0LCBzcmNM
ZW5ndGgpKQorICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCiAgICAgICAgIHJldHVy
bjsKLSAgICBtX2NvbnRleHQtPnVuaWZvcm1NYXRyaXgyZnYobG9jYXRpb24tPmxvY2F0aW9uKCks
IHRyYW5zcG9zZSwgZGF0YS5kYXRhKCksIHNyY09mZnNldCwgKHNyY0xlbmd0aCA/IHNyY0xlbmd0
aCA6IGRhdGEubGVuZ3RoKCkgLSBzcmNPZmZzZXQpIC8gKDIqMikpOworICAgIGF1dG8gcmVzdWx0
ID0gdmFsaWRhdGVVbmlmb3JtTWF0cml4UGFyYW1ldGVycygidW5pZm9ybU1hdHJpeDJmdiIsIGxv
Y2F0aW9uLCB0cmFuc3Bvc2UsIGRhdGEsIDIqMiwgc3JjT2Zmc2V0LCBzcmNMZW5ndGgpOworICAg
IGlmICghcmVzdWx0KQorICAgICAgICByZXR1cm47CisgICAgbV9jb250ZXh0LT51bmlmb3JtTWF0
cml4MmZ2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCB0cmFuc3Bvc2UsIHJlc3VsdC52YWx1ZSgpKTsK
IH0KIAogdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtTWF0cml4M2Z2KFdlYkdM
VW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBGbG9hdDMy
TGlzdCBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKIHsKLSAg
ICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVVuaWZvcm1NYXRyaXhQ
YXJhbWV0ZXJzKCJ1bmlmb3JtTWF0cml4M2Z2IiwgbG9jYXRpb24sIHRyYW5zcG9zZSwgZGF0YSwg
MyozLCBzcmNPZmZzZXQsIHNyY0xlbmd0aCkpCisgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRp
bmcoKSkKICAgICAgICAgcmV0dXJuOwotICAgIG1fY29udGV4dC0+dW5pZm9ybU1hdHJpeDNmdihs
b2NhdGlvbi0+bG9jYXRpb24oKSwgdHJhbnNwb3NlLCBkYXRhLmRhdGEoKSwgc3JjT2Zmc2V0LCAo
c3JjTGVuZ3RoID8gc3JjTGVuZ3RoIDogZGF0YS5sZW5ndGgoKSAtIHNyY09mZnNldCkgLyAoMyoz
KSk7CisgICAgYXV0byByZXN1bHQgPSB2YWxpZGF0ZVVuaWZvcm1NYXRyaXhQYXJhbWV0ZXJzKCJ1
bmlmb3JtTWF0cml4M2Z2IiwgbG9jYXRpb24sIHRyYW5zcG9zZSwgZGF0YSwgMyozLCBzcmNPZmZz
ZXQsIHNyY0xlbmd0aCk7CisgICAgaWYgKCFyZXN1bHQpCisgICAgICAgIHJldHVybjsKKyAgICBt
X2NvbnRleHQtPnVuaWZvcm1NYXRyaXgzZnYobG9jYXRpb24tPmxvY2F0aW9uKCksIHRyYW5zcG9z
ZSwgcmVzdWx0LnZhbHVlKCkpOwogfQogCiB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVu
aWZvcm1NYXRyaXg0ZnYoV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBHQ0dMYm9vbGVh
biB0cmFuc3Bvc2UsIEZsb2F0MzJMaXN0IGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVp
bnQgc3JjTGVuZ3RoKQogewotICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZh
bGlkYXRlVW5pZm9ybU1hdHJpeFBhcmFtZXRlcnMoInVuaWZvcm1NYXRyaXg0ZnYiLCBsb2NhdGlv
biwgdHJhbnNwb3NlLCBkYXRhLCA0KjQsIHNyY09mZnNldCwgc3JjTGVuZ3RoKSkKKyAgICBpZiAo
aXNDb250ZXh0TG9zdE9yUGVuZGluZygpKQorICAgICAgICByZXR1cm47CisgICAgYXV0byByZXN1
bHQgPSB2YWxpZGF0ZVVuaWZvcm1NYXRyaXhQYXJhbWV0ZXJzKCJ1bmlmb3JtTWF0cml4NGZ2Iiwg
bG9jYXRpb24sIHRyYW5zcG9zZSwgZGF0YSwgNCo0LCBzcmNPZmZzZXQsIHNyY0xlbmd0aCk7Cisg
ICAgaWYgKCFyZXN1bHQpCiAgICAgICAgIHJldHVybjsKLSAgICBtX2NvbnRleHQtPnVuaWZvcm1N
YXRyaXg0ZnYobG9jYXRpb24tPmxvY2F0aW9uKCksIHRyYW5zcG9zZSwgZGF0YS5kYXRhKCksIHNy
Y09mZnNldCwgKHNyY0xlbmd0aCA/IHNyY0xlbmd0aCA6IGRhdGEubGVuZ3RoKCkgLSBzcmNPZmZz
ZXQpIC8gKDQqNCkpOworICAgIG1fY29udGV4dC0+dW5pZm9ybU1hdHJpeDRmdihsb2NhdGlvbi0+
bG9jYXRpb24oKSwgdHJhbnNwb3NlLCByZXN1bHQudmFsdWUoKSk7CiB9CiAKIHZvaWQgV2ViR0wy
UmVuZGVyaW5nQ29udGV4dDo6cmVhZFBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNp
emVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5
cGUsIEFycmF5QnVmZmVyVmlldyYgcGl4ZWxzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5oCmluZGV4IGI4YjAzNmU0NDc2YTRmMTVk
NGU1MDY3NThjNTc1OTM1ZTBhMDYyNGYuLjVmNDdlNjFmMGE0NDQ0YTI4OGMxYjQ2MGZiNGUwZjcz
NjY3NDY2NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJl
bmRlcmluZ0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJS
ZW5kZXJpbmdDb250ZXh0LmgKQEAgLTI5Miw3ICsyOTIsOCBAQCBwcml2YXRlOgogICAgIGJvb2wg
dmFsaWRhdGVJbmRleEFycmF5Q29uc2VydmF0aXZlKEdDR0xlbnVtIHR5cGUsIHVuc2lnbmVkJiBu
dW1FbGVtZW50c1JlcXVpcmVkKSBmaW5hbDsKICAgICBib29sIHZhbGlkYXRlQmxlbmRFcXVhdGlv
bihjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIEdDR0xlbnVtIG1vZGUpIGZpbmFsOwogICAgIGJv
b2wgdmFsaWRhdGVDYXBhYmlsaXR5KGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgR0NHTGVudW0g
Y2FwKSBmaW5hbDsKLSAgICBib29sIHZhbGlkYXRlQ2xlYXJCdWZmZXIoY29uc3QgY2hhciogZnVu
Y3Rpb25OYW1lLCBHQ0dMZW51bSBidWZmZXIsIHNpemVfdCwgR0NHTHVpbnQgc3JjT2Zmc2V0KTsK
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBUeXBlZEFycmF5VHlwZT4KKyAgICBP
cHRpb25hbDxHQ0dMU3Bhbjxjb25zdCBUPj4gdmFsaWRhdGVDbGVhckJ1ZmZlcihjb25zdCBjaGFy
KiBmdW5jdGlvbk5hbWUsIEdDR0xlbnVtIGJ1ZmZlciwgVHlwZWRMaXN0PFR5cGVkQXJyYXlUeXBl
LCBUPiYgdmFsdWVzLCBHQ0dMdWludCBzcmNPZmZzZXQpOwogICAgIGJvb2wgdmFsaWRhdGVGcmFt
ZWJ1ZmZlclRhcmdldChHQ0dMZW51bSB0YXJnZXQpIGZpbmFsOwogICAgIFdlYkdMRnJhbWVidWZm
ZXIqIGdldEZyYW1lYnVmZmVyQmluZGluZyhHQ0dMZW51bSB0YXJnZXQpIGZpbmFsOwogICAgIFdl
YkdMRnJhbWVidWZmZXIqIGdldFJlYWRGcmFtZWJ1ZmZlckJpbmRpbmcoKSBmaW5hbDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRHJhd0J1ZmZlcnMuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xEcmF3QnVmZmVycy5jcHAKaW5kZXggNDk0
MTU2ZTFlNjViNjAyOTE5MGRiN2MxYzAyNmFkZjgwM2RkYThkMi4uZTVjZWI0YmRkY2M0YzA1MWRi
OGI5YWE5Y2UwMjA4MWJmMjIzMDUwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xEcmF3QnVmZmVycy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xEcmF3QnVmZmVycy5jcHAKQEAgLTc0LDggKzc0LDggQEAgdm9pZCBXZWJHTERyYXdC
dWZmZXJzOjpkcmF3QnVmZmVyc1dFQkdMKGNvbnN0IFZlY3RvcjxHQ0dMZW51bT4mIGJ1ZmZlcnMp
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgLy8gQmVjYXVzZSB0aGUg
YmFja2J1ZmZlciBpcyBzaW11bGF0ZWQgb24gYWxsIGN1cnJlbnQgV2ViS2l0IHBvcnRzLCB3ZSBu
ZWVkIHRvIGNoYW5nZSBCQUNLIHRvIENPTE9SX0FUVEFDSE1FTlQwLgotICAgICAgICBHQ0dMZW51
bSB2YWx1ZSA9IChidWZzWzBdID09IEdyYXBoaWNzQ29udGV4dEdMOjpCQUNLKSA/IEdyYXBoaWNz
Q29udGV4dEdMOjpDT0xPUl9BVFRBQ0hNRU5UMCA6IEdyYXBoaWNzQ29udGV4dEdMOjpOT05FOwot
ICAgICAgICBtX2NvbnRleHQtPmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5k
cmF3QnVmZmVyc0VYVCgxLCAmdmFsdWUpOworICAgICAgICBHQ0dMZW51bSB2YWx1ZVsxXSB7IChi
dWZzWzBdID09IEdyYXBoaWNzQ29udGV4dEdMOjpCQUNLKSA/IEdyYXBoaWNzQ29udGV4dEdMOjpD
T0xPUl9BVFRBQ0hNRU5UMCA6IEdyYXBoaWNzQ29udGV4dEdMOjpOT05FIH07CisgICAgICAgIG1f
Y29udGV4dC0+Z3JhcGhpY3NDb250ZXh0R0woKS0+Z2V0RXh0ZW5zaW9ucygpLmRyYXdCdWZmZXJz
RVhUKHZhbHVlKTsKICAgICAgICAgbV9jb250ZXh0LT5zZXRCYWNrRHJhd0J1ZmZlcihidWZzWzBd
KTsKICAgICB9IGVsc2UgewogICAgICAgICBpZiAobiA+IG1fY29udGV4dC0+Z2V0TWF4RHJhd0J1
ZmZlcnMoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xG
cmFtZWJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEZyYW1lYnVm
ZmVyLmNwcAppbmRleCAzNjU4ZWU4ZWFhZjdmMGRiYjg4NjNjZWQ1MDI0MjVmNGZiNGUyM2E1Li5i
MTk4YjM2NmIxMWYxNWIxYjgwM2JkMDYzYzc2YzRmMmNkOGQxMTc5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEZyYW1lYnVmZmVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEZyYW1lYnVmZmVyLmNwcApAQCAtNzAyLDEzICs3MDIs
MTAgQEAgdm9pZCBXZWJHTEZyYW1lYnVmZmVyOjpkcmF3QnVmZmVyc0lmTmVjZXNzYXJ5KGJvb2wg
Zm9yY2UpCiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgaWYgKHJlc2V0KSB7Ci0g
ICAgICAgICAgICBpZiAoY29udGV4dCgpLT5pc1dlYkdMMigpKSB7Ci0gICAgICAgICAgICAgICAg
Y29udGV4dCgpLT5ncmFwaGljc0NvbnRleHRHTCgpLT5kcmF3QnVmZmVycygKLSAgICAgICAgICAg
ICAgICAgICAgbV9maWx0ZXJlZERyYXdCdWZmZXJzLnNpemUoKSwgbV9maWx0ZXJlZERyYXdCdWZm
ZXJzLmRhdGEoKSk7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGNvbnRl
eHQoKS0+Z3JhcGhpY3NDb250ZXh0R0woKS0+Z2V0RXh0ZW5zaW9ucygpLmRyYXdCdWZmZXJzRVhU
KAotICAgICAgICAgICAgICAgICAgICBtX2ZpbHRlcmVkRHJhd0J1ZmZlcnMuc2l6ZSgpLCBtX2Zp
bHRlcmVkRHJhd0J1ZmZlcnMuZGF0YSgpKTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlm
IChjb250ZXh0KCktPmlzV2ViR0wyKCkpCisgICAgICAgICAgICAgICAgY29udGV4dCgpLT5ncmFw
aGljc0NvbnRleHRHTCgpLT5kcmF3QnVmZmVycyhtX2ZpbHRlcmVkRHJhd0J1ZmZlcnMpOworICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGNvbnRleHQoKS0+Z3JhcGhpY3NDb250ZXh0
R0woKS0+Z2V0RXh0ZW5zaW9ucygpLmRyYXdCdWZmZXJzRVhUKG1fZmlsdGVyZWREcmF3QnVmZmVy
cyk7CiAgICAgICAgIH0KICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCmluZGV4IDE4NWU4YzYyZTZm
YmUzMWYzMTM4OGMwYzlmODBkODFjZWUyNGEzYjEuLmE1NjJhNGQ0YzkwNjdhOThjYTdiNzUyZmZm
M2E3MjZjN2RiMmRhYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCkBAIC0xNjAzLDcgKzE2MDMsNyBAQCB2
b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmJ1ZmZlckRhdGEoR0NHTGVudW0gdGFyZ2V0
LCBPcHRpb25hbDxCdWZmZXJEYXRhUwogICAgICAgICB9CiAKICAgICAgICAgbV9jb250ZXh0LT5t
b3ZlRXJyb3JzVG9TeW50aGV0aWNFcnJvckxpc3QoKTsKLSAgICAgICAgbV9jb250ZXh0LT5idWZm
ZXJEYXRhKHRhcmdldCwgZGF0YS0+Ynl0ZUxlbmd0aCgpLCBkYXRhLT5kYXRhKCksIHVzYWdlKTsK
KyAgICAgICAgbV9jb250ZXh0LT5idWZmZXJEYXRhKHRhcmdldCwgR0NHTFNwYW48Y29uc3QgR0NH
THZvaWQ+KGRhdGEtPmRhdGEoKSwgZGF0YS0+Ynl0ZUxlbmd0aCgpKSwgdXNhZ2UpOwogICAgICAg
ICBpZiAobV9jb250ZXh0LT5tb3ZlRXJyb3JzVG9TeW50aGV0aWNFcnJvckxpc3QoKSkgewogICAg
ICAgICAgICAgLy8gVGhlIGJ1ZmZlckRhdGEgZnVuY3Rpb24gZmFpbGVkLiBUZWxsIHRoZSBidWZm
ZXIgaXQgZG9lc24ndCBoYXZlIHRoZSBkYXRhIGl0IHRoaW5rcyBpdCBkb2VzLgogICAgICAgICAg
ICAgYnVmZmVyLT5kaXNhc3NvY2lhdGVCdWZmZXJEYXRhKCk7CkBAIC0xNjMwLDcgKzE2MzAsNyBA
QCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmJ1ZmZlclN1YkRhdGEoR0NHTGVudW0g
dGFyZ2V0LCBsb25nIGxvbmcgb2Zmc2V0LAogICAgICAgICB9CiAKICAgICAgICAgbV9jb250ZXh0
LT5tb3ZlRXJyb3JzVG9TeW50aGV0aWNFcnJvckxpc3QoKTsKLSAgICAgICAgbV9jb250ZXh0LT5i
dWZmZXJTdWJEYXRhKHRhcmdldCwgc3RhdGljX2Nhc3Q8R0NHTGludHB0cj4ob2Zmc2V0KSwgZGF0
YS0+Ynl0ZUxlbmd0aCgpLCBkYXRhLT5kYXRhKCkpOworICAgICAgICBtX2NvbnRleHQtPmJ1ZmZl
clN1YkRhdGEodGFyZ2V0LCBzdGF0aWNfY2FzdDxHQ0dMaW50cHRyPihvZmZzZXQpLCBHQ0dMU3Bh
bjxjb25zdCBHQ0dMdm9pZD4oZGF0YS0+ZGF0YSgpLCBkYXRhLT5ieXRlTGVuZ3RoKCkpKTsKICAg
ICAgICAgaWYgKG1fY29udGV4dC0+bW92ZUVycm9yc1RvU3ludGhldGljRXJyb3JMaXN0KCkpIHsK
ICAgICAgICAgICAgIC8vIFRoZSBidWZmZXJTdWJEYXRhIGZ1bmN0aW9uIGZhaWxlZC4gVGVsbCB0
aGUgYnVmZmVyIGl0IGRvZXNuJ3QgaGF2ZSB0aGUgZGF0YSBpdCB0aGlua3MgaXQgZG9lcy4KICAg
ICAgICAgICAgIGJ1ZmZlci0+ZGlzYXNzb2NpYXRlQnVmZmVyRGF0YSgpOwpAQCAtMTc1Niw4ICsx
NzU2LDggQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpjb21wcmVzc2VkVGV4SW1h
Z2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGUKICNpZiBVU0UoQU5HTEUpCiAgICAgaWYg
KCF2YWxpZGF0ZVRleHR1cmUyREJpbmRpbmcoImNvbXByZXNzZWRUZXhJbWFnZTJEIiwgdGFyZ2V0
KSkKICAgICAgICAgcmV0dXJuOwotICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmNvbXBy
ZXNzZWRUZXhJbWFnZTJEUm9idXN0QU5HTEUodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQs
IHdpZHRoLCBoZWlnaHQsCi0gICAgICAgIGJvcmRlciwgZGF0YS5ieXRlTGVuZ3RoKCksIGRhdGEu
Ynl0ZUxlbmd0aCgpLCBkYXRhLmJhc2VBZGRyZXNzKCkpOworICAgIG1fY29udGV4dC0+Y29tcHJl
c3NlZFRleEltYWdlMkQodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWln
aHQsCisgICAgICAgIGJvcmRlciwgZGF0YS5ieXRlTGVuZ3RoKCksIG1ha2VHQ0dMU3BhbihkYXRh
LmJhc2VBZGRyZXNzKCksIGRhdGEuYnl0ZUxlbmd0aCgpKSk7CiAjZWxzZQogICAgIGlmICghdmFs
aWRhdGVUZXhGdW5jTGV2ZWwoImNvbXByZXNzZWRUZXhJbWFnZTJEIiwgdGFyZ2V0LCBsZXZlbCkp
CiAgICAgICAgIHJldHVybjsKQEAgLTE3ODIsNyArMTc4Miw3IEBAIHZvaWQgV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6Y29tcHJlc3NlZFRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
aW50IGxlCiAgICAgICAgIHJldHVybjsKICAgICBtX2NvbnRleHQtPm1vdmVFcnJvcnNUb1N5bnRo
ZXRpY0Vycm9yTGlzdCgpOwogICAgIHN0YXRpY19jYXN0PEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
Kj4obV9jb250ZXh0LmdldCgpKS0+Y29tcHJlc3NlZFRleEltYWdlMkQodGFyZ2V0LCBsZXZlbCwg
aW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsCi0gICAgICAgIGJvcmRlciwgZGF0YS5ieXRl
TGVuZ3RoKCksIGRhdGEuYmFzZUFkZHJlc3MoKSk7CisgICAgICAgIGJvcmRlciwgZGF0YS5ieXRl
TGVuZ3RoKCksIG1ha2VHQ0dMU3BhbihkYXRhLmJhc2VBZGRyZXNzKCksIGRhdGEuYnl0ZUxlbmd0
aCgpKSk7CiAgICAgaWYgKG1fY29udGV4dC0+bW92ZUVycm9yc1RvU3ludGhldGljRXJyb3JMaXN0
KCkpIHsKICAgICAgICAgLy8gVGhlIGNvbXByZXNzZWRUZXhJbWFnZTJEIGZ1bmN0aW9uIGZhaWxl
ZC4gVGVsbCB0aGUgV2ViR0xUZXh0dXJlIGl0IGRvZXNuJ3QgaGF2ZSB0aGUgZGF0YSBmb3IgdGhp
cyBsZXZlbC4KICAgICAgICAgdGV4LT5tYXJrSW52YWxpZCh0YXJnZXQsIGxldmVsKTsKQEAgLTE4
MDEsNyArMTgwMSw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Y29tcHJlc3Nl
ZFRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50CiAjaWYgVVNFKEFOR0xFKQog
ICAgIGlmICghdmFsaWRhdGVUZXh0dXJlMkRCaW5kaW5nKCJjb21wcmVzc2VkVGV4U3ViSW1hZ2Uy
RCIsIHRhcmdldCkpCiAgICAgICAgIHJldHVybjsKLSAgICBncmFwaGljc0NvbnRleHRHTCgpLT5n
ZXRFeHRlbnNpb25zKCkuY29tcHJlc3NlZFRleFN1YkltYWdlMkRSb2J1c3RBTkdMRSh0YXJnZXQs
IGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIGRhdGEuYnl0
ZUxlbmd0aCgpLCBkYXRhLmJ5dGVMZW5ndGgoKSwgZGF0YS5iYXNlQWRkcmVzcygpKTsKKyAgICBt
X2NvbnRleHQtPmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQs
IHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgZGF0YS5ieXRlTGVuZ3RoKCksIEdDR0xT
cGFuPGNvbnN0IEdDR0x2b2lkPihkYXRhLmJhc2VBZGRyZXNzKCksIGRhdGEuYnl0ZUxlbmd0aCgp
KSk7CiAjZWxzZQogICAgIGlmICghdmFsaWRhdGVUZXhGdW5jTGV2ZWwoImNvbXByZXNzZWRUZXhT
dWJJbWFnZTJEIiwgdGFyZ2V0LCBsZXZlbCkpCiAgICAgICAgIHJldHVybjsKQEAgLTE4MjQsNyAr
MTgyNCw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Y29tcHJlc3NlZFRleFN1
YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50CiAgICAgaWYgKCF2YWxpZGF0ZUNvbXBy
ZXNzZWRUZXhTdWJEaW1lbnNpb25zKCJjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRCIsIHRhcmdldCwg
bGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdGV4LmdldCgp
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgc3RhdGljX2Nhc3Q8R3JhcGhpY3NDb250ZXh0R0xP
cGVuR0wqPihncmFwaGljc0NvbnRleHRHTCgpKS0+Y29tcHJlc3NlZFRleFN1YkltYWdlMkQodGFy
Z2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCBkYXRh
LmJ5dGVMZW5ndGgoKSwgZGF0YS5iYXNlQWRkcmVzcygpKTsKKyAgICBzdGF0aWNfY2FzdDxHcmFw
aGljc0NvbnRleHRHTE9wZW5HTCo+KGdyYXBoaWNzQ29udGV4dEdMKCkpLT5jb21wcmVzc2VkVGV4
U3ViSW1hZ2UyRCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0
LCBmb3JtYXQsIGRhdGEuYnl0ZUxlbmd0aCgpLCBtYWtlR0NHTFNwYW4oZGF0YS5iYXNlQWRkcmVz
cygpLCBkYXRhLmJ5dGVMZW5ndGgoKSkpOwogICAgIHRleC0+c2V0Q29tcHJlc3NlZCgpOwogI2Vu
ZGlmCiB9CkBAIC0xOTAwLDggKzE5MDAsOCBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U6OmNvcHlUZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbAogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIFVuaXF1ZUFycmF5PHVuc2lnbmVk
IGNoYXI+IHplcm87CisgICAgICAgIHVuc2lnbmVkIHNpemUgPSAwOwogICAgICAgICBpZiAod2lk
dGggJiYgaGVpZ2h0KSB7Ci0gICAgICAgICAgICB1bnNpZ25lZCBzaXplOwogICAgICAgICAgICAg
R0NHTGVudW0gZXJyb3IgPSBtX2NvbnRleHQtPmNvbXB1dGVJbWFnZVNpemVJbkJ5dGVzKGZvcm1h
dCwgdHlwZSwgd2lkdGgsIGhlaWdodCwgMSwgZ2V0VW5wYWNrUGl4ZWxTdG9yZVBhcmFtcyhUZXhJ
bWFnZURpbWVuc2lvbjo6VGV4MkQpLCAmc2l6ZSwgbnVsbHB0ciwgbnVsbHB0cik7CiAgICAgICAg
ICAgICBpZiAoZXJyb3IgIT0gR3JhcGhpY3NDb250ZXh0R0w6Ok5PX0VSUk9SKSB7CiAgICAgICAg
ICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoZXJyb3IsICJjb3B5VGV4U3ViSW1hZ2UyRCIsICJi
YWQgZGltZW5zaW9ucyIpOwpAQCAtMTkxNCw3ICsxOTE0LDcgQEAgdm9pZCBXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlOjpjb3B5VGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQg
bGV2ZWwKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIG1lbXNldCh6ZXJvLmdldCgpLCAwLCBz
aXplKTsKICAgICAgICAgfQotICAgICAgICBtX2NvbnRleHQtPnRleFN1YkltYWdlMkQodGFyZ2V0
LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCB6
ZXJvLmdldCgpKTsKKyAgICAgICAgbV9jb250ZXh0LT50ZXhTdWJJbWFnZTJEKHRhcmdldCwgbGV2
ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgbWFrZUdD
R0xTcGFuKHplcm8uZ2V0KCksIHNpemUpKTsKICAgICAgICAgaWYgKGNsaXBwZWRXaWR0aCA+IDAg
JiYgY2xpcHBlZEhlaWdodCA+IDApCiAgICAgICAgICAgICBtX2NvbnRleHQtPmNvcHlUZXhTdWJJ
bWFnZTJEKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQgKyBjbGlwcGVkWCAtIHgsIHlvZmZzZXQgKyBj
bGlwcGVkWSAtIHksIGNsaXBwZWRYLCBjbGlwcGVkWSwgY2xpcHBlZFdpZHRoLCBjbGlwcGVkSGVp
Z2h0KTsKICAgICB9IGVsc2UKQEAgLTQ3MDcsMTQgKzQ3MDcsMTQgQEAgRXhjZXB0aW9uT3I8dm9p
ZD4gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dGV4SW1hZ2VTb3VyY2VIZWxwZXIoVGV4SW1h
Z2VGdW5jdGkKICNpZiBVU0UoQU5HTEUpCiAgICAgICAgICAgICAvLyAzRCBmdW5jdGlvbnMuCiAg
ICAgICAgICAgICBpZiAoZnVuY3Rpb25JRCA9PSBUZXhJbWFnZUZ1bmN0aW9uSUQ6OlRleEltYWdl
M0QpIHsKLSAgICAgICAgICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS50ZXhJbWFn
ZTNEUm9idXN0QU5HTEUodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsCisgICAgICAgICAg
ICAgICAgbV9jb250ZXh0LT50ZXhJbWFnZTNEKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0
LAogICAgICAgICAgICAgICAgICAgICBhZGp1c3RlZFNvdXJjZUltYWdlUmVjdC53aWR0aCgpLCBh
ZGp1c3RlZFNvdXJjZUltYWdlUmVjdC5oZWlnaHQoKSwgZGVwdGgsIDAsCi0gICAgICAgICAgICAg
ICAgICAgIGZvcm1hdCwgdHlwZSwgYnl0ZUxlbmd0aCwgbmVlZENvbnZlcnNpb24gPyBkYXRhLmRh
dGEoKSA6IHBpeGVscy0+ZGF0YSgpLT5kYXRhKCkpOworICAgICAgICAgICAgICAgICAgICBmb3Jt
YXQsIHR5cGUsIG1ha2VHQ0dMU3BhbihuZWVkQ29udmVyc2lvbiA/IGRhdGEuZGF0YSgpIDogcGl4
ZWxzLT5kYXRhKCktPmRhdGEoKSwgYnl0ZUxlbmd0aCkpOwogICAgICAgICAgICAgfSBlbHNlIHsK
ICAgICAgICAgICAgICAgICBBU1NFUlQoZnVuY3Rpb25JRCA9PSBUZXhJbWFnZUZ1bmN0aW9uSUQ6
OlRleFN1YkltYWdlM0QpOwotICAgICAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9u
cygpLnRleFN1YkltYWdlM0RSb2J1c3RBTkdMRSh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zm
c2V0LCB6b2Zmc2V0LAorICAgICAgICAgICAgICAgIG1fY29udGV4dC0+dGV4U3ViSW1hZ2UzRCh0
YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB6b2Zmc2V0LAogICAgICAgICAgICAgICAg
ICAgICBhZGp1c3RlZFNvdXJjZUltYWdlUmVjdC53aWR0aCgpLCBhZGp1c3RlZFNvdXJjZUltYWdl
UmVjdC5oZWlnaHQoKSwgZGVwdGgsCi0gICAgICAgICAgICAgICAgICAgIGZvcm1hdCwgdHlwZSwg
Ynl0ZUxlbmd0aCwgbmVlZENvbnZlcnNpb24gPyBkYXRhLmRhdGEoKSA6IHBpeGVscy0+ZGF0YSgp
LT5kYXRhKCkpOworICAgICAgICAgICAgICAgICAgICBmb3JtYXQsIHR5cGUsIG1ha2VHQ0dMU3Bh
bihuZWVkQ29udmVyc2lvbiA/IGRhdGEuZGF0YSgpIDogcGl4ZWxzLT5kYXRhKCktPmRhdGEoKSwg
Ynl0ZUxlbmd0aCkpOwogICAgICAgICAgICAgfQogI2Vsc2UKICAgICAgICAgICAgIC8vIFdlYkdM
IDIuMCBpcyBvbmx5IHN1cHBvcnRlZCB3aXRoIHRoZSBBTkdMRSBiYWNrZW5kLgpAQCAtNDg5NCwx
MSArNDg5NCwxMSBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnRleEltYWdlQXJy
YXlCdWZmZXJWaWV3SGVscGVyKFRleEltYWdlRnVuY3Rpb25JRAogICAgIH0KICNpZiBVU0UoQU5H
TEUpCiAgICAgaWYgKGZ1bmN0aW9uSUQgPT0gVGV4SW1hZ2VGdW5jdGlvbklEOjpUZXhJbWFnZTNE
KSB7Ci0gICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnRleEltYWdlM0RSb2J1c3RB
TkdMRSh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgZGVwdGgs
IGJvcmRlciwgZm9ybWF0LCB0eXBlLCBieXRlTGVuZ3RoLCBkYXRhKTsKKyAgICAgICAgbV9jb250
ZXh0LT50ZXhJbWFnZTNEKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVp
Z2h0LCBkZXB0aCwgYm9yZGVyLCBmb3JtYXQsIHR5cGUsIG1ha2VHQ0dMU3BhbihkYXRhLCBieXRl
TGVuZ3RoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgaWYgKGZ1bmN0aW9uSUQgPT0g
VGV4SW1hZ2VGdW5jdGlvbklEOjpUZXhTdWJJbWFnZTNEKSB7Ci0gICAgICAgIG1fY29udGV4dC0+
Z2V0RXh0ZW5zaW9ucygpLnRleFN1YkltYWdlM0RSb2J1c3RBTkdMRSh0YXJnZXQsIGxldmVsLCB4
b2Zmc2V0LCB5b2Zmc2V0LCB6b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgZm9ybWF0LCB0
eXBlLCBieXRlTGVuZ3RoLCBkYXRhKTsKKyAgICAgICAgbV9jb250ZXh0LT50ZXhTdWJJbWFnZTNE
KHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHpvZmZzZXQsIHdpZHRoLCBoZWlnaHQs
IGRlcHRoLCBmb3JtYXQsIHR5cGUsIG1ha2VHQ0dMU3BhbihkYXRhLCBieXRlTGVuZ3RoKSk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAjZW5kaWYgLy8gVVNFKEFOR0xFKQpAQCAtNDk3MywxNCAr
NDk3MywxNCBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnRleEltYWdlSW1wbChU
ZXhJbWFnZUZ1bmN0aW9uSUQgZnVuY3Rpb25JRCwgR0NHTAogI2lmIFVTRShBTkdMRSkKICAgICAg
ICAgLy8gM0QgZnVuY3Rpb25zLgogICAgICAgICBpZiAoZnVuY3Rpb25JRCA9PSBUZXhJbWFnZUZ1
bmN0aW9uSUQ6OlRleEltYWdlM0QpIHsKLSAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5z
aW9ucygpLnRleEltYWdlM0RSb2J1c3RBTkdMRSh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1h
dCwKKyAgICAgICAgICAgIG1fY29udGV4dC0+dGV4SW1hZ2UzRCh0YXJnZXQsIGxldmVsLCBpbnRl
cm5hbGZvcm1hdCwKICAgICAgICAgICAgICAgICBhZGp1c3RlZFNvdXJjZUltYWdlUmVjdC53aWR0
aCgpLCBhZGp1c3RlZFNvdXJjZUltYWdlUmVjdC5oZWlnaHQoKSwgZGVwdGgsIDAsCi0gICAgICAg
ICAgICAgICAgZm9ybWF0LCB0eXBlLCBieXRlTGVuZ3RoLCBuZWVkQ29udmVyc2lvbiA/IGRhdGEu
ZGF0YSgpIDogaW1hZ2VQaXhlbERhdGEpOworICAgICAgICAgICAgICAgIGZvcm1hdCwgdHlwZSwg
bWFrZUdDR0xTcGFuKG5lZWRDb252ZXJzaW9uID8gZGF0YS5kYXRhKCkgOiBpbWFnZVBpeGVsRGF0
YSwgYnl0ZUxlbmd0aCkpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgQVNTRVJUKGZ1
bmN0aW9uSUQgPT0gVGV4SW1hZ2VGdW5jdGlvbklEOjpUZXhTdWJJbWFnZTNEKTsKLSAgICAgICAg
ICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnRleFN1YkltYWdlM0RSb2J1c3RBTkdMRSh0
YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB6b2Zmc2V0LAorICAgICAgICAgICAgbV9j
b250ZXh0LT50ZXhTdWJJbWFnZTNEKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHpv
ZmZzZXQsCiAgICAgICAgICAgICAgICAgYWRqdXN0ZWRTb3VyY2VJbWFnZVJlY3Qud2lkdGgoKSwg
YWRqdXN0ZWRTb3VyY2VJbWFnZVJlY3QuaGVpZ2h0KCksIGRlcHRoLAotICAgICAgICAgICAgICAg
IGZvcm1hdCwgdHlwZSwgYnl0ZUxlbmd0aCwgbmVlZENvbnZlcnNpb24gPyBkYXRhLmRhdGEoKSA6
IGltYWdlUGl4ZWxEYXRhKTsKKyAgICAgICAgICAgICAgICBmb3JtYXQsIHR5cGUsIG1ha2VHQ0dM
U3BhbihuZWVkQ29udmVyc2lvbiA/IGRhdGEuZGF0YSgpIDogaW1hZ2VQaXhlbERhdGEsIGJ5dGVM
ZW5ndGgpKTsKICAgICAgICAgfQogI2Vsc2UKICAgICAgICAgVU5VU0VEX1BBUkFNKHpvZmZzZXQp
OwpAQCAtNDk5Myw3ICs0OTkzLDcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp0
ZXhJbWFnZUltcGwoVGV4SW1hZ2VGdW5jdGlvbklEIGZ1bmN0aW9uSUQsIEdDR0wKIHZvaWQgV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dGV4SW1hZ2UyREJhc2UoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbEZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBH
Q0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51
bSB0eXBlLCBHQ0dMc2l6ZWkgYnl0ZUxlbmd0aCwgY29uc3Qgdm9pZCogcGl4ZWxzKQogewogI2lm
IFVTRShBTkdMRSkKLSAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS50ZXhJbWFnZTJEUm9i
dXN0QU5HTEUodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxGb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGJv
cmRlciwgZm9ybWF0LCB0eXBlLCBieXRlTGVuZ3RoLCBwaXhlbHMpOworICAgIG1fY29udGV4dC0+
dGV4SW1hZ2UyRCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbEZvcm1hdCwgd2lkdGgsIGhlaWdodCwg
Ym9yZGVyLCBmb3JtYXQsIHR5cGUsIG1ha2VHQ0dMU3BhbihwaXhlbHMsIGJ5dGVMZW5ndGgpKTsK
ICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGJ5dGVMZW5ndGgpOwogICAgIC8vIEZJWE1FOiBGb3Ig
bm93IHdlIGlnbm9yZSBhbnkgZXJyb3JzIHJldHVybmVkLgpAQCAtNTAwNyw3ICs1MDA3LDcgQEAg
dm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp0ZXhJbWFnZTJEQmFzZShHQ0dMZW51bSB0
YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEcKICAgICB9IGVsc2UgewogICAgICAgICBBU1NFUlQodmFs
aWRhdGVTZXR0YWJsZVRleEludGVybmFsRm9ybWF0KCJ0ZXhJbWFnZTJEIiwgaW50ZXJuYWxGb3Jt
YXQpKTsKICAgICAgICAgbV9jb250ZXh0LT5tb3ZlRXJyb3JzVG9TeW50aGV0aWNFcnJvckxpc3Qo
KTsKLSAgICAgICAgbV9jb250ZXh0LT50ZXhJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIGludGVybmFs
Rm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIsIGZvcm1hdCwgdHlwZSwgcGl4ZWxzKTsKKyAg
ICAgICAgbV9jb250ZXh0LT50ZXhJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIGludGVybmFsRm9ybWF0
LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIsIGZvcm1hdCwgdHlwZSwgbWFrZUdDR0xTcGFuKHBpeGVs
cywgYnl0ZUxlbmd0aCkpOwogICAgICAgICBpZiAobV9jb250ZXh0LT5tb3ZlRXJyb3JzVG9TeW50
aGV0aWNFcnJvckxpc3QoKSkgewogICAgICAgICAgICAgLy8gVGhlIHRleEltYWdlMkQgZnVuY3Rp
b24gZmFpbGVkLiBUZWxsIHRoZSBXZWJHTFRleHR1cmUgaXQgZG9lc24ndCBoYXZlIHRoZSBkYXRh
IGZvciB0aGlzIGxldmVsLgogICAgICAgICAgICAgdGV4LT5tYXJrSW52YWxpZCh0YXJnZXQsIGxl
dmVsKTsKQEAgLTUwMjMsNyArNTAyMyw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZTo6dGV4U3ViSW1hZ2UyREJhc2UoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsCiAgICAg
QVNTRVJUKCFpc0NvbnRleHRMb3N0KCkpOwogI2lmIFVTRShBTkdMRSkKICAgICBVTlVTRURfUEFS
QU0oaW50ZXJuYWxGb3JtYXQpOwotICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnRleFN1
YkltYWdlMkRSb2J1c3RBTkdMRSh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0
aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIGJ5dGVMZW5ndGgsIHBpeGVscyk7CisgICAgbV9jb250
ZXh0LT50ZXhTdWJJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRo
LCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgbWFrZUdDR0xTcGFuKHBpeGVscywgYnl0ZUxlbmd0aCkp
OwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oYnl0ZUxlbmd0aCk7CiAgICAgQVNTRVJUKHZhbGlk
YXRlVGV4RnVuY1BhcmFtZXRlcnMoInRleFN1YkltYWdlMkQiLCBUZXhJbWFnZUZ1bmN0aW9uVHlw
ZTo6VGV4U3ViSW1hZ2UsIFNvdXJjZUFycmF5QnVmZmVyVmlldywgdGFyZ2V0LCBsZXZlbCwgaW50
ZXJuYWxGb3JtYXQsIHdpZHRoLCBoZWlnaHQsIDEsIDAsIGZvcm1hdCwgdHlwZSkpOwpAQCAtNTA0
MCw3ICs1MDQwLDcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp0ZXhTdWJJbWFn
ZTJEQmFzZShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwKICAgICBBU1NFUlQodGV4LT5n
ZXRIZWlnaHQodGFyZ2V0LCBsZXZlbCkgPj0gKHlvZmZzZXQgKyBoZWlnaHQpKTsKICAgICBpZiAo
IWlzV2ViR0wyKCkpCiAgICAgICAgIEFTU0VSVF9VTlVTRUQoaW50ZXJuYWxGb3JtYXQsIHRleC0+
Z2V0SW50ZXJuYWxGb3JtYXQodGFyZ2V0LCBsZXZlbCkgPT0gaW50ZXJuYWxGb3JtYXQpOwotICAg
IG1fY29udGV4dC0+dGV4U3ViSW1hZ2UyRCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0
LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIHBpeGVscyk7CisgICAgbV9jb250ZXh0LT50
ZXhTdWJJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWln
aHQsIGZvcm1hdCwgdHlwZSwgbWFrZUdDR0xTcGFuKHBpeGVscywgYnl0ZUxlbmd0aCkpOwogI2Vu
ZGlmCiB9CiAKQEAgLTU4MjYsMTAwICs1ODI2LDEyNSBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OnVuaWZvcm00aShjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24s
CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybTFmdihjb25zdCBXZWJH
TFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEZsb2F0MzJMaXN0JiYgdikKIHsKLSAgICBpZiAo
aXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKCJ1
bmlmb3JtMWZ2IiwgbG9jYXRpb24sIHYsIDEsIDAsIHYubGVuZ3RoKCkpKQorICAgIGlmIChpc0Nv
bnRleHRMb3N0T3JQZW5kaW5nKCkpCiAgICAgICAgIHJldHVybjsKLQotICAgIG1fY29udGV4dC0+
dW5pZm9ybTFmdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgdi5sZW5ndGgoKSwgdi5kYXRhKCkpOwor
ICAgIGF1dG8gZGF0YSA9IHZhbGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMoInVuaWZvcm0xZnYiLCBs
b2NhdGlvbiwgdiwgMSk7CisgICAgaWYgKCFkYXRhKQorICAgICAgICByZXR1cm47CisgICAgbV9j
b250ZXh0LT51bmlmb3JtMWZ2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCBkYXRhLnZhbHVlKCkpOwog
fQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm0yZnYoY29uc3QgV2Vi
R0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBGbG9hdDMyTGlzdCYmIHYpCiB7Ci0gICAgaWYg
KGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycygi
dW5pZm9ybTJmdiIsIGxvY2F0aW9uLCB2LCAyLCAwLCB2Lmxlbmd0aCgpKSkKKyAgICBpZiAoaXND
b250ZXh0TG9zdE9yUGVuZGluZygpKQogICAgICAgICByZXR1cm47Ci0KLSAgICBtX2NvbnRleHQt
PnVuaWZvcm0yZnYobG9jYXRpb24tPmxvY2F0aW9uKCksIHYubGVuZ3RoKCkgLyAyLCB2LmRhdGEo
KSk7CisgICAgYXV0byBkYXRhID0gdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycygidW5pZm9ybTJm
diIsIGxvY2F0aW9uLCB2LCAyKTsKKyAgICBpZiAoIWRhdGEpCisgICAgICAgIHJldHVybjsKKyAg
ICBtX2NvbnRleHQtPnVuaWZvcm0yZnYobG9jYXRpb24tPmxvY2F0aW9uKCksIGRhdGEudmFsdWUo
KSk7CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybTNmdihjb25z
dCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEZsb2F0MzJMaXN0JiYgdikKIHsKLSAg
ICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0
ZXJzKCJ1bmlmb3JtM2Z2IiwgbG9jYXRpb24sIHYsIDMsIDAsIHYubGVuZ3RoKCkpKQorICAgIGlm
IChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCiAgICAgICAgIHJldHVybjsKLQotICAgIG1fY29u
dGV4dC0+dW5pZm9ybTNmdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgdi5sZW5ndGgoKSAvIDMsIHYu
ZGF0YSgpKTsKKyAgICBhdXRvIGRhdGEgPSB2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKCJ1bmlm
b3JtM2Z2IiwgbG9jYXRpb24sIHYsIDMpOworICAgIGlmICghZGF0YSkKKyAgICAgICAgcmV0dXJu
OworICAgIG1fY29udGV4dC0+dW5pZm9ybTNmdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgZGF0YS52
YWx1ZSgpKTsKIH0KIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtNGZ2
KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgRmxvYXQzMkxpc3QmJiB2KQog
ewotICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlVW5pZm9ybVBh
cmFtZXRlcnMoInVuaWZvcm00ZnYiLCBsb2NhdGlvbiwgdiwgNCwgMCwgdi5sZW5ndGgoKSkpCisg
ICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSkKICAgICAgICAgcmV0dXJuOwotCi0gICAg
bV9jb250ZXh0LT51bmlmb3JtNGZ2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCB2Lmxlbmd0aCgpIC8g
NCwgdi5kYXRhKCkpOworICAgIGF1dG8gZGF0YSA9IHZhbGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMo
InVuaWZvcm00ZnYiLCBsb2NhdGlvbiwgdiwgNCk7CisgICAgaWYgKCFkYXRhKQorICAgICAgICBy
ZXR1cm47CisgICAgbV9jb250ZXh0LT51bmlmb3JtNGZ2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCBk
YXRhLnZhbHVlKCkpOwogfQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZv
cm0xaXYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBJbnQzMkxpc3QmJiB2
KQogewotICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlVW5pZm9y
bVBhcmFtZXRlcnMoInVuaWZvcm0xaXYiLCBsb2NhdGlvbiwgdiwgMSwgMCwgdi5sZW5ndGgoKSkp
CisgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSkKKyAgICAgICAgcmV0dXJuOworICAg
IGF1dG8gcmVzdWx0ID0gdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycygidW5pZm9ybTFpdiIsIGxv
Y2F0aW9uLCB2LCAxKTsKKyAgICBpZiAoIXJlc3VsdCkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
YXV0byBkYXRhID0gdi5kYXRhKCk7Ci0gICAgYXV0byBsZW5ndGggPSB2Lmxlbmd0aCgpOworICAg
IGF1dG8gZGF0YSA9IHJlc3VsdC52YWx1ZSgpOwogCiAgICAgaWYgKGxvY2F0aW9uLT50eXBlKCkg
PT0gR3JhcGhpY3NDb250ZXh0R0w6OlNBTVBMRVJfMkQgfHwgbG9jYXRpb24tPnR5cGUoKSA9PSBH
cmFwaGljc0NvbnRleHRHTDo6U0FNUExFUl9DVUJFKSB7Ci0gICAgICAgIGZvciAoYXV0byBpID0g
MDsgaSA8IGxlbmd0aDsgKytpKSB7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZGF0
YS5idWZTaXplOyArK2kpIHsKICAgICAgICAgICAgIGlmIChkYXRhW2ldID49IHN0YXRpY19jYXN0
PGludD4obV90ZXh0dXJlVW5pdHMuc2l6ZSgpKSkgewotICAgICAgICAgICAgICAgIExPRyhXZWJH
TCwgIlRleHR1cmUgdW5pdCBzaXplPSV6dSwgdlslZF09JWQuIExvY2F0aW9uIHR5cGUgPSAlMDRY
LiIsIG1fdGV4dHVyZVVuaXRzLnNpemUoKSwgaSwgZGF0YVtpXSwgbG9jYXRpb24tPnR5cGUoKSk7
CisgICAgICAgICAgICAgICAgTE9HKFdlYkdMLCAiVGV4dHVyZSB1bml0IHNpemU9JXp1LCB2WyV6
dV09JWQuIExvY2F0aW9uIHR5cGUgPSAlMDRYLiIsIG1fdGV4dHVyZVVuaXRzLnNpemUoKSwgaSwg
ZGF0YVtpXSwgbG9jYXRpb24tPnR5cGUoKSk7CiAgICAgICAgICAgICAgICAgc3ludGhlc2l6ZUdM
RXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfVkFMVUUsICJ1bmlmb3JtMWl2IiwgImlu
dmFsaWQgdGV4dHVyZSB1bml0Iik7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAg
ICAgfQogICAgICAgICB9CiAgICAgfQogCi0gICAgbV9jb250ZXh0LT51bmlmb3JtMWl2KGxvY2F0
aW9uLT5sb2NhdGlvbigpLCBsZW5ndGgsIGRhdGEpOworICAgIG1fY29udGV4dC0+dW5pZm9ybTFp
dihsb2NhdGlvbi0+bG9jYXRpb24oKSwgZGF0YSk7CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6dW5pZm9ybTJpdihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRp
b24sIEludDMyTGlzdCYmIHYpCiB7Ci0gICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8
fCAhdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycygidW5pZm9ybTJpdiIsIGxvY2F0aW9uLCB2LCAy
LCAwLCB2Lmxlbmd0aCgpKSkKKyAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpKQogICAg
ICAgICByZXR1cm47Ci0KLSAgICBtX2NvbnRleHQtPnVuaWZvcm0yaXYobG9jYXRpb24tPmxvY2F0
aW9uKCksIHYubGVuZ3RoKCkgLyAyLCB2LmRhdGEoKSk7CisgICAgYXV0byBkYXRhID0gdmFsaWRh
dGVVbmlmb3JtUGFyYW1ldGVycygidW5pZm9ybTJpdiIsIGxvY2F0aW9uLCB2LCAyKTsKKyAgICBp
ZiAoIWRhdGEpCisgICAgICAgIHJldHVybjsKKyAgICBtX2NvbnRleHQtPnVuaWZvcm0yaXYobG9j
YXRpb24tPmxvY2F0aW9uKCksIGRhdGEudmFsdWUoKSk7CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6dW5pZm9ybTNpdihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9j
YXRpb24sIEludDMyTGlzdCYmIHYpCiB7Ci0gICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmco
KSB8fCAhdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycygidW5pZm9ybTNpdiIsIGxvY2F0aW9uLCB2
LCAzLCAwLCB2Lmxlbmd0aCgpKSkKKyAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpKQog
ICAgICAgICByZXR1cm47Ci0KLSAgICBtX2NvbnRleHQtPnVuaWZvcm0zaXYobG9jYXRpb24tPmxv
Y2F0aW9uKCksIHYubGVuZ3RoKCkgLyAzLCB2LmRhdGEoKSk7CisgICAgYXV0byBkYXRhID0gdmFs
aWRhdGVVbmlmb3JtUGFyYW1ldGVycygidW5pZm9ybTNpdiIsIGxvY2F0aW9uLCB2LCAzKTsKKyAg
ICBpZiAoIWRhdGEpCisgICAgICAgIHJldHVybjsKKyAgICBtX2NvbnRleHQtPnVuaWZvcm0zaXYo
bG9jYXRpb24tPmxvY2F0aW9uKCksIGRhdGEudmFsdWUoKSk7CiB9CiAKIHZvaWQgV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybTRpdihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiog
bG9jYXRpb24sIEludDMyTGlzdCYmIHYpCiB7Ci0gICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRp
bmcoKSB8fCAhdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycygidW5pZm9ybTRpdiIsIGxvY2F0aW9u
LCB2LCA0LCAwLCB2Lmxlbmd0aCgpKSkKKyAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygp
KQogICAgICAgICByZXR1cm47Ci0KLSAgICBtX2NvbnRleHQtPnVuaWZvcm00aXYobG9jYXRpb24t
PmxvY2F0aW9uKCksIHYubGVuZ3RoKCkgLyA0LCB2LmRhdGEoKSk7CisgICAgYXV0byBkYXRhID0g
dmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycygidW5pZm9ybTRpdiIsIGxvY2F0aW9uLCB2LCA0KTsK
KyAgICBpZiAoIWRhdGEpCisgICAgICAgIHJldHVybjsKKyAgICBtX2NvbnRleHQtPnVuaWZvcm00
aXYobG9jYXRpb24tPmxvY2F0aW9uKCksIGRhdGEudmFsdWUoKSk7CiB9CiAKIHZvaWQgV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybU1hdHJpeDJmdihjb25zdCBXZWJHTFVuaWZvcm1M
b2NhdGlvbiogbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgRmxvYXQzMkxpc3QmJiB2
KQogewotICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlVW5pZm9y
bU1hdHJpeFBhcmFtZXRlcnMoInVuaWZvcm1NYXRyaXgyZnYiLCBsb2NhdGlvbiwgdHJhbnNwb3Nl
LCB2LCA0LCAwLCB2Lmxlbmd0aCgpKSkKKyAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygp
KQorICAgICAgICByZXR1cm47CisgICAgYXV0byBkYXRhID0gdmFsaWRhdGVVbmlmb3JtTWF0cml4
UGFyYW1ldGVycygidW5pZm9ybU1hdHJpeDJmdiIsIGxvY2F0aW9uLCB0cmFuc3Bvc2UsIHYsIDQp
OworICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuOwotICAgIG1fY29udGV4dC0+dW5pZm9y
bU1hdHJpeDJmdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgdi5sZW5ndGgoKSAvIDQsIHRyYW5zcG9z
ZSwgdi5kYXRhKCkpOworICAgIG1fY29udGV4dC0+dW5pZm9ybU1hdHJpeDJmdihsb2NhdGlvbi0+
bG9jYXRpb24oKSwgdHJhbnNwb3NlLCBkYXRhLnZhbHVlKCkpOwogfQogCiB2b2lkIFdlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm1NYXRyaXgzZnYoY29uc3QgV2ViR0xVbmlmb3JtTG9j
YXRpb24qIGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEZsb2F0MzJMaXN0JiYgdikK
IHsKLSAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVVuaWZvcm1N
YXRyaXhQYXJhbWV0ZXJzKCJ1bmlmb3JtTWF0cml4M2Z2IiwgbG9jYXRpb24sIHRyYW5zcG9zZSwg
diwgOSwgMCwgdi5sZW5ndGgoKSkpCisgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSkK
KyAgICAgICAgcmV0dXJuOworICAgIGF1dG8gZGF0YSA9IHZhbGlkYXRlVW5pZm9ybU1hdHJpeFBh
cmFtZXRlcnMoInVuaWZvcm1NYXRyaXgzZnYiLCBsb2NhdGlvbiwgdHJhbnNwb3NlLCB2LCA5KTsK
KyAgICBpZiAoIWRhdGEpCiAgICAgICAgIHJldHVybjsKLSAgICBtX2NvbnRleHQtPnVuaWZvcm1N
YXRyaXgzZnYobG9jYXRpb24tPmxvY2F0aW9uKCksIHYubGVuZ3RoKCkgLyA5LCB0cmFuc3Bvc2Us
IHYuZGF0YSgpKTsKKyAgICBtX2NvbnRleHQtPnVuaWZvcm1NYXRyaXgzZnYobG9jYXRpb24tPmxv
Y2F0aW9uKCksIHRyYW5zcG9zZSwgZGF0YS52YWx1ZSgpKTsKIH0KIAogdm9pZCBXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtTWF0cml4NGZ2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0
aW9uKiBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBGbG9hdDMyTGlzdCYmIHYpCiB7
Ci0gICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVVbmlmb3JtTWF0
cml4UGFyYW1ldGVycygidW5pZm9ybU1hdHJpeDRmdiIsIGxvY2F0aW9uLCB0cmFuc3Bvc2UsIHYs
IDE2LCAwLCB2Lmxlbmd0aCgpKSkKKyAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpKQor
ICAgICAgICByZXR1cm47CisgICAgYXV0byBkYXRhID0gdmFsaWRhdGVVbmlmb3JtTWF0cml4UGFy
YW1ldGVycygidW5pZm9ybU1hdHJpeDRmdiIsIGxvY2F0aW9uLCB0cmFuc3Bvc2UsIHYsIDE2KTsK
KyAgICBpZiAoIWRhdGEpCiAgICAgICAgIHJldHVybjsKLSAgICBtX2NvbnRleHQtPnVuaWZvcm1N
YXRyaXg0ZnYobG9jYXRpb24tPmxvY2F0aW9uKCksIHYubGVuZ3RoKCkgLyAxNiwgdHJhbnNwb3Nl
LCB2LmRhdGEoKSk7CisgICAgbV9jb250ZXh0LT51bmlmb3JtTWF0cml4NGZ2KGxvY2F0aW9uLT5s
b2NhdGlvbigpLCB0cmFuc3Bvc2UsIGRhdGEudmFsdWUoKSk7CiB9CiAKIHZvaWQgV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZTo6dXNlUHJvZ3JhbShXZWJHTFByb2dyYW0qIHByb2dyYW0pCkBAIC03
MDQ3LDYyICs3MDcyLDQ4IEBAIGJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmFsaWRh
dGVDYXBhYmlsaXR5KGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgR0NHCiAgICAgfQogfQogCi1i
b29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMo
Y29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9j
YXRpb24sIGNvbnN0IEZsb2F0MzJMaXN0JiB2LCBHQ0dMc2l6ZWkgcmVxdWlyZWRNaW5TaXplLCBH
Q0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKLXsKLSAgICByZXR1cm4gdmFs
aWRhdGVVbmlmb3JtTWF0cml4UGFyYW1ldGVycyhmdW5jdGlvbk5hbWUsIGxvY2F0aW9uLCBmYWxz
ZSwgdi5kYXRhKCksIHYubGVuZ3RoKCksIHJlcXVpcmVkTWluU2l6ZSwgc3JjT2Zmc2V0LCBzcmNM
ZW5ndGgpOwotfQotCi1ib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlVW5p
Zm9ybVBhcmFtZXRlcnMoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBjb25zdCBXZWJHTFVuaWZv
cm1Mb2NhdGlvbiogbG9jYXRpb24sIGNvbnN0IEludDMyTGlzdCYgdiwgR0NHTHNpemVpIHJlcXVp
cmVkTWluU2l6ZSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCi17Ci0g
ICAgcmV0dXJuIHZhbGlkYXRlVW5pZm9ybU1hdHJpeFBhcmFtZXRlcnMoZnVuY3Rpb25OYW1lLCBs
b2NhdGlvbiwgZmFsc2UsIHYuZGF0YSgpLCB2Lmxlbmd0aCgpLCByZXF1aXJlZE1pblNpemUsIHNy
Y09mZnNldCwgc3JjTGVuZ3RoKTsKLX0KIAotYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
Ojp2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgY29u
c3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBjb25zdCBVaW50MzJMaXN0JiB2LCBH
Q0dMc2l6ZWkgcmVxdWlyZWRNaW5TaXplLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNy
Y0xlbmd0aCkKLXsKLSAgICByZXR1cm4gdmFsaWRhdGVVbmlmb3JtTWF0cml4UGFyYW1ldGVycyhm
dW5jdGlvbk5hbWUsIGxvY2F0aW9uLCBmYWxzZSwgdi5kYXRhKCksIHYubGVuZ3RoKCksIHJlcXVp
cmVkTWluU2l6ZSwgc3JjT2Zmc2V0LCBzcmNMZW5ndGgpOwotfQotCi1ib29sIFdlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMoY29uc3QgY2hhciogZnVu
Y3Rpb25OYW1lLCBjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIHZvaWQqIHYs
IEdDR0xzaXplaSBzaXplLCBHQ0dMc2l6ZWkgcmVxdWlyZWRNaW5TaXplLCBHQ0dMdWludCBzcmNP
ZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKLXsKLSAgICByZXR1cm4gdmFsaWRhdGVVbmlmb3Jt
TWF0cml4UGFyYW1ldGVycyhmdW5jdGlvbk5hbWUsIGxvY2F0aW9uLCBmYWxzZSwgdiwgc2l6ZSwg
cmVxdWlyZWRNaW5TaXplLCBzcmNPZmZzZXQsIHNyY0xlbmd0aCk7Ci19Ci0KLWJvb2wgV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZTo6dmFsaWRhdGVVbmlmb3JtTWF0cml4UGFyYW1ldGVycyhjb25z
dCBjaGFyKiBmdW5jdGlvbk5hbWUsIGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlv
biwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBGbG9hdDMyTGlzdCYgdiwgR0NHTHNpemVp
IHJlcXVpcmVkTWluU2l6ZSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgp
Ci17Ci0gICAgcmV0dXJuIHZhbGlkYXRlVW5pZm9ybU1hdHJpeFBhcmFtZXRlcnMoZnVuY3Rpb25O
YW1lLCBsb2NhdGlvbiwgdHJhbnNwb3NlLCB2LmRhdGEoKSwgdi5sZW5ndGgoKSwgcmVxdWlyZWRN
aW5TaXplLCBzcmNPZmZzZXQsIHNyY0xlbmd0aCk7Ci19Ci0KLWJvb2wgV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6dmFsaWRhdGVVbmlmb3JtTWF0cml4UGFyYW1ldGVycyhjb25zdCBjaGFyKiBm
dW5jdGlvbk5hbWUsIGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgR0NHTGJv
b2xlYW4gdHJhbnNwb3NlLCBjb25zdCB2b2lkKiB2LCBHQ0dMc2l6ZWkgc2l6ZSwgR0NHTHNpemVp
IHJlcXVpcmVkTWluU2l6ZSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgp
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBUeXBlZExpc3RUeXBlPgorT3B0aW9uYWw8
R0NHTFNwYW48Y29uc3QgVD4+IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlVW5p
Zm9ybU1hdHJpeFBhcmFtZXRlcnMoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBjb25zdCBXZWJH
TFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3Qg
VHlwZWRMaXN0PFR5cGVkTGlzdFR5cGUsIFQ+JiB2YWx1ZXMsIEdDR0xzaXplaSByZXF1aXJlZE1p
blNpemUsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQogewogICAgIGlm
ICghdmFsaWRhdGVVbmlmb3JtTG9jYXRpb24oZnVuY3Rpb25OYW1lLCBsb2NhdGlvbikpCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoIXYpIHsKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAg
ICBpZiAoIXZhbHVlcy5kYXRhKCkpIHsKICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhp
Y3NDb250ZXh0R0w6OklOVkFMSURfVkFMVUUsIGZ1bmN0aW9uTmFtZSwgIm5vIGFycmF5Iik7Ci0g
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9CiAgICAgaWYg
KHRyYW5zcG9zZSAmJiAhaXNXZWJHTDIoKSkgewogICAgICAgICBzeW50aGVzaXplR0xFcnJvcihH
cmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9WQUxVRSwgZnVuY3Rpb25OYW1lLCAidHJhbnNwb3Nl
IG5vdCBGQUxTRSIpOwotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiB7IH07
CiAgICAgfQotICAgIGlmIChzcmNPZmZzZXQgPj0gc3RhdGljX2Nhc3Q8R0NHTHVpbnQ+KHNpemUp
KSB7CisgICAgaWYgKHNyY09mZnNldCA+PSBzdGF0aWNfY2FzdDxHQ0dMdWludD4odmFsdWVzLmxl
bmd0aCgpKSkgewogICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6
SU5WQUxJRF9WQUxVRSwgZnVuY3Rpb25OYW1lLCAiaW52YWxpZCBzcmNPZmZzZXQiKTsKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4geyB9OwogICAgIH0KLSAgICBHQ0dMc2l6
ZWkgYWN0dWFsU2l6ZSA9IHNpemUgLSBzcmNPZmZzZXQ7CisgICAgR0NHTHNpemVpIGFjdHVhbFNp
emUgPSB2YWx1ZXMubGVuZ3RoKCkgLSBzcmNPZmZzZXQ7CiAgICAgaWYgKHNyY0xlbmd0aCA+IDAp
IHsKICAgICAgICAgaWYgKHNyY0xlbmd0aCA+IHN0YXRpY19jYXN0PEdDR0x1aW50PihhY3R1YWxT
aXplKSkgewogICAgICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6
OklOVkFMSURfVkFMVUUsIGZ1bmN0aW9uTmFtZSwgImludmFsaWQgc3JjT2Zmc2V0ICsgc3JjTGVu
Z3RoIik7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICByZXR1cm4geyB9
OwogICAgICAgICB9CiAgICAgICAgIGFjdHVhbFNpemUgPSBzcmNMZW5ndGg7CiAgICAgfQogICAg
IGlmIChhY3R1YWxTaXplIDwgcmVxdWlyZWRNaW5TaXplIHx8IChhY3R1YWxTaXplICUgcmVxdWly
ZWRNaW5TaXplKSkgewogICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRH
TDo6SU5WQUxJRF9WQUxVRSwgZnVuY3Rpb25OYW1lLCAiaW52YWxpZCBzaXplIik7Ci0gICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9Ci0gICAgcmV0dXJuIHRy
dWU7CisgICAgcmV0dXJuIG1ha2VHQ0dMU3Bhbih2YWx1ZXMuZGF0YSgpICsgc3JjT2Zmc2V0LCBh
Y3R1YWxTaXplKTsKIH0KIAordGVtcGxhdGUKK09wdGlvbmFsPEdDR0xTcGFuPGNvbnN0IEdDR0x1
aW50Pj4gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmFsaWRhdGVVbmlmb3JtTWF0cml4UGFy
YW1ldGVyczxHQ0dMdWludCwgVWludDMyQXJyYXk+KGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwg
Y29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0
IFR5cGVkTGlzdDxVaW50MzJBcnJheSwgdWludDMyX3Q+JiB2YWx1ZXMsIEdDR0xzaXplaSByZXF1
aXJlZE1pblNpemUsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKTsKKwor
dGVtcGxhdGUKK09wdGlvbmFsPEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+PiBXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlOjp2YWxpZGF0ZVVuaWZvcm1NYXRyaXhQYXJhbWV0ZXJzPEdDR0xpbnQsIElu
dDMyQXJyYXk+KGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgY29uc3QgV2ViR0xVbmlmb3JtTG9j
YXRpb24qLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IFR5cGVkTGlzdDxJbnQzMkFycmF5
LCBpbnQzMl90PiYgdmFsdWVzLCBHQ0dMc2l6ZWkgcmVxdWlyZWRNaW5TaXplLCBHQ0dMdWludCBz
cmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCk7CisKK3RlbXBsYXRlCitPcHRpb25hbDxHQ0dM
U3Bhbjxjb25zdCBHQ0dMZmxvYXQ+PiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0
ZVVuaWZvcm1NYXRyaXhQYXJhbWV0ZXJzPEdDR0xmbG9hdCwgRmxvYXQzMkFycmF5Pihjb25zdCBj
aGFyKiBmdW5jdGlvbk5hbWUsIGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiwgR0NHTGJvb2xl
YW4gdHJhbnNwb3NlLCBjb25zdCBUeXBlZExpc3Q8RmxvYXQzMkFycmF5LCBmbG9hdD4mIHZhbHVl
cywgR0NHTHNpemVpIHJlcXVpcmVkTWluU2l6ZSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWlu
dCBzcmNMZW5ndGgpOworCiBXZWJHTEJ1ZmZlciogV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6
dmFsaWRhdGVCdWZmZXJEYXRhUGFyYW1ldGVycyhjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIEdD
R0xlbnVtIHRhcmdldCwgR0NHTGVudW0gdXNhZ2UpCiB7CiAgICAgV2ViR0xCdWZmZXIqIGJ1ZmZl
ciA9IHZhbGlkYXRlQnVmZmVyRGF0YVRhcmdldChmdW5jdGlvbk5hbWUsIHRhcmdldCk7CkBAIC03
MjQ2LDE2ICs3MjU3LDE2IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmVydGV4
QXR0cmliZnZJbXBsKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgR0NHCiAgICAgewogICAgICAg
ICBzd2l0Y2ggKGV4cGVjdGVkU2l6ZSkgewogICAgICAgICBjYXNlIDE6Ci0gICAgICAgICAgICBt
X2NvbnRleHQtPnZlcnRleEF0dHJpYjFmdihpbmRleCwgZGF0YSk7CisgICAgICAgICAgICBtX2Nv
bnRleHQtPnZlcnRleEF0dHJpYjFmdihpbmRleCwgbWFrZUdDR0xTcGFuPDE+KGRhdGEpKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIDI6Ci0gICAgICAgICAgICBtX2NvbnRleHQt
PnZlcnRleEF0dHJpYjJmdihpbmRleCwgZGF0YSk7CisgICAgICAgICAgICBtX2NvbnRleHQtPnZl
cnRleEF0dHJpYjJmdihpbmRleCwgbWFrZUdDR0xTcGFuPDI+KGRhdGEpKTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICBjYXNlIDM6Ci0gICAgICAgICAgICBtX2NvbnRleHQtPnZlcnRleEF0
dHJpYjNmdihpbmRleCwgZGF0YSk7CisgICAgICAgICAgICBtX2NvbnRleHQtPnZlcnRleEF0dHJp
YjNmdihpbmRleCwgbWFrZUdDR0xTcGFuPDM+KGRhdGEpKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICBjYXNlIDQ6Ci0gICAgICAgICAgICBtX2NvbnRleHQtPnZlcnRleEF0dHJpYjRmdihp
bmRleCwgZGF0YSk7CisgICAgICAgICAgICBtX2NvbnRleHQtPnZlcnRleEF0dHJpYjRmdihpbmRl
eCwgbWFrZUdDR0xTcGFuPDQ+KGRhdGEpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CiAgICAgfQpAQCAtNzMzMCw3ICs3MzQxLDcgQEAgT3B0aW9uYWw8Ym9vbD4gV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6c2ltdWxhdGVWZXJ0ZXhBdHRyaWIwKEdDR0x1aW50IG51bVZlcnQKIAog
ICAgIGlmIChidWZmZXJEYXRhU2l6ZSA+IG1fdmVydGV4QXR0cmliMEJ1ZmZlclNpemUpIHsKICAg
ICAgICAgbV9jb250ZXh0LT5tb3ZlRXJyb3JzVG9TeW50aGV0aWNFcnJvckxpc3QoKTsKLSAgICAg
ICAgbV9jb250ZXh0LT5idWZmZXJEYXRhKEdyYXBoaWNzQ29udGV4dEdMOjpBUlJBWV9CVUZGRVIs
IGJ1ZmZlckRhdGFTaXplLCAwLCBHcmFwaGljc0NvbnRleHRHTDo6RFlOQU1JQ19EUkFXKTsKKyAg
ICAgICAgbV9jb250ZXh0LT5idWZmZXJEYXRhKEdyYXBoaWNzQ29udGV4dEdMOjpBUlJBWV9CVUZG
RVIsIGJ1ZmZlckRhdGFTaXplLCBHcmFwaGljc0NvbnRleHRHTDo6RFlOQU1JQ19EUkFXKTsKICAg
ICAgICAgaWYgKG1fY29udGV4dC0+Z2V0RXJyb3IoKSAhPSBHcmFwaGljc0NvbnRleHRHTDo6Tk9f
RVJST1IpIHsKICAgICAgICAgICAgIC8vIFdlIHdlcmUgdW5hYmxlIHRvIGNyZWF0ZSBhIGJ1ZmZl
ci4KICAgICAgICAgICAgIG1fdmVydGV4QXR0cmliMFVzZWRCZWZvcmUgPSBmYWxzZTsKQEAgLTcz
NjUsNyArNzM3Niw3IEBAIE9wdGlvbmFsPGJvb2w+IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6
OnNpbXVsYXRlVmVydGV4QXR0cmliMChHQ0dMdWludCBudW1WZXJ0CiAgICAgICAgIG1fdmVydGV4
QXR0cmliMEJ1ZmZlclZhbHVlWzJdID0gYXR0cmliVmFsdWUuZlZhbHVlWzJdOwogICAgICAgICBt
X3ZlcnRleEF0dHJpYjBCdWZmZXJWYWx1ZVszXSA9IGF0dHJpYlZhbHVlLmZWYWx1ZVszXTsKICAg
ICAgICAgbV9mb3JjZUF0dHJpYjBCdWZmZXJSZWZpbGwgPSBmYWxzZTsKLSAgICAgICAgbV9jb250
ZXh0LT5idWZmZXJTdWJEYXRhKEdyYXBoaWNzQ29udGV4dEdMOjpBUlJBWV9CVUZGRVIsIDAsIGJ1
ZmZlckRhdGFTaXplLCBidWZmZXJEYXRhLmdldCgpKTsKKyAgICAgICAgbV9jb250ZXh0LT5idWZm
ZXJTdWJEYXRhKEdyYXBoaWNzQ29udGV4dEdMOjpBUlJBWV9CVUZGRVIsIDAsIG1ha2VHQ0dMU3Bh
bihidWZmZXJEYXRhLmdldCgpLCBidWZmZXJEYXRhU2l6ZSkpOwogICAgIH0KICAgICBtX2NvbnRl
eHQtPnZlcnRleEF0dHJpYlBvaW50ZXIoMCwgNCwgR3JhcGhpY3NDb250ZXh0R0w6OkZMT0FULCAw
LCAwLCAwKTsKICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaAppbmRleCBhNzFkMDM2YWEwZGVh
NTJiNDU3OTA5ZmJmZmRjM2FkZjgwZjUxMGNjLi4wMDc4MjhmN2ZkNTczZWE1MDA1OTQwZWQ1NmU0
Mzk3NTE1NzQzZTc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oCkBAIC0xMDA1LDEyICsxMDA1LDEzIEBAIHByb3Rl
Y3RlZDoKIAogICAgIC8vIEhlbHBlciBmdW5jdGlvbiB0byB2YWxpZGF0ZSBpbnB1dCBwYXJhbWV0
ZXJzIGZvciB1bmlmb3JtIGZ1bmN0aW9ucy4KICAgICBib29sIHZhbGlkYXRlVW5pZm9ybUxvY2F0
aW9uKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24q
KTsKLSAgICBib29sIHZhbGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMoY29uc3QgY2hhciogZnVuY3Rp
b25OYW1lLCBjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiosIGNvbnN0IEZsb2F0MzJMaXN0Jiwg
R0NHTHNpemVpIHJlcXVpcmVkTWluU2l6ZSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBz
cmNMZW5ndGgpOwotICAgIGJvb2wgdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycyhjb25zdCBjaGFy
KiBmdW5jdGlvbk5hbWUsIGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiwgY29uc3QgSW50MzJM
aXN0JiwgR0NHTHNpemVpIHJlcXVpcmVkTWluU2l6ZSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dM
dWludCBzcmNMZW5ndGgpOwotICAgIGJvb2wgdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycyhjb25z
dCBjaGFyKiBmdW5jdGlvbk5hbWUsIGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiwgY29uc3Qg
VWludDMyTGlzdCYsIEdDR0xzaXplaSByZXF1aXJlZE1pblNpemUsIEdDR0x1aW50IHNyY09mZnNl
dCwgR0NHTHVpbnQgc3JjTGVuZ3RoKTsKLSAgICBib29sIHZhbGlkYXRlVW5pZm9ybVBhcmFtZXRl
cnMoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbios
IHZvaWQqLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSByZXF1aXJlZE1pblNpemUsIEdDR0x1aW50IHNy
Y09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKTsKLSAgICBib29sIHZhbGlkYXRlVW5pZm9ybU1h
dHJpeFBhcmFtZXRlcnMoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBjb25zdCBXZWJHTFVuaWZv
cm1Mb2NhdGlvbiosIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgRmxvYXQzMkxpc3QmLCBH
Q0dMc2l6ZWkgcmVxdWlyZWRNaW5TaXplLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNy
Y0xlbmd0aCk7Ci0gICAgYm9vbCB2YWxpZGF0ZVVuaWZvcm1NYXRyaXhQYXJhbWV0ZXJzKGNvbnN0
IGNoYXIqIGZ1bmN0aW9uTmFtZSwgY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qLCBHQ0dMYm9v
bGVhbiB0cmFuc3Bvc2UsIGNvbnN0IHZvaWQqLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSByZXF1aXJl
ZE1pblNpemUsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKTsKKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBUeXBlZExpc3RUeXBlPgorICAgIE9wdGlvbmFs
PEdDR0xTcGFuPGNvbnN0IFQ+PiB2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKGNvbnN0IGNoYXIq
IGZ1bmN0aW9uTmFtZSwgY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBjb25z
dCBUeXBlZExpc3Q8VHlwZWRMaXN0VHlwZSwgVD4mIHZhbHVlcywgR0NHTHNpemVpIHJlcXVpcmVk
TWluU2l6ZSwgR0NHTHVpbnQgc3JjT2Zmc2V0ID0gMCwgR0NHTHVpbnQgc3JjTGVuZ3RoID0gMCkK
KyAgICB7CisgICAgICAgIHJldHVybiB2YWxpZGF0ZVVuaWZvcm1NYXRyaXhQYXJhbWV0ZXJzKGZ1
bmN0aW9uTmFtZSwgbG9jYXRpb24sIGZhbHNlLCB2YWx1ZXMsIHJlcXVpcmVkTWluU2l6ZSwgc3Jj
T2Zmc2V0LCBzcmNMZW5ndGgpOworICAgIH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBl
bmFtZSBUeXBlZExpc3RUeXBlPgorICAgIE9wdGlvbmFsPEdDR0xTcGFuPGNvbnN0IFQ+PiB2YWxp
ZGF0ZVVuaWZvcm1NYXRyaXhQYXJhbWV0ZXJzKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgY29u
c3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IFR5
cGVkTGlzdDxUeXBlZExpc3RUeXBlLCBUPiYsIEdDR0xzaXplaSByZXF1aXJlZE1pblNpemUsIEdD
R0x1aW50IHNyY09mZnNldCA9IDAsIEdDR0x1aW50IHNyY0xlbmd0aCA9IDApOwogCiAgICAgLy8g
SGVscGVyIGZ1bmN0aW9uIHRvIHZhbGlkYXRlIHBhcmFtZXRlcnMgZm9yIGJ1ZmZlckRhdGEuCiAg
ICAgLy8gUmV0dXJuIHRoZSBjdXJyZW50IGJvdW5kIGJ1ZmZlciB0byB0YXJnZXQsIG9yIDAgaWYg
cGFyYW1ldGVycyBhcmUgaW52YWxpZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0V4dGVuc2lvbnNHTC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRXh0ZW5zaW9uc0dMLmgKaW5kZXggYmE4NjViMzMwOGU2Yzk0NTgyMjEyMjM3Nzk2ZDZm
ZDU3NzQ4NDdmOC4uZDE3YmFkYjFlMzFkNmQ1NjQwYjg3Mjk2Y2U1OWQyODMzMjgzNWZiMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRXh0ZW5zaW9uc0dMLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRXh0ZW5zaW9uc0dMLmgKQEAg
LTI5OCw3ICsyOTgsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHBvcEdyb3VwTWFya2Vy
RVhUKHZvaWQpID0gMDsKIAogICAgIC8vIEdMX0FSQl9kcmF3X2J1ZmZlcnMgLyBHTF9FWFRfZHJh
d19idWZmZXJzCi0gICAgdmlydHVhbCB2b2lkIGRyYXdCdWZmZXJzRVhUKEdDR0xzaXplaSBuLCBj
b25zdCBHQ0dMZW51bSogYnVmcykgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkcmF3QnVmZmVyc0VY
VChHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4gYnVmcykgPSAwOwogCiAgICAgLy8gR0xfQU5HTEVf
aW5zdGFuY2VkX2FycmF5cwogICAgIHZpcnR1YWwgdm9pZCBkcmF3QXJyYXlzSW5zdGFuY2VkKEdD
R0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xzaXplaSBjb3VudCwgR0NHTHNpemVpIHBy
aW1jb3VudCkgPSAwOwpAQCAtMzA3LDE3ICszMDcsOSBAQCBwdWJsaWM6CiAKICAgICAvLyBHTF9B
TkdMRV9yb2J1c3RfY2xpZW50X21lbW9yeQogICAgIHZpcnR1YWwgdm9pZCByZWFkUGl4ZWxzUm9i
dXN0QU5HTEUoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVp
IGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xzaXplaSogY29sdW1ucywgR0NHTHNpemVpKiByb3dz
LCBHQ0dMdm9pZCogcGl4ZWxzKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHRleEltYWdlMkRSb2J1
c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgaW50ZXJuYWxm
b3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIs
IEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0
IEdDR0x2b2lkKiBwaXhlbHMpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdGV4UGFyYW1ldGVyZnZS
b2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgY29uc3QgR0NHTGZsb2F0KiBwYXJhbXMpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdGV4
UGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGludCogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVh
bCB2b2lkIHRleFN1YkltYWdlMkRSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQg
bGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgs
IEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNp
emVpIGJ1ZlNpemUsIGNvbnN0IEdDR0x2b2lkKiBwaXhlbHMpID0gMDsKLSAgICB2aXJ0dWFsIHZv
aWQgY29tcHJlc3NlZFRleEltYWdlMkRSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xp
bnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xz
aXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTHZvaWQqIGRhdGEpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQg
Y29tcHJlc3NlZFRleFN1YkltYWdlMkRSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xp
bnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lk
dGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTHNpemVpIGltYWdlU2l6
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0x2b2lkKiBkYXRhKSA9IDA7Ci0gICAgdmly
dHVhbCB2b2lkIGNvbXByZXNzZWRUZXhJbWFnZTNEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRo
LCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xpbnQgYm9yZGVyLCBHQ0dM
c2l6ZWkgaW1hZ2VTaXplLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTHZvaWQqIGRhdGEp
ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgY29tcHJlc3NlZFRleFN1YkltYWdlM0RSb2J1c3RBTkdM
RShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGlu
dCB5b2Zmc2V0LCBHQ0dMaW50IHpvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhl
aWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFnZVNp
emUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMdm9pZCogZGF0YSkgPSAwOwotCi0gICAg
dmlydHVhbCB2b2lkIHRleEltYWdlM0RSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xp
bnQgbGV2ZWwsIEdDR0xpbnQgaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNp
emVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMaW50IGJvcmRlciwgR0NHTGVudW0gZm9y
bWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTHZvaWQqIHBp
eGVscykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB0ZXhTdWJJbWFnZTNEUm9idXN0QU5HTEUoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9m
ZnNldCwgR0NHTGludCB6b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQs
IEdDR0xzaXplaSBkZXB0aCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTHZvaWQqIHBpeGVscykgPSAwOworCiAgICAgdmlydHVhbCB2
b2lkIGdldFF1ZXJ5aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1l
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBnZXRRdWVyeU9iamVjdHVpdlJvYnVzdEFOR0xFKEdDR0x1
aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVu
Z3RoLCBHQ0dMdWludCogcGFyYW1zKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGdldEJ1ZmZlclBv
aW50ZXJ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNp
emVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdm9pZCoqIHBhcmFtcykgPSAwOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250
ZXh0R0wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dEdMLmgKaW5kZXggMGE3MTU0MGNlODAyMGZkOWY1ODE2ODYwM2Y2NzY5Yjk0NDUyMjQxNS4uYzU4
YmU4YTk3ZDIzN2RhYjJjNjBkODZiMTkzODRhZTkyZmZiZWIzZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5oCkBAIC0xMDYz
LDQ5ICsxMDYzLDU1IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgdGV4UGFyYW1ldGVyaShH
Q0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50IHBhcmFtKSA9IDA7CiAKICAg
ICB2aXJ0dWFsIHZvaWQgdW5pZm9ybTFmKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xmbG9hdCB4KSA9
IDA7Ci0gICAgdmlydHVhbCB2b2lkIHVuaWZvcm0xZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTHNp
emVpLCBjb25zdCBHQ0dMZmxvYXQqIHYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybTFm
dihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IHYpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgdW5pZm9ybTFpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xpbnQgeCkgPSAw
OwotICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtMWl2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXpl
aSwgY29uc3QgR0NHTGludCogdikgPSAwOworICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtMWl2KEdD
R0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+IHYpID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgdW5pZm9ybTJmKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xmbG9hdCB4LCBHQ0dMZmxv
YXQgeSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtMmZ2KEdDR0xpbnQgbG9jYXRpb24s
IEdDR0xzaXplaSwgY29uc3QgR0NHTGZsb2F0KiB2KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVu
aWZvcm0yZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiB2KSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIHVuaWZvcm0yaShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMaW50
IHgsIEdDR0xpbnQgeSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtMml2KEdDR0xpbnQg
bG9jYXRpb24sIEdDR0xzaXplaSwgY29uc3QgR0NHTGludCogdikgPSAwOworICAgIHZpcnR1YWwg
dm9pZCB1bmlmb3JtMml2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+
IHYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybTNmKEdDR0xpbnQgbG9jYXRpb24sIEdD
R0xmbG9hdCB4LCBHQ0dMZmxvYXQgeSwgR0NHTGZsb2F0IHopID0gMDsKLSAgICB2aXJ0dWFsIHZv
aWQgdW5pZm9ybTNmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWksIGNvbnN0IEdDR0xmbG9h
dCogdikgPSAwOworICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtM2Z2KEdDR0xpbnQgbG9jYXRpb24s
IEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gdikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB1bmlm
b3JtM2koR0NHTGludCBsb2NhdGlvbiwgR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xpbnQgeikg
PSAwOwotICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtM2l2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xz
aXplaSwgY29uc3QgR0NHTGludCogdikgPSAwOworICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtM2l2
KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+IHYpID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgdW5pZm9ybTRmKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xmbG9hdCB4LCBHQ0dM
ZmxvYXQgeSwgR0NHTGZsb2F0IHosIEdDR0xmbG9hdCB3KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lk
IHVuaWZvcm00ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpLCBjb25zdCBHQ0dMZmxvYXQq
IHYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybTRmdihHQ0dMaW50IGxvY2F0aW9uLCBH
Q0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IHYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdW5pZm9y
bTRpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMaW50IHosIEdD
R0xpbnQgdykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtNGl2KEdDR0xpbnQgbG9jYXRp
b24sIEdDR0xzaXplaSwgY29uc3QgR0NHTGludCogdikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB1
bmlmb3JtTWF0cml4MmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSwgR0NHTGJvb2xlYW4g
dHJhbnNwb3NlLCBjb25zdCBHQ0dMZmxvYXQqIHZhbHVlKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lk
IHVuaWZvcm1NYXRyaXgzZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpLCBHQ0dMYm9vbGVh
biB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogdmFsdWUpID0gMDsKLSAgICB2aXJ0dWFsIHZv
aWQgdW5pZm9ybU1hdHJpeDRmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWksIEdDR0xib29s
ZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiB2YWx1ZSkgPSAwOworICAgIHZpcnR1YWwg
dm9pZCB1bmlmb3JtNGl2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+
IHYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybU1hdHJpeDJmdihHQ0dMaW50IGxvY2F0
aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gdmFs
dWUpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybU1hdHJpeDNmdihHQ0dMaW50IGxvY2F0
aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gdmFs
dWUpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybU1hdHJpeDRmdihHQ0dMaW50IGxvY2F0
aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gdmFs
dWUpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCB1c2VQcm9ncmFtKFBsYXRmb3JtR0xPYmplY3Qp
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdmFsaWRhdGVQcm9ncmFtKFBsYXRmb3JtR0xPYmplY3Qp
ID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCB2ZXJ0ZXhBdHRyaWIxZihHQ0dMdWludCBpbmRleCwg
R0NHTGZsb2F0IHgpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdmVydGV4QXR0cmliMWZ2KEdDR0x1
aW50IGluZGV4LCBjb25zdCBHQ0dMZmxvYXQqIHZhbHVlcykgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCB2ZXJ0ZXhBdHRyaWIxZnYoR0NHTHVpbnQgaW5kZXgsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9h
dCwgMT4gdmFsdWVzKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHZlcnRleEF0dHJpYjJmKEdDR0x1
aW50IGluZGV4LCBHQ0dMZmxvYXQgeCwgR0NHTGZsb2F0IHkpID0gMDsKLSAgICB2aXJ0dWFsIHZv
aWQgdmVydGV4QXR0cmliMmZ2KEdDR0x1aW50IGluZGV4LCBjb25zdCBHQ0dMZmxvYXQqIHZhbHVl
cykgPSAwOworICAgIHZpcnR1YWwgdm9pZCB2ZXJ0ZXhBdHRyaWIyZnYoR0NHTHVpbnQgaW5kZXgs
IEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdCwgMj4gdmFsdWVzKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIHZlcnRleEF0dHJpYjNmKEdDR0x1aW50IGluZGV4LCBHQ0dMZmxvYXQgeCwgR0NHTGZsb2F0
IHksIEdDR0xmbG9hdCB6KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHZlcnRleEF0dHJpYjNmdihH
Q0dMdWludCBpbmRleCwgY29uc3QgR0NHTGZsb2F0KiB2YWx1ZXMpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgdmVydGV4QXR0cmliM2Z2KEdDR0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dM
ZmxvYXQsIDM+IHZhbHVlcykgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB2ZXJ0ZXhBdHRyaWI0ZihH
Q0dMdWludCBpbmRleCwgR0NHTGZsb2F0IHgsIEdDR0xmbG9hdCB5LCBHQ0dMZmxvYXQgeiwgR0NH
TGZsb2F0IHcpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdmVydGV4QXR0cmliNGZ2KEdDR0x1aW50
IGluZGV4LCBjb25zdCBHQ0dMZmxvYXQqIHZhbHVlcykgPSAwOworICAgIHZpcnR1YWwgdm9pZCB2
ZXJ0ZXhBdHRyaWI0ZnYoR0NHTHVpbnQgaW5kZXgsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdCwg
ND4gdmFsdWVzKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgdmVydGV4QXR0cmliUG9pbnRlcihH
Q0dMdWludCBpbmRleCwgR0NHTGludCBzaXplLCBHQ0dMZW51bSB0eXBlLCBHQ0dMYm9vbGVhbiBu
b3JtYWxpemVkLCBHQ0dMc2l6ZWkgc3RyaWRlLCBHQ0dMaW50cHRyIG9mZnNldCkgPSAwOwogCiAg
ICAgdmlydHVhbCB2b2lkIHZpZXdwb3J0KEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkg
d2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBidWZmZXJE
YXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpcHRyLCBHQ0dMZW51bSB1c2FnZSkgPSAwOwot
ICAgIHZpcnR1YWwgdm9pZCBidWZmZXJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpcHRy
LCBjb25zdCBHQ0dMdm9pZCogZGF0YSwgR0NHTGVudW0gdXNhZ2UpID0gMDsKLSAgICB2aXJ0dWFs
IHZvaWQgYnVmZmVyU3ViRGF0YShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnRwdHIgb2Zmc2V0LCBH
Q0dMc2l6ZWlwdHIsIGNvbnN0IEdDR0x2b2lkKiBkYXRhKSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IGJ1ZmZlckRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gZGF0
YSwgR0NHTGVudW0gdXNhZ2UpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgYnVmZmVyU3ViRGF0YShH
Q0dMZW51bSB0YXJnZXQsIEdDR0xpbnRwdHIgb2Zmc2V0LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9p
ZD4gZGF0YSkgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIHJlYWRQaXhlbHMoR0NHTGludCB4LCBH
Q0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9y
bWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMdm9pZCogZGF0YSkgPSAwOwogCi0gICAgdmlydHVhbCBi
b29sIHRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBp
bnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50
IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBjb25zdCBHQ0dMdm9pZCog
cGl4ZWxzKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NH
THNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVt
IHR5cGUsIGNvbnN0IEdDR0x2b2lkKiBwaXhlbHMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdGV4
SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFs
Zm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVy
LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsICBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9p
ZD4gcGl4ZWxzKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHRleEltYWdlMkQoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdp
ZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0LCBH
Q0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCB0
ZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zm
c2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwg
R0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4g
cGl4ZWxzKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NH
THNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVt
IHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNvbXByZXNz
ZWRUZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50
ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBi
b3JkZXIsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRh
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNvbXByZXNzZWRUZXhJbWFnZTJEKEdDR0xlbnVtIHRh
cmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3
aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xzaXplaSBpbWFnZVNp
emUsIEdDR0xpbnRwdHIgb2Zmc2V0KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNvbXByZXNzZWRU
ZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zm
c2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwg
R0NHTGVudW0gZm9ybWF0LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMU3Bhbjxjb25zdCBHQ0dM
dm9pZD4gZGF0YSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjb21wcmVzc2VkVGV4U3ViSW1hZ2Uy
RChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGlu
dCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZv
cm1hdCwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTGludHB0ciBvZmZzZXQpID0gMDsKIAogICAg
IHZpcnR1YWwgdm9pZCBkcmF3QXJyYXlzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQg
Zmlyc3QsIEdDR0xzaXplaSBjb3VudCwgR0NHTHNpemVpIHByaW1jb3VudCkgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBkcmF3RWxlbWVudHNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVp
IGNvdW50LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCwgR0NHTHNpemVpIHByaW1j
b3VudCkgPSAwOwpAQCAtMTEyNSw4ICsxMTMxLDggQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2
b2lkIGJsaXRGcmFtZWJ1ZmZlcihHQ0dMaW50IHNyY1gwLCBHQ0dMaW50IHNyY1kwLCBHQ0dMaW50
IHNyY1gxLCBHQ0dMaW50IHNyY1kxLCBHQ0dMaW50IGRzdFgwLCBHQ0dMaW50IGRzdFkwLCBHQ0dM
aW50IGRzdFgxLCBHQ0dMaW50IGRzdFkxLCBHQ0dMYml0ZmllbGQgbWFzaywgR0NHTGVudW0gZmls
dGVyKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGZyYW1lYnVmZmVyVGV4dHVyZUxheWVyKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGVudW0gYXR0YWNobWVudCwgUGxhdGZvcm1HTE9iamVjdCB0ZXh0dXJl
LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IGxheWVyKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGlu
dmFsaWRhdGVGcmFtZWJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaSBudW1BdHRhY2ht
ZW50cywgY29uc3QgR0NHTGVudW0qIGF0dGFjaG1lbnRzKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lk
IGludmFsaWRhdGVTdWJGcmFtZWJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaSBudW1B
dHRhY2htZW50cywgY29uc3QgR0NHTGVudW0qIGF0dGFjaG1lbnRzLCBHQ0dMaW50IHgsIEdDR0xp
bnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIGludmFsaWRhdGVGcmFtZWJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQsIEdDR0xTcGFuPGNv
bnN0IEdDR0xlbnVtPiBhdHRhY2htZW50cykgPSAwOworICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlk
YXRlU3ViRnJhbWVidWZmZXIoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51
bT4gYXR0YWNobWVudHMsIEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdD
R0xzaXplaSBoZWlnaHQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcmVhZEJ1ZmZlcihHQ0dMZW51
bSBzcmMpID0gMDsKIAogICAgIC8vIGdldEludGVybmFsRm9ybWF0UGFyYW1ldGVyCkBAIC0xMTM2
LDExICsxMTQyLDE1IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgdGV4U3RvcmFnZTJEKEdD
R0xlbnVtIHRhcmdldCwgR0NHTHNpemVpIGxldmVscywgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQs
IEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCB0ZXhTdG9yYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgbGV2ZWxzLCBHQ0dMZW51
bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dM
c2l6ZWkgZGVwdGgpID0gMDsKIAotICAgIC8vIHRleHtTdWJ9SW1hZ2UzRCBhcmUgc3VwcG9ydGVk
IG9ubHkgdmlhIEFOR0xFX3JvYnVzdF9jbGllbnRfbWVtb3J5LgotCisgICAgdmlydHVhbCB2b2lk
IHRleEltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IGludGVy
bmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBk
ZXB0aCwgR0NHTGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NH
TFNwYW48Y29uc3QgR0NHTHZvaWQ+IHBpeGVscykgPSAwOworICAgIHZpcnR1YWwgdm9pZCB0ZXhJ
bWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCBpbnRlcm5hbGZv
cm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgs
IEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRw
dHIgb2Zmc2V0KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHRleFN1YkltYWdlM0QoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwg
R0NHTGludCB6b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xz
aXplaSBkZXB0aCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bhbjxjb25z
dCBHQ0dMdm9pZD4gcGl4ZWxzKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHRleFN1YkltYWdlM0Qo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQg
eW9mZnNldCwgR0NHTGludCB6b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWln
aHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dM
aW50cHRyIG9mZnNldCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjb3B5VGV4U3ViSW1hZ2UzRChH
Q0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5
b2Zmc2V0LCBHQ0dMaW50IHpvZmZzZXQsIEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkg
d2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpID0gMDsKLQotICAgIC8vIGNvbXByZXNzZWRUZXh7U3Vi
fUltYWdlM0QgYXJlIHN1cHBvcnRlZCBvbmx5IHZpYSBBTkdMRV9yb2J1c3RfY2xpZW50X21lbW9y
eS4KKyAgICB2aXJ0dWFsIHZvaWQgY29tcHJlc3NlZFRleEltYWdlM0QoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRo
LCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xpbnQgYm9yZGVyLCBHQ0dM
c2l6ZWkgaW1hZ2VTaXplLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gZGF0YSkgPSAwOworICAg
IHZpcnR1YWwgdm9pZCBjb21wcmVzc2VkVGV4SW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xp
bnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xz
aXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGludCBib3JkZXIsIEdDR0xzaXplaSBp
bWFnZVNpemUsIEdDR0xpbnRwdHIgb2Zmc2V0KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNvbXBy
ZXNzZWRUZXhTdWJJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGlu
dCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xpbnQgem9mZnNldCwgR0NHTHNpemVpIHdp
ZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xlbnVtIGZvcm1hdCwg
R0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgY29tcHJlc3NlZFRleFN1YkltYWdlM0QoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTGlu
dCB6b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBk
ZXB0aCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMaW50cHRyIG9m
ZnNldCkgPSAwOwogCiAgICAgdmlydHVhbCBHQ0dMaW50IGdldEZyYWdEYXRhTG9jYXRpb24oUGxh
dGZvcm1HTE9iamVjdCBwcm9ncmFtLCBjb25zdCBTdHJpbmcmIG5hbWUpID0gMDsKIApAQCAtMTE0
OCwyOCArMTE1OCwyOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHVuaWZvcm0ydWkoR0NH
TGludCBsb2NhdGlvbiwgR0NHTHVpbnQgdjAsIEdDR0x1aW50IHYxKSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIHVuaWZvcm0zdWkoR0NHTGludCBsb2NhdGlvbiwgR0NHTHVpbnQgdjAsIEdDR0x1aW50
IHYxLCBHQ0dMdWludCB2MikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtNHVpKEdDR0xp
bnQgbG9jYXRpb24sIEdDR0x1aW50IHYwLCBHQ0dMdWludCB2MSwgR0NHTHVpbnQgdjIsIEdDR0x1
aW50IHYzKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHVuaWZvcm0xdWl2KEdDR0xpbnQgbG9jYXRp
b24sIGNvbnN0IEdDR0x1aW50KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNy
Y0xlbmd0aCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtMnVpdihHQ0dMaW50IGxvY2F0
aW9uLCBjb25zdCBHQ0dMdWludCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBz
cmNMZW5ndGgpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybTN1aXYoR0NHTGludCBsb2Nh
dGlvbiwgY29uc3QgR0NHTHVpbnQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQg
c3JjTGVuZ3RoKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHVuaWZvcm00dWl2KEdDR0xpbnQgbG9j
YXRpb24sIGNvbnN0IEdDR0x1aW50KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50
IHNyY0xlbmd0aCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtTWF0cml4MngzZnYoR0NH
TGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHQ0dMZmxvYXQqIGRh
dGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKSA9IDA7Ci0gICAgdmly
dHVhbCB2b2lkIHVuaWZvcm1NYXRyaXgzeDJmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVh
biB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBH
Q0dMdWludCBzcmNMZW5ndGgpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybU1hdHJpeDJ4
NGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZs
b2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkgPSAwOwot
ICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtTWF0cml4NHgyZnYoR0NHTGludCBsb2NhdGlvbiwgR0NH
TGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNyY09m
ZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHVuaWZvcm1N
YXRyaXgzeDRmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0
IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgp
ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybU1hdHJpeDR4M2Z2KEdDR0xpbnQgbG9jYXRp
b24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWlu
dCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCB1
bmlmb3JtMXVpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdWludD4gZGF0
YSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtMnVpdihHQ0dMaW50IGxvY2F0aW9uLCBH
Q0dMU3Bhbjxjb25zdCBHQ0dMdWludD4gZGF0YSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCB1bmlm
b3JtM3VpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdWludD4gZGF0YSkg
PSAwOworICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtNHVpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dM
U3Bhbjxjb25zdCBHQ0dMdWludD4gZGF0YSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCB1bmlmb3Jt
TWF0cml4MngzZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dM
U3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdW5pZm9y
bU1hdHJpeDN4MmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NH
TFNwYW48Y29uc3QgR0NHTGZsb2F0PiBkYXRhKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVuaWZv
cm1NYXRyaXgyeDRmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdD
R0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gZGF0YSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCB1bmlm
b3JtTWF0cml4NHgyZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBH
Q0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdW5p
Zm9ybU1hdHJpeDN4NGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwg
R0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiBkYXRhKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVu
aWZvcm1NYXRyaXg0eDNmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2Us
IEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gZGF0YSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB2
ZXJ0ZXhBdHRyaWJJNGkoR0NHTHVpbnQgaW5kZXgsIEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dM
aW50IHosIEdDR0xpbnQgdykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB2ZXJ0ZXhBdHRyaWJJNGl2
KEdDR0x1aW50IGluZGV4LCBjb25zdCBHQ0dMaW50KiB2YWx1ZXMpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgdmVydGV4QXR0cmliSTRpdihHQ0dMdWludCBpbmRleCwgR0NHTFNwYW48Y29uc3QgR0NH
TGludCwgND4gdmFsdWVzKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHZlcnRleEF0dHJpYkk0dWko
R0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50IHgsIEdDR0x1aW50IHksIEdDR0x1aW50IHosIEdDR0x1
aW50IHcpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdmVydGV4QXR0cmliSTR1aXYoR0NHTHVpbnQg
aW5kZXgsIGNvbnN0IEdDR0x1aW50KiB2YWx1ZXMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdmVy
dGV4QXR0cmliSTR1aXYoR0NHTHVpbnQgaW5kZXgsIEdDR0xTcGFuPGNvbnN0IEdDR0x1aW50LCA0
PiB2YWx1ZXMpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdmVydGV4QXR0cmliSVBvaW50ZXIoR0NH
THVpbnQgaW5kZXgsIEdDR0xpbnQgc2l6ZSwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIHN0cmlk
ZSwgR0NHTGludHB0ciBvZmZzZXQpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBkcmF3UmFuZ2VF
bGVtZW50cyhHQ0dMZW51bSBtb2RlLCBHQ0dMdWludCBzdGFydCwgR0NHTHVpbnQgZW5kLCBHQ0dM
c2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KSA9IDA7CiAKLSAg
ICB2aXJ0dWFsIHZvaWQgZHJhd0J1ZmZlcnMoR0NHTHNpemVpIG4sIGNvbnN0IEdDR0xlbnVtKiBi
dWZzKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGNsZWFyQnVmZmVyaXYoR0NHTGVudW0gYnVmZmVy
LCBHQ0dMaW50IGRyYXdidWZmZXIsIGNvbnN0IEdDR0xpbnQqIHZhbHVlcywgR0NHTHVpbnQgc3Jj
T2Zmc2V0KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGNsZWFyQnVmZmVydWl2KEdDR0xlbnVtIGJ1
ZmZlciwgR0NHTGludCBkcmF3YnVmZmVyLCBjb25zdCBHQ0dMdWludCogdmFsdWVzLCBHQ0dMdWlu
dCBzcmNPZmZzZXQpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgY2xlYXJCdWZmZXJmdihHQ0dMZW51
bSBidWZmZXIsIEdDR0xpbnQgZHJhd2J1ZmZlciwgY29uc3QgR0NHTGZsb2F0KiB2YWx1ZXMsIEdD
R0x1aW50IHNyY09mZnNldCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkcmF3QnVmZmVycyhHQ0dM
U3Bhbjxjb25zdCBHQ0dMZW51bT4gYnVmcykgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjbGVhckJ1
ZmZlcml2KEdDR0xlbnVtIGJ1ZmZlciwgR0NHTGludCBkcmF3YnVmZmVyLCBHQ0dMU3Bhbjxjb25z
dCBHQ0dMaW50PiB2YWx1ZXMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY2xlYXJCdWZmZXJ1aXYo
R0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50IGRyYXdidWZmZXIsIEdDR0xTcGFuPGNvbnN0IEdDR0x1
aW50PiB2YWx1ZXMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY2xlYXJCdWZmZXJmdihHQ0dMZW51
bSBidWZmZXIsIEdDR0xpbnQgZHJhd2J1ZmZlciwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiB2
YWx1ZXMpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY2xlYXJCdWZmZXJmaShHQ0dMZW51bSBidWZm
ZXIsIEdDR0xpbnQgZHJhd2J1ZmZlciwgR0NHTGZsb2F0IGRlcHRoLCBHQ0dMaW50IHN0ZW5jaWwp
ID0gMDsKIAogICAgIHZpcnR1YWwgUGxhdGZvcm1HTE9iamVjdCBjcmVhdGVRdWVyeSgpID0gMDsK
QEAgLTEyMjEsMjAgKzEyMzEsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBTdHJpbmcgZ2V0QWN0
aXZlVW5pZm9ybUJsb2NrTmFtZShQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1aW50IHVu
aWZvcm1CbG9ja0luZGV4KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHVuaWZvcm1CbG9ja0JpbmRp
bmcoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMdWludCB1bmlmb3JtQmxvY2tJbmRleCwg
R0NHTHVpbnQgdW5pZm9ybUJsb2NrQmluZGluZykgPSAwOwogCi0gICAgdmlydHVhbCB2b2lkIHVu
aWZvcm0xZnYoR0NHTGludCBsb2NhdGlvbiwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWlu
dCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB1
bmlmb3JtMmZ2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVp
bnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQg
dW5pZm9ybTNmdihHQ0dMaW50IGxvY2F0aW9uLCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1
aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lk
IHVuaWZvcm00ZnYoR0NHTGludCBsb2NhdGlvbiwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dM
dWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkgPSAwOwotCi0gICAgdmlydHVhbCB2
b2lkIHVuaWZvcm0xaXYoR0NHTGludCBsb2NhdGlvbiwgY29uc3QgR0NHTGludCogZGF0YSwgR0NH
THVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpID0gMDsKLSAgICB2aXJ0dWFsIHZv
aWQgdW5pZm9ybTJpdihHQ0dMaW50IGxvY2F0aW9uLCBjb25zdCBHQ0dMaW50KiBkYXRhLCBHQ0dM
dWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkgPSAwOwotICAgIHZpcnR1YWwgdm9p
ZCB1bmlmb3JtM2l2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0xpbnQqIGRhdGEsIEdDR0x1
aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lk
IHVuaWZvcm00aXYoR0NHTGludCBsb2NhdGlvbiwgY29uc3QgR0NHTGludCogZGF0YSwgR0NHTHVp
bnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpID0gMDsKLQotICAgIHZpcnR1YWwgdm9p
ZCB1bmlmb3JtTWF0cml4MmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9z
ZSwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNy
Y0xlbmd0aCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtTWF0cml4M2Z2KEdDR0xpbnQg
bG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBH
Q0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkgPSAwOwotICAgIHZpcnR1YWwg
dm9pZCB1bmlmb3JtTWF0cml4NGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5z
cG9zZSwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50
IHNyY0xlbmd0aCkgPSAwOwotCiAgICAgdmlydHVhbCB2b2lkIGdldEFjdGl2ZVVuaWZvcm1CbG9j
a2l2KEdDR0x1aW50IHByb2dyYW0sIEdDR0x1aW50IHVuaWZvcm1CbG9ja0luZGV4LCBHQ0dMZW51
bSBwbmFtZSwgR0NHTFNwYW48R0NHTGludD4gcGFyYW1zKSA9IDA7CiAKICAgICAvLyBPdGhlciBm
dW5jdGlvbnMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc1R5cGVzR0wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzVHlwZXNHTC5oCmluZGV4IGU3YzY5YjI4ZGNlNDY1ODI1NzU3NzMzMzI1YjhmNDRkZjI3MjA3
YjkuLjk4NWZiNzk0NTEzNDUwODkzZDgyMGQ2ZTk1NTUzZDJhM2Y4OWQxNGYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXNHTC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXNHTC5oCkBAIC02
OCw2ICs2OCwxMCBAQCBzdHJ1Y3QgR0NHTFNwYW4gewogICAgIEdDR0xTcGFuKFQgKCZhcnJheSlb
RXh0ZW50XSkKICAgICAgICAgOiBkYXRhKGFycmF5KQogICAgIHsgfQorICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFU+CisgICAgR0NHTFNwYW4oY29uc3QgR0NHTFNwYW48VSwgRXh0ZW50PiYgb3RoZXIs
IHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19jb252ZXJ0aWJsZV92PFUoKilbXSwgVCgqKVtdPiwg
bnVsbHB0cl90PiA9IG51bGxwdHIpCisgICAgICAgIDogZGF0YShvdGhlci5kYXRhKQorICAgIHsg
fQogICAgIFQmIG9wZXJhdG9yW10oc2l6ZV90IGkpIHsgUkVMRUFTRV9BU1NFUlQoZGF0YSAmJiBp
IDwgYnVmU2l6ZSk7IHJldHVybiBkYXRhW2ldOyB9CiAgICAgVCYgb3BlcmF0b3IqKCkgeyBSRUxF
QVNFX0FTU0VSVChkYXRhICYmIGJ1ZlNpemUpOyByZXR1cm4gKmRhdGE7IH0KICAgICBUKiBkYXRh
OwpAQCAtODAsMTEgKzg0LDE4IEBAIHN0cnVjdCBHQ0dMU3BhbjxULCBzdGQ6Om51bWVyaWNfbGlt
aXRzPHNpemVfdD46Om1heCgpPiB7CiAgICAgICAgIDogZGF0YShhcnJheSkKICAgICAgICAgLCBi
dWZTaXplKGJ1ZlNpemVfKQogICAgIHsgfQotICAgIHRlbXBsYXRlPHNpemVfdCBTej4gR0NHTFNw
YW4oVCAoJmFycmF5KVtTel0pCisgICAgdGVtcGxhdGU8c2l6ZV90IFN6PgorICAgIEdDR0xTcGFu
KFQgKCZhcnJheSlbU3pdKQogICAgICAgICA6IGRhdGEoYXJyYXkpCiAgICAgICAgICwgYnVmU2l6
ZShTeikKICAgICB7IH0KLSAgICBHQ0dMU3BhbihXVEY6OlZlY3RvcjxUPiYgYXJyYXkpCisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgVSwgc2l6ZV90IFVFeHRlbnQ+CisgICAgR0NHTFNwYW4oY29uc3Qg
R0NHTFNwYW48VSwgVUV4dGVudD4mIG90aGVyLCBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfY29u
dmVydGlibGVfdjxVKCopW10sIFQoKilbXT4sIG51bGxwdHJfdD4gPSBudWxscHRyKQorICAgICAg
ICA6IGRhdGEob3RoZXIuZGF0YSkKKyAgICAgICAgLCBidWZTaXplKG90aGVyLmJ1ZlNpemUpCisg
ICAgeyB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVSwgc2l6ZV90IGlubGluZUNhcGFjaXR5Pgor
ICAgIEdDR0xTcGFuKFdURjo6VmVjdG9yPFUsIGlubGluZUNhcGFjaXR5PiYgYXJyYXksIHN0ZDo6
ZW5hYmxlX2lmX3Q8c3RkOjppc19jb252ZXJ0aWJsZV92PFUoKilbXSwgVCgqKVtdPiwgbnVsbHB0
cl90PiA9IG51bGxwdHIpCiAgICAgICAgIDogZGF0YShhcnJheS5kYXRhKCkpCiAgICAgICAgICwg
YnVmU2l6ZShhcnJheS5zaXplKCkpCiAgICAgeyB9CkBAIC05NCw2ICsxMDUsNTAgQEAgc3RydWN0
IEdDR0xTcGFuPFQsIHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCk+IHsKICAgICBj
b25zdCBzaXplX3QgYnVmU2l6ZTsKIH07CiAKK3RlbXBsYXRlPD4KK3N0cnVjdCBHQ0dMU3BhbjxH
Q0dMdm9pZD4geworICAgIEdDR0xTcGFuKEdDR0x2b2lkKiBhcnJheSwgc2l6ZV90IGJ1ZlNpemVf
KQorICAgICAgICA6IGRhdGEoYXJyYXkpCisgICAgICAgICwgYnVmU2l6ZShidWZTaXplXykKKyAg
ICB7IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVLCBzaXplX3QgU3o+CisgICAgR0NHTFNwYW4o
VSAoJmFycmF5KVtTel0pCisgICAgICAgIDogZGF0YShhcnJheSkKKyAgICAgICAgLCBidWZTaXpl
KFN6ICogc2l6ZW9mKFUpKQorICAgIHsgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUsIHNpemVf
dCBVRXh0ZW50PgorICAgIEdDR0xTcGFuKGNvbnN0IEdDR0xTcGFuPFUsIFVFeHRlbnQ+JiBvdGhl
cikKKyAgICAgICAgOiBkYXRhKG90aGVyLmRhdGEpCisgICAgICAgICwgYnVmU2l6ZShvdGhlci5i
dWZTaXplICogc2l6ZW9mKFUpKQorICAgIHsgfQorICAgIEdDR0x2b2lkKiBkYXRhOworICAgIGNv
bnN0IHNpemVfdCBidWZTaXplOworfTsKKwordGVtcGxhdGU8Pgorc3RydWN0IEdDR0xTcGFuPGNv
bnN0IEdDR0x2b2lkPiB7CisgICAgR0NHTFNwYW4oY29uc3QgR0NHTHZvaWQqIGFycmF5LCBzaXpl
X3QgYnVmU2l6ZV8pCisgICAgICAgIDogZGF0YShhcnJheSkKKyAgICAgICAgLCBidWZTaXplKGJ1
ZlNpemVfKQorICAgIHsgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUsIHNpemVfdCBTej4KKyAg
ICBHQ0dMU3BhbihVICgmYXJyYXkpW1N6XSkKKyAgICAgICAgOiBkYXRhKGFycmF5KQorICAgICAg
ICAsIGJ1ZlNpemUoU3ogKiBzaXplb2YoVSkpCisgICAgeyB9CisgICAgR0NHTFNwYW4oY29uc3Qg
R0NHTFNwYW48R0NHTHZvaWQ+JiBvdGhlcikKKyAgICAgICAgOiBkYXRhKG90aGVyLmRhdGEpCisg
ICAgICAgICwgYnVmU2l6ZShvdGhlci5idWZTaXplKQorICAgIHsgfQorICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFUsIHNpemVfdCBVRXh0ZW50PgorICAgIEdDR0xTcGFuKGNvbnN0IEdDR0xTcGFuPFUs
IFVFeHRlbnQ+JiBvdGhlcikKKyAgICAgICAgOiBkYXRhKG90aGVyLmRhdGEpCisgICAgICAgICwg
YnVmU2l6ZShvdGhlci5idWZTaXplICogc2l6ZW9mKFUpKQorICAgIHsgfQorICAgIGNvbnN0IEdD
R0x2b2lkKiBkYXRhOworICAgIGNvbnN0IHNpemVfdCBidWZTaXplOworfTsKKwogdGVtcGxhdGU8
dHlwZW5hbWUgVCwgc2l6ZV90IE4+CiBHQ0dMU3BhbihUICgmKVtOXSkgLT4gR0NHTFNwYW48VCwg
Tj47CiAKQEAgLTEwNSwzICsxNjAsOSBAQCBHQ0dMU3BhbjxUPiBtYWtlR0NHTFNwYW4oVCogZGF0
YSwgc2l6ZV90IGNvdW50KQogewogICAgIHJldHVybiBHQ0dMU3BhbjxUPiB7IGRhdGEsIGNvdW50
IH07CiB9CisKK3RlbXBsYXRlPHNpemVfdCBFeHRlbnQsIHR5cGVuYW1lIFQ+CitHQ0dMU3BhbjxU
LCBFeHRlbnQ+IG1ha2VHQ0dMU3BhbihUKiBkYXRhKQoreworICAgIHJldHVybiBHQ0dMU3BhbjxU
LCBFeHRlbnQ+IHsgZGF0YSB9OworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuY3BwCmluZGV4IDRkMDI1
Yjk5MzQyMjc3NmI5YjVmNGFhYmMzOWEwYzc4OTE5NDBhOTkuLjI4M2RhODJjNmE2MDJlYTRiNTU3
YzY4NmNmZDgyM2QwODFjNTVlNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5jcHAKQEAgLTIyNywx
MiArMjI3LDEyIEBAIGJvb2wgRXh0ZW5zaW9uc0dMQU5HTEU6OnN1cHBvcnRzRXh0ZW5zaW9uKGNv
bnN0IFN0cmluZyYgbmFtZSkKICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRh
aW5zKG5hbWUpIHx8IG1fcmVxdWVzdGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKG5hbWUpOwogfQog
Ci12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpkcmF3QnVmZmVyc0VYVChHQ0dMc2l6ZWkgbiwgY29u
c3QgR0NHTGVudW0qIGJ1ZnMpCit2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpkcmF3QnVmZmVyc0VY
VChHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4gYnVmcykKIHsKICAgICBpZiAoIW1fY29udGV4dC0+
bWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGdsOjpEcmF3QnVm
ZmVyc0VYVChuLCBidWZzKTsKKyAgICBnbDo6RHJhd0J1ZmZlcnNFWFQoYnVmcy5idWZTaXplLCBi
dWZzLmRhdGEpOwogfQogCiB2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpkcmF3QXJyYXlzSW5zdGFu
Y2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xzaXplaSBjb3VudCwgR0NHTHNp
emVpIHByaW1jb3VudCkKQEAgLTI4NiwxNiArMjg2LDYgQEAgdm9pZCBFeHRlbnNpb25zR0xBTkdM
RTo6cmVhZFBpeGVsc1JvYnVzdEFOR0xFKGludCB4LCBpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBH
Q0cKICAgICBnbDo6UmVhZFBpeGVsc1JvYnVzdEFOR0xFKHgsIHksIHdpZHRoLCBoZWlnaHQsIGZv
cm1hdCwgdHlwZSwgYnVmU2l6ZSwgbGVuZ3RoLCBjb2x1bW5zLCByb3dzLCBwaXhlbHMpOwogfQog
Ci12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjp0ZXhJbWFnZTJEUm9idXN0QU5HTEUoR0NHTGVudW0g
dGFyZ2V0LCBpbnQgbGV2ZWwsIGludCBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBH
Q0dMc2l6ZWkgaGVpZ2h0LCBpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5
cGUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCB2b2lkICpwaXhlbHMpCi17Ci0gICAgaWYgKCFt
X2NvbnRleHQtPm1faXNGb3JXZWJHTDIpCi0gICAgICAgIGludGVybmFsZm9ybWF0ID0gYWRqdXN0
V2ViR0wxVGV4dHVyZUludGVybmFsRm9ybWF0KGludGVybmFsZm9ybWF0LCBmb3JtYXQsIHR5cGUp
OwotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgZ2w6OlRleEltYWdlMkRSb2J1c3RBTkdMRSh0YXJnZXQsIGxldmVsLCBpbnRl
cm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgYm9yZGVyLCBmb3JtYXQsIHR5cGUsIGJ1ZlNpemUs
IHBpeGVscyk7Ci19Ci0KIHZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OnRleFBhcmFtZXRlcmZ2Um9i
dXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNp
emUsIGNvbnN0IEdDR0xmbG9hdCAqcGFyYW1zKQogewogICAgIGlmICghbV9jb250ZXh0LT5tYWtl
Q29udGV4dEN1cnJlbnQoKSkKQEAgLTMxMiw2NiArMzAyLDYgQEAgdm9pZCBFeHRlbnNpb25zR0xB
TkdMRTo6dGV4UGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVt
IHBuYW0KICAgICBnbDo6VGV4UGFyYW1ldGVyaXZSb2J1c3RBTkdMRSh0YXJnZXQsIHBuYW1lLCBi
dWZTaXplLCBwYXJhbXMpOwogfQogCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjp0ZXhTdWJJbWFn
ZTJEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWwsIGludCB4b2Zmc2V0LCBp
bnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBm
b3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCB2b2lkICpwaXhl
bHMpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBnbDo6VGV4U3ViSW1hZ2UyRFJvYnVzdEFOR0xFKHRhcmdldCwgbGV2
ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgYnVmU2l6
ZSwgcGl4ZWxzKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Y29tcHJlc3NlZFRleElt
YWdlMkRSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIGludCBsZXZlbCwgR0NHTGVudW0gaW50
ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgaW50IGJvcmRl
ciwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IHZvaWQqIGRh
dGEpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBnbDo6Q29tcHJlc3NlZFRleEltYWdlMkRSb2J1c3RBTkdMRSh0YXJn
ZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgYm9yZGVyLCBpbWFnZVNp
emUsIGJ1ZlNpemUsIGRhdGEpOwotICAgIG1fY29udGV4dC0+bV9zdGF0ZS50ZXh0dXJlU2VlZENv
dW50LmFkZChtX2NvbnRleHQtPm1fc3RhdGUuY3VycmVudEJvdW5kVGV4dHVyZSgpKTsKLQotfQot
Ci12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRFJvYnVzdEFO
R0xFKEdDR0xlbnVtIHRhcmdldCwgaW50IGxldmVsLCBpbnQgeG9mZnNldCwgaW50IHlvZmZzZXQs
IEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dM
c2l6ZWkgaW1hZ2VTaXplLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3Qgdm9pZCogZGF0YSkKLXsK
LSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIGdsOjpDb21wcmVzc2VkVGV4U3ViSW1hZ2UyRFJvYnVzdEFOR0xFKHRhcmdldCwg
bGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgaW1hZ2VTaXpl
LCBidWZTaXplLCBkYXRhKTsKLSAgICBtX2NvbnRleHQtPm1fc3RhdGUudGV4dHVyZVNlZWRDb3Vu
dC5hZGQobV9jb250ZXh0LT5tX3N0YXRlLmN1cnJlbnRCb3VuZFRleHR1cmUoKSk7Ci19Ci0KLXZv
aWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmNvbXByZXNzZWRUZXhJbWFnZTNEUm9idXN0QU5HTEUoR0NH
TGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6
ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgaW50IGJvcmRlciwg
R0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IHZvaWQqIGRhdGEp
Ci17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBnbDo6Q29tcHJlc3NlZFRleEltYWdlM0RSb2J1c3RBTkdMRSh0YXJnZXQs
IGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGJvcmRlciwgaW1h
Z2VTaXplLCBidWZTaXplLCBkYXRhKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Y29t
cHJlc3NlZFRleFN1YkltYWdlM0RSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIGludCBsZXZl
bCwgaW50IHhvZmZzZXQsIGludCB5b2Zmc2V0LCBpbnQgem9mZnNldCwgR0NHTHNpemVpIHdpZHRo
LCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xlbnVtIGZvcm1hdCwgR0NH
THNpemVpIGltYWdlU2l6ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IHZvaWQqIGRhdGEpCi17
Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBnbDo6Q29tcHJlc3NlZFRleFN1YkltYWdlM0RSb2J1c3RBTkdMRSh0YXJnZXQs
IGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB6b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwg
Zm9ybWF0LCBpbWFnZVNpemUsIGJ1ZlNpemUsIGRhdGEpOwotfQotCi0KLXZvaWQgRXh0ZW5zaW9u
c0dMQU5HTEU6OnRleEltYWdlM0RSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIGludCBsZXZl
bCwgaW50IGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQs
IEdDR0xzaXplaSBkZXB0aCwgaW50IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0
eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3Qgdm9pZCAqcGl4ZWxzKQotewotICAgIGlmICgh
bV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
Z2w6OlRleEltYWdlM0RSb2J1c3RBTkdMRSh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwg
d2lkdGgsIGhlaWdodCwgZGVwdGgsIGJvcmRlciwgZm9ybWF0LCB0eXBlLCBidWZTaXplLCBwaXhl
bHMpOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjp0ZXhTdWJJbWFnZTNEUm9idXN0QU5H
TEUoR0NHTGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWwsIGludCB4b2Zmc2V0LCBpbnQgeW9mZnNldCwg
aW50IHpvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVp
IGRlcHRoLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXpl
LCBjb25zdCB2b2lkICpwaXhlbHMpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0
Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6VGV4U3ViSW1hZ2UzRFJvYnVz
dEFOR0xFKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHpvZmZzZXQsIHdpZHRoLCBo
ZWlnaHQsIGRlcHRoLCBmb3JtYXQsIHR5cGUsIGJ1ZlNpemUsIHBpeGVscyk7Ci19Ci0KIHZvaWQg
RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFF1ZXJ5aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQs
IEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdD
R0xpbnQgKnBhcmFtcykKIHsKICAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50
KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9F
eHRlbnNpb25zR0xBTkdMRS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5n
bGUvRXh0ZW5zaW9uc0dMQU5HTEUuaAppbmRleCA1N2JiOTNiYzg0YzMzNTkwZmJjZjRiM2Y3YTFl
YjVhNTVjNTkyNTZjLi5hNzczMWRmZDIwYzVmMDNhMzM1OTAzZmFhNmUzOGZmNzJmNGIyMzIzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNp
b25zR0xBTkdMRS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xl
L0V4dGVuc2lvbnNHTEFOR0xFLmgKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgogICAgIHZvaWQg
aW5zZXJ0RXZlbnRNYXJrZXJFWFQoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBw
dXNoR3JvdXBNYXJrZXJFWFQoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBwb3BH
cm91cE1hcmtlckVYVCh2b2lkKSBvdmVycmlkZTsKLSAgICB2b2lkIGRyYXdCdWZmZXJzRVhUKEdD
R0xzaXplaSwgY29uc3QgR0NHTGVudW0qKSBvdmVycmlkZTsKKyAgICB2b2lkIGRyYXdCdWZmZXJz
RVhUKEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVtPikgb3ZlcnJpZGU7CiAKICAgICBTdHJpbmcgZ2V0
VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKFBsYXRmb3JtR0xPYmplY3QpIG92ZXJyaWRlOwog
CkBAIC03NCwxNyArNzQsOCBAQCBwdWJsaWM6CiAKICAgICAvLyBHTF9BTkdMRV9yb2J1c3RfY2xp
ZW50X21lbW9yeQogICAgIHZvaWQgcmVhZFBpeGVsc1JvYnVzdEFOR0xFKEdDR0xpbnQgeCwgR0NH
TGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1h
dCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBH
Q0dMc2l6ZWkgKmNvbHVtbnMsIEdDR0xzaXplaSAqcm93cywgdm9pZCAqcGl4ZWxzKSBvdmVycmlk
ZTsKLSAgICB2b2lkIHRleEltYWdlMkRSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xp
bnQgbGV2ZWwsIEdDR0xpbnQgaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNp
emVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlw
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IHZvaWQgKnBpeGVscykgb3ZlcnJpZGU7CiAgICAg
dm9pZCB0ZXhQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0g
cG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMZmxvYXQgKnBhcmFtcykgb3ZlcnJp
ZGU7CiAgICAgdm9pZCB0ZXhQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50ICpwYXJhbXMp
IG92ZXJyaWRlOwotICAgIHZvaWQgdGV4U3ViSW1hZ2UyRFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRh
cmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdD
R0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51
bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3Qgdm9pZCAqcGl4ZWxzKSBvdmVycmlkZTsK
LSAgICB2b2lkIGNvbXByZXNzZWRUZXhJbWFnZTJEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRo
LCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTHNpemVpIGltYWdlU2l6ZSwg
R0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0x2b2lkKiBkYXRhKSBvdmVycmlkZTsKLSAgICB2
b2lkIGNvbXByZXNzZWRUZXhTdWJJbWFnZTJEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTHNpemVp
IHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFn
ZVNpemUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMdm9pZCogZGF0YSkgb3ZlcnJpZGU7
Ci0gICAgdm9pZCBjb21wcmVzc2VkVGV4SW1hZ2UzRFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0
aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMaW50IGJvcmRlciwgR0NH
THNpemVpIGltYWdlU2l6ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0x2b2lkKiBkYXRh
KSBvdmVycmlkZTsKLSAgICB2b2lkIGNvbXByZXNzZWRUZXhTdWJJbWFnZTNEUm9idXN0QU5HTEUo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQg
eW9mZnNldCwgR0NHTGludCB6b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWln
aHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMc2l6ZWkgaW1hZ2VTaXpl
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTHZvaWQqIGRhdGEpIG92ZXJyaWRlOwotCi0g
ICAgdm9pZCB0ZXhJbWFnZTNEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxl
dmVsLCBHQ0dMaW50IGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBo
ZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwg
R0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IHZvaWQgKnBpeGVscykgb3Zl
cnJpZGU7Ci0gICAgdm9pZCB0ZXhTdWJJbWFnZTNEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTGlu
dCB6b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBk
ZXB0aCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
Y29uc3Qgdm9pZCAqcGl4ZWxzKSBvdmVycmlkZTsKICAgICB2b2lkIGdldFF1ZXJ5aXZSb2J1c3RB
TkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
R0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7CiAgICAgdm9pZCBn
ZXRRdWVyeU9iamVjdHVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWludCAqcGFyYW1zKSBv
dmVycmlkZTsKICAgICB2b2lkIGdldEJ1ZmZlclBvaW50ZXJ2Um9idXN0QU5HTEUoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVu
Z3RoLCB2b2lkICoqcGFyYW1zKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdM
RS5jcHAKaW5kZXggZmViMGJlYmVmMzE1ZjBlMTM4YmE5OWQ2MmViNmNmY2VkNTE5MzY3YS4uMTI3
YTNiOGRiYTNjM2Y0NGNkNzY1ZGQ4ZmM3MTFjZGQ4NzhkZTlhNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3ND
b250ZXh0R0xBTkdMRS5jcHAKQEAgLTM2MiwxNSArMzYyLDYyIEBAIHZvaWQgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OmdldFNoYWRlclByZWNpc2lvbkZvcm1hdChHQ0dMZW51bSBzaGFkZXJUeXBl
LCBHQ0dMCiAgICAgZ2w6OkdldFNoYWRlclByZWNpc2lvbkZvcm1hdChzaGFkZXJUeXBlLCBwcmVj
aXNpb25UeXBlLCByYW5nZS5kYXRhLCBwcmVjaXNpb24pOwogfQogCi1ib29sIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjp0ZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwg
R0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdo
dCwgR0NHTGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgY29uc3Qg
dm9pZCogcGl4ZWxzKQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dGV4SW1hZ2UyRChH
Q0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBH
Q0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51
bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBwaXhlbHMp
CiB7Ci0gICAgaWYgKHdpZHRoICYmIGhlaWdodCAmJiAhcGl4ZWxzKSB7Ci0gICAgICAgIHN5bnRo
ZXNpemVHTEVycm9yKElOVkFMSURfVkFMVUUpOwotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
aWYgKCFtX2lzRm9yV2ViR0wyKQorICAgICAgICBpbnRlcm5hbGZvcm1hdCA9IHN0YXRpY19jYXN0
PEV4dGVuc2lvbnNHTEFOR0xFJj4oZ2V0RXh0ZW5zaW9ucygpKS5hZGp1c3RXZWJHTDFUZXh0dXJl
SW50ZXJuYWxGb3JtYXQoaW50ZXJuYWxmb3JtYXQsIGZvcm1hdCwgdHlwZSk7CisgICAgaWYgKCFt
YWtlQ29udGV4dEN1cnJlbnQoKSkKKyAgICAgICAgcmV0dXJuOworICAgIGdsOjpUZXhJbWFnZTJE
Um9idXN0QU5HTEUodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQs
IGJvcmRlciwgZm9ybWF0LCB0eXBlLCBwaXhlbHMuYnVmU2l6ZSwgcGl4ZWxzLmRhdGEpOworICAg
IG1fc3RhdGUudGV4dHVyZVNlZWRDb3VudC5hZGQobV9zdGF0ZS5jdXJyZW50Qm91bmRUZXh0dXJl
KCkpOwogICAgIH0KIAotICAgIHRleEltYWdlMkREaXJlY3QodGFyZ2V0LCBsZXZlbCwgaW50ZXJu
YWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGJvcmRlciwgZm9ybWF0LCB0eXBlLCBwaXhlbHMpOwot
ICAgIHJldHVybiB0cnVlOwordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dGV4SW1hZ2Uy
RChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0
LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dM
ZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KQoreworICAgIHRl
eEltYWdlMkQodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGJv
cmRlciwgZm9ybWF0LCB0eXBlLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBH
Q0dMdm9pZCo+KG9mZnNldCksIDApKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6dGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQg
eG9mZiwgR0NHTGludCB5b2ZmLCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdD
R0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IHBp
eGVscykKK3sKKyAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQorICAgICAgICByZXR1cm47
CisKKyAgICAvLyBGSVhNRTogd2Ugd2lsbCBuZWVkIHRvIGRlYWwgd2l0aCBQaXhlbFN0b3JlIHBh
cmFtcyB3aGVuIGRlYWxpbmcgd2l0aCBpbWFnZSBidWZmZXJzIHRoYXQgZGlmZmVyIGZyb20gdGhl
IHN1YmltYWdlIHNpemUuCisgICAgZ2w6OlRleFN1YkltYWdlMkRSb2J1c3RBTkdMRSh0YXJnZXQs
IGxldmVsLCB4b2ZmLCB5b2ZmLCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIHBpeGVscy5i
dWZTaXplLCBwaXhlbHMuZGF0YSk7CisgICAgbV9zdGF0ZS50ZXh0dXJlU2VlZENvdW50LmFkZCht
X3N0YXRlLmN1cnJlbnRCb3VuZFRleHR1cmUoKSk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OnRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBH
Q0dMaW50IHhvZmYsIEdDR0xpbnQgeW9mZiwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVp
Z2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KQor
eworICAgIHRleFN1YkltYWdlMkQodGFyZ2V0LCBsZXZlbCwgeG9mZiwgeW9mZiwgd2lkdGgsIGhl
aWdodCwgZm9ybWF0LCB0eXBlLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBH
Q0dMdm9pZCo+KG9mZnNldCksIDApKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6Y29tcHJlc3NlZFRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWwsIEdDR0xl
bnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIGlu
dCBib3JkZXIsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBk
YXRhKQoreworICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCisgICAgICAgIHJldHVybjsK
KworICAgIGdsOjpDb21wcmVzc2VkVGV4SW1hZ2UyRFJvYnVzdEFOR0xFKHRhcmdldCwgbGV2ZWws
IGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIsIGltYWdlU2l6ZSwgZGF0YS5i
dWZTaXplLCBkYXRhLmRhdGEpOworICAgIG1fc3RhdGUudGV4dHVyZVNlZWRDb3VudC5hZGQobV9z
dGF0ZS5jdXJyZW50Qm91bmRUZXh0dXJlKCkpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpjb21wcmVzc2VkVGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIGludCBsZXZlbCwg
R0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdo
dCwgaW50IGJvcmRlciwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTGludHB0ciBvZmZzZXQpCit7
CisgICAgY29tcHJlc3NlZFRleEltYWdlMkQodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQs
IHdpZHRoLCBoZWlnaHQsIGJvcmRlciwgaW1hZ2VTaXplLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBHQ0dMdm9pZCo+KG9mZnNldCksIDApKTsKK30KKwordm9pZCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6Y29tcHJlc3NlZFRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0
LCBpbnQgbGV2ZWwsIGludCB4b2Zmc2V0LCBpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBH
Q0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdD
R0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRhKQoreworICAgIGlmICghbWFrZUNvbnRleHRDdXJy
ZW50KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGdsOjpDb21wcmVzc2VkVGV4U3ViSW1hZ2Uy
RFJvYnVzdEFOR0xFKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWln
aHQsIGZvcm1hdCwgaW1hZ2VTaXplLCBkYXRhLmJ1ZlNpemUsIGRhdGEuZGF0YSk7CisgICAgbV9z
dGF0ZS50ZXh0dXJlU2VlZENvdW50LmFkZChtX3N0YXRlLmN1cnJlbnRCb3VuZFRleHR1cmUoKSk7
Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNvbXByZXNzZWRUZXhTdWJJbWFn
ZTJEKEdDR0xlbnVtIHRhcmdldCwgaW50IGxldmVsLCBpbnQgeG9mZnNldCwgaW50IHlvZmZzZXQs
IEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dM
c2l6ZWkgaW1hZ2VTaXplLCBHQ0dMaW50cHRyIG9mZnNldCkKK3sKKyAgICBjb21wcmVzc2VkVGV4
U3ViSW1hZ2UyRCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0
LCBmb3JtYXQsIGltYWdlU2l6ZSwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
R0NHTHZvaWQqPihvZmZzZXQpLCAwKSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OmRlcHRoUmFuZ2UoR0NHTGNsYW1wZiB6TmVhciwgR0NHTGNsYW1wZiB6RmFyKQpAQCAtODM1
LDIwICs4ODIsMjAgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6YnVmZmVyRGF0YShH
Q0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaXB0ciBzaXplLCBHQ0cKICAgICBnbDo6QnVmZmVyRGF0
YSh0YXJnZXQsIHNpemUsIDAsIHVzYWdlKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6YnVmZmVyRGF0YShHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaXB0ciBzaXplLCBjb25z
dCB2b2lkKiBkYXRhLCBHQ0dMZW51bSB1c2FnZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OmJ1ZmZlckRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4g
ZGF0YSwgR0NHTGVudW0gdXNhZ2UpCiB7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgZ2w6OkJ1ZmZlckRhdGEodGFyZ2V0LCBzaXplLCBkYXRh
LCB1c2FnZSk7CisgICAgZ2w6OkJ1ZmZlckRhdGEodGFyZ2V0LCBkYXRhLmJ1ZlNpemUsIGRhdGEu
ZGF0YSwgdXNhZ2UpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpidWZmZXJT
dWJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludHB0ciBvZmZzZXQsIEdDR0xzaXplaXB0ciBz
aXplLCBjb25zdCB2b2lkKiBkYXRhKQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6YnVm
ZmVyU3ViRGF0YShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnRwdHIgb2Zmc2V0LCBHQ0dMU3Bhbjxj
b25zdCBHQ0dMdm9pZD4gZGF0YSkKIHsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBnbDo6QnVmZmVyU3ViRGF0YSh0YXJnZXQsIG9mZnNldCwg
c2l6ZSwgZGF0YSk7CisgICAgZ2w6OkJ1ZmZlclN1YkRhdGEodGFyZ2V0LCBvZmZzZXQsIGRhdGEu
YnVmU2l6ZSwgZGF0YS5kYXRhKTsKIH0KIAogdm9pZCogR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
Om1hcEJ1ZmZlclJhbmdlKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludHB0ciBvZmZzZXQsIEdDR0xz
aXplaXB0ciBsZW5ndGgsIEdDR0xiaXRmaWVsZCBhY2Nlc3MpCkBAIC05MDksNiArOTU2LDU4IEBA
IHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnRleFN0b3JhZ2UzRChHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xzaXplaSBsZXZlbHMsIEdDCiAgICAgbV9zdGF0ZS50ZXh0dXJlU2VlZENvdW50LmFk
ZChtX3N0YXRlLmN1cnJlbnRCb3VuZFRleHR1cmUoKSk7CiB9CiAKK3ZvaWQgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OnRleEltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWwsIGludCBp
bnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6
ZWkgZGVwdGgsIGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NH
TFNwYW48Y29uc3QgR0NHTHZvaWQ+IHBpeGVscykKK3sKKyAgICBpZiAoIW1ha2VDb250ZXh0Q3Vy
cmVudCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBnbDo6VGV4SW1hZ2UzRFJvYnVzdEFOR0xF
KHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgYm9y
ZGVyLCBmb3JtYXQsIHR5cGUsIHBpeGVscy5idWZTaXplLCBwaXhlbHMuZGF0YSk7Cit9CisKK3Zv
aWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnRleEltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBp
bnQgbGV2ZWwsIGludCBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkg
aGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NH
TGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpCit7CisgICAgdGV4SW1hZ2UzRCh0YXJnZXQs
IGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGJvcmRlciwgZm9y
bWF0LCB0eXBlLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMdm9pZCo+
KG9mZnNldCksIDApKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dGV4U3Vi
SW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIGludCBsZXZlbCwgaW50IHhvZmZzZXQsIGludCB5b2Zm
c2V0LCBpbnQgem9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dM
c2l6ZWkgZGVwdGgsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48Y29u
c3QgR0NHTHZvaWQ+IHBpeGVscykKK3sKKyAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQor
ICAgICAgICByZXR1cm47CisKKyAgICBnbDo6VGV4U3ViSW1hZ2UzRFJvYnVzdEFOR0xFKHRhcmdl
dCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHpvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRo
LCBmb3JtYXQsIHR5cGUsIHBpeGVscy5idWZTaXplLCBwaXhlbHMuZGF0YSk7Cit9CisKK3ZvaWQg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnRleFN1YkltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBp
bnQgbGV2ZWwsIGludCB4b2Zmc2V0LCBpbnQgeW9mZnNldCwgaW50IHpvZmZzZXQsIEdDR0xzaXpl
aSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMZW51bSBmb3Jt
YXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KQoreworICAgIHRleFN1YkltYWdl
M0QodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgem9mZnNldCwgd2lkdGgsIGhlaWdo
dCwgZGVwdGgsIGZvcm1hdCwgdHlwZSwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgR0NHTHZvaWQqPihvZmZzZXQpLCAwKSk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OmNvbXByZXNzZWRUZXhJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgaW50IGxldmVsLCBH
Q0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0
LCBHQ0dMc2l6ZWkgZGVwdGgsIGludCBib3JkZXIsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xT
cGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRhKQoreworICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50
KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGdsOjpDb21wcmVzc2VkVGV4SW1hZ2UzRFJvYnVz
dEFOR0xFKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0
aCwgYm9yZGVyLCBpbWFnZVNpemUsIGRhdGEuYnVmU2l6ZSwgZGF0YS5kYXRhKTsKK30KKwordm9p
ZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y29tcHJlc3NlZFRleEltYWdlM0QoR0NHTGVudW0g
dGFyZ2V0LCBpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lk
dGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgaW50IGJvcmRlciwgR0NHTHNp
emVpIGltYWdlU2l6ZSwgR0NHTGludHB0ciBvZmZzZXQpCit7CisgICAgY29tcHJlc3NlZFRleElt
YWdlM0QodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRo
LCBib3JkZXIsIGltYWdlU2l6ZSwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
R0NHTHZvaWQqPihvZmZzZXQpLCAwKSk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OmNvbXByZXNzZWRUZXhTdWJJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgaW50IGxldmVsLCBp
bnQgeG9mZnNldCwgaW50IHlvZmZzZXQsIGludCB6b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdD
R0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMc2l6
ZWkgaW1hZ2VTaXplLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gZGF0YSkKK3sKKyAgICBpZiAo
IW1ha2VDb250ZXh0Q3VycmVudCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBnbDo6Q29tcHJl
c3NlZFRleFN1YkltYWdlM0RSb2J1c3RBTkdMRSh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zm
c2V0LCB6b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgZm9ybWF0LCBpbWFnZVNpemUsIGRh
dGEuYnVmU2l6ZSwgZGF0YS5kYXRhKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6Y29tcHJlc3NlZFRleFN1YkltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWwsIGlu
dCB4b2Zmc2V0LCBpbnQgeW9mZnNldCwgaW50IHpvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NH
THNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXpl
aSBpbWFnZVNpemUsIEdDR0xpbnRwdHIgb2Zmc2V0KQoreworICAgIGNvbXByZXNzZWRUZXhTdWJJ
bWFnZTNEKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHpvZmZzZXQsIHdpZHRoLCBo
ZWlnaHQsIGRlcHRoLCBmb3JtYXQsIGltYWdlU2l6ZSwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgR0NHTHZvaWQqPihvZmZzZXQpLCAwKSk7Cit9CisKIHZvaWQgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OmdldEFjdGl2ZVVuaWZvcm1zKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3Jh
bSwgY29uc3QgVmVjdG9yPEdDR0x1aW50PiYgdW5pZm9ybUluZGljZXMsIEdDR0xlbnVtIHBuYW1l
LCBWZWN0b3I8R0NHTGludD4mIHBhcmFtcykKIHsKICAgICBBU1NFUlQocHJvZ3JhbSk7CkBAIC0x
NTAxLDEyICsxNjAwLDEyIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0x
ZihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMZmxvYXQgdjApCiAgICAgZ2w6OlVuaWZvcm0xZihsb2Nh
dGlvbiwgdjApOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMWZ2
KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBzaXplLCBjb25zdCBHQ0dMZmxvYXQqIGFycmF5
KQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTFmdihHQ0dMaW50IGxvY2F0
aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGFycmF5KQogewogICAgIGlmICghbWFrZUNv
bnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGdsOjpVbmlmb3JtMWZ2KGxv
Y2F0aW9uLCBzaXplLCBhcnJheSk7CisgICAgZ2w6OlVuaWZvcm0xZnYobG9jYXRpb24sIGFycmF5
LmJ1ZlNpemUsIGFycmF5LmRhdGEpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
Ojp1bmlmb3JtMmYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGZsb2F0IHYwLCBHQ0dMZmxvYXQgdjEp
CkBAIC0xNTE3LDEzICsxNjE2LDEzIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVu
aWZvcm0yZihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMZmxvYXQgdjAsIEdDR0xmbG9hCiAgICAgZ2w6
OlVuaWZvcm0yZihsb2NhdGlvbiwgdjAsIHYxKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6dW5pZm9ybTJmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgc2l6ZSwgY29u
c3QgR0NHTGZsb2F0KiBhcnJheSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZv
cm0yZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiBhcnJheSkK
IHsKLSAgICAvLyBGSVhNRTogbGVuZ3RoIG5lZWRzIHRvIGJlIGEgbXVsdGlwbGUgb2YgMi4KKyAg
ICBBU1NFUlQoIShhcnJheS5idWZTaXplICUgMikpOwogICAgIGlmICghbWFrZUNvbnRleHRDdXJy
ZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGdsOjpVbmlmb3JtMmZ2KGxvY2F0aW9uLCBz
aXplLCBhcnJheSk7CisgICAgZ2w6OlVuaWZvcm0yZnYobG9jYXRpb24sIGFycmF5LmJ1ZlNpemUg
LyAyLCBhcnJheS5kYXRhKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5p
Zm9ybTNmKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xmbG9hdCB2MCwgR0NHTGZsb2F0IHYxLCBHQ0dM
ZmxvYXQgdjIpCkBAIC0xNTM0LDEzICsxNjMzLDEzIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OnVuaWZvcm0zZihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMZmxvYXQgdjAsIEdDR0xmbG9h
CiAgICAgZ2w6OlVuaWZvcm0zZihsb2NhdGlvbiwgdjAsIHYxLCB2Mik7CiB9CiAKLXZvaWQgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0zZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTHNp
emVpIHNpemUsIGNvbnN0IEdDR0xmbG9hdCogYXJyYXkpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjp1bmlmb3JtM2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xm
bG9hdD4gYXJyYXkpCiB7Ci0gICAgLy8gRklYTUU6IGxlbmd0aCBuZWVkcyB0byBiZSBhIG11bHRp
cGxlIG9mIDMuCisgICAgQVNTRVJUKCEoYXJyYXkuYnVmU2l6ZSAlIDMpKTsKICAgICBpZiAoIW1h
a2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBnbDo6VW5pZm9ybTNm
dihsb2NhdGlvbiwgc2l6ZSwgYXJyYXkpOworICAgIGdsOjpVbmlmb3JtM2Z2KGxvY2F0aW9uLCBh
cnJheS5idWZTaXplIC8gMywgYXJyYXkuZGF0YSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OnVuaWZvcm00ZihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMZmxvYXQgdjAsIEdDR0xm
bG9hdCB2MSwgR0NHTGZsb2F0IHYyLCBHQ0dMZmxvYXQgdjMpCkBAIC0xNTUxLDEzICsxNjUwLDEz
IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm00ZihHQ0dMaW50IGxvY2F0
aW9uLCBHQ0dMZmxvYXQgdjAsIEdDR0xmbG9hCiAgICAgZ2w6OlVuaWZvcm00Zihsb2NhdGlvbiwg
djAsIHYxLCB2MiwgdjMpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlm
b3JtNGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBzaXplLCBjb25zdCBHQ0dMZmxvYXQq
IGFycmF5KQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTRmdihHQ0dMaW50
IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGFycmF5KQogewotICAgIC8vIEZJ
WE1FOiBsZW5ndGggbmVlZHMgdG8gYmUgYSBtdWx0aXBsZSBvZiA0LgorICAgIEFTU0VSVCghKGFy
cmF5LmJ1ZlNpemUgJSA0KSk7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgZ2w6OlVuaWZvcm00ZnYobG9jYXRpb24sIHNpemUsIGFycmF5KTsK
KyAgICBnbDo6VW5pZm9ybTRmdihsb2NhdGlvbiwgYXJyYXkuYnVmU2l6ZSAvIDQsIGFycmF5LmRh
dGEpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMWkoR0NHTGlu
dCBsb2NhdGlvbiwgR0NHTGludCB2MCkKQEAgLTE1NjgsMTIgKzE2NjcsMTIgQEAgdm9pZCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTFpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xpbnQg
djApCiAgICAgZ2w6OlVuaWZvcm0xaShsb2NhdGlvbiwgdjApOwogfQogCi12b2lkIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMWl2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBz
aXplLCBjb25zdCBHQ0dMaW50KiBhcnJheSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OnVuaWZvcm0xaXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gYXJy
YXkpCiB7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgZ2w6OlVuaWZvcm0xaXYobG9jYXRpb24sIHNpemUsIGFycmF5KTsKKyAgICBnbDo6VW5p
Zm9ybTFpdihsb2NhdGlvbiwgYXJyYXkuYnVmU2l6ZSwgYXJyYXkuZGF0YSk7CiB9CiAKIHZvaWQg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0yaShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dM
aW50IHYwLCBHQ0dMaW50IHYxKQpAQCAtMTU4NCwxMyArMTY4MywxMyBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMmkoR0NHTGludCBsb2NhdGlvbiwgR0NHTGludCB2MCwg
R0NHTGludCB2MQogICAgIGdsOjpVbmlmb3JtMmkobG9jYXRpb24sIHYwLCB2MSk7CiB9CiAKLXZv
aWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0yaXYoR0NHTGludCBsb2NhdGlvbiwg
R0NHTHNpemVpIHNpemUsIGNvbnN0IEdDR0xpbnQqIGFycmF5KQordm9pZCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6dW5pZm9ybTJpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBH
Q0dMaW50PiBhcnJheSkKIHsKLSAgICAvLyBGSVhNRTogbGVuZ3RoIG5lZWRzIHRvIGJlIGEgbXVs
dGlwbGUgb2YgMi4KKyAgICBBU1NFUlQoIShhcnJheS5idWZTaXplICUgMikpOwogICAgIGlmICgh
bWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGdsOjpVbmlmb3Jt
Mml2KGxvY2F0aW9uLCBzaXplLCBhcnJheSk7CisgICAgZ2w6OlVuaWZvcm0yaXYobG9jYXRpb24s
IGFycmF5LmJ1ZlNpemUgLyAyLCBhcnJheS5kYXRhKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6dW5pZm9ybTNpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xpbnQgdjAsIEdDR0xp
bnQgdjEsIEdDR0xpbnQgdjIpCkBAIC0xNjAxLDEzICsxNzAwLDEzIEBAIHZvaWQgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OnVuaWZvcm0zaShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMaW50IHYwLCBH
Q0dMaW50IHYxCiAgICAgZ2w6OlVuaWZvcm0zaShsb2NhdGlvbiwgdjAsIHYxLCB2Mik7CiB9CiAK
LXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0zaXYoR0NHTGludCBsb2NhdGlv
biwgR0NHTHNpemVpIHNpemUsIGNvbnN0IEdDR0xpbnQqIGFycmF5KQordm9pZCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6dW5pZm9ybTNpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25z
dCBHQ0dMaW50PiBhcnJheSkKIHsKLSAgICAvLyBGSVhNRTogbGVuZ3RoIG5lZWRzIHRvIGJlIGEg
bXVsdGlwbGUgb2YgMy4KKyAgICBBU1NFUlQoIShhcnJheS5idWZTaXplICUgMykpOwogICAgIGlm
ICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGdsOjpVbmlm
b3JtM2l2KGxvY2F0aW9uLCBzaXplLCBhcnJheSk7CisgICAgZ2w6OlVuaWZvcm0zaXYobG9jYXRp
b24sIGFycmF5LmJ1ZlNpemUgLyAzLCBhcnJheS5kYXRhKTsKIH0KIAogdm9pZCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6dW5pZm9ybTRpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xpbnQgdjAsIEdD
R0xpbnQgdjEsIEdDR0xpbnQgdjIsIEdDR0xpbnQgdjMpCkBAIC0xNjE4LDQwICsxNzE3LDM5IEBA
IHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm00aShHQ0dMaW50IGxvY2F0aW9u
LCBHQ0dMaW50IHYwLCBHQ0dMaW50IHYxCiAgICAgZ2w6OlVuaWZvcm00aShsb2NhdGlvbiwgdjAs
IHYxLCB2MiwgdjMpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3Jt
NGl2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBzaXplLCBjb25zdCBHQ0dMaW50KiBhcnJh
eSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm00aXYoR0NHTGludCBsb2Nh
dGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gYXJyYXkpCiB7Ci0gICAgLy8gRklYTUU6IGxl
bmd0aCBuZWVkcyB0byBiZSBhIG11bHRpcGxlIG9mIDQuCisgICAgQVNTRVJUKCEoYXJyYXkuYnVm
U2l6ZSAlIDQpKTsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1
cm47CiAKLSAgICBnbDo6VW5pZm9ybTRpdihsb2NhdGlvbiwgc2l6ZSwgYXJyYXkpOworICAgIGds
OjpVbmlmb3JtNGl2KGxvY2F0aW9uLCBhcnJheS5idWZTaXplIC8gNCwgYXJyYXkuZGF0YSk7CiB9
CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXgyZnYoR0NHTGlu
dCBsb2NhdGlvbiwgR0NHTHNpemVpIHNpemUsIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3Qg
R0NHTGZsb2F0KiBhcnJheSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1N
YXRyaXgyZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bh
bjxjb25zdCBHQ0dMZmxvYXQ+IGFycmF5KQogewotICAgIC8vIEZJWE1FOiBsZW5ndGggbmVlZHMg
dG8gYmUgYSBtdWx0aXBsZSBvZiA0LgogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIGdsOjpVbmlmb3JtTWF0cml4MmZ2KGxvY2F0aW9uLCBzaXpl
LCB0cmFuc3Bvc2UsIGFycmF5KTsKKyAgICBnbDo6VW5pZm9ybU1hdHJpeDJmdihsb2NhdGlvbiwg
YXJyYXkuYnVmU2l6ZSAvIDQsIHRyYW5zcG9zZSwgYXJyYXkuZGF0YSk7CiB9CiAKLXZvaWQgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXgzZnYoR0NHTGludCBsb2NhdGlvbiwg
R0NHTHNpemVpIHNpemUsIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiBh
cnJheSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXgzZnYoR0NH
TGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dM
ZmxvYXQ+IGFycmF5KQogewotICAgIC8vIEZJWE1FOiBsZW5ndGggbmVlZHMgdG8gYmUgYSBtdWx0
aXBsZSBvZiA5LgorICAgIEFTU0VSVCghKGFycmF5LmJ1ZlNpemUgJSA5KSk7CiAgICAgaWYgKCFt
YWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZ2w6OlVuaWZvcm1N
YXRyaXgzZnYobG9jYXRpb24sIHNpemUsIHRyYW5zcG9zZSwgYXJyYXkpOworICAgIGdsOjpVbmlm
b3JtTWF0cml4M2Z2KGxvY2F0aW9uLCBhcnJheS5idWZTaXplIC8gOSwgdHJhbnNwb3NlLCBhcnJh
eS5kYXRhKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybU1hdHJp
eDRmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgc2l6ZSwgR0NHTGJvb2xlYW4gdHJhbnNw
b3NlLCBjb25zdCBHQ0dMZmxvYXQqIGFycmF5KQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6dW5pZm9ybU1hdHJpeDRmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bv
c2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gYXJyYXkpCiB7Ci0gICAgLy8gRklYTUU6IGxl
bmd0aCBuZWVkcyB0byBiZSBhIG11bHRpcGxlIG9mIDE2LgorICAgIEFTU0VSVCghKGFycmF5LmJ1
ZlNpemUgJSAxNikpOwogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIGdsOjpVbmlmb3JtTWF0cml4NGZ2KGxvY2F0aW9uLCBzaXplLCB0cmFuc3Bv
c2UsIGFycmF5KTsKKyAgICBnbDo6VW5pZm9ybU1hdHJpeDRmdihsb2NhdGlvbiwgYXJyYXkuYnVm
U2l6ZSAvIDE2LCB0cmFuc3Bvc2UsIGFycmF5LmRhdGEpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjp1c2VQcm9ncmFtKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSkKQEAgLTE2
ODAsMTIgKzE3NzgsMTIgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0
cmliMWYoR0NHTHVpbnQgaW5kZXgsIEdDR0xmbG9hdCB2MCkKICAgICBnbDo6VmVydGV4QXR0cmli
MWYoaW5kZXgsIHYwKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4
QXR0cmliMWZ2KEdDR0x1aW50IGluZGV4LCBjb25zdCBHQ0dMZmxvYXQqIGFycmF5KQordm9pZCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliMWZ2KEdDR0x1aW50IGluZGV4LCBH
Q0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQsIDE+IGFycmF5KQogewogICAgIGlmICghbWFrZUNvbnRl
eHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGdsOjpWZXJ0ZXhBdHRyaWIxZnYo
aW5kZXgsIGFycmF5KTsKKyAgICBnbDo6VmVydGV4QXR0cmliMWZ2KGluZGV4LCBhcnJheS5kYXRh
KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliMmYoR0NH
THVpbnQgaW5kZXgsIEdDR0xmbG9hdCB2MCwgR0NHTGZsb2F0IHYxKQpAQCAtMTY5NiwxMiArMTc5
NCwxMiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2ZXJ0ZXhBdHRyaWIyZihHQ0dM
dWludCBpbmRleCwgR0NHTGZsb2F0IHYwLCBHQ0dMZgogICAgIGdsOjpWZXJ0ZXhBdHRyaWIyZihp
bmRleCwgdjAsIHYxKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4
QXR0cmliMmZ2KEdDR0x1aW50IGluZGV4LCBjb25zdCBHQ0dMZmxvYXQqIGFycmF5KQordm9pZCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliMmZ2KEdDR0x1aW50IGluZGV4LCBH
Q0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQsIDI+IGFycmF5KQogewogICAgIGlmICghbWFrZUNvbnRl
eHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGdsOjpWZXJ0ZXhBdHRyaWIyZnYo
aW5kZXgsIGFycmF5KTsKKyAgICBnbDo6VmVydGV4QXR0cmliMmZ2KGluZGV4LCBhcnJheS5kYXRh
KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliM2YoR0NH
THVpbnQgaW5kZXgsIEdDR0xmbG9hdCB2MCwgR0NHTGZsb2F0IHYxLCBHQ0dMZmxvYXQgdjIpCkBA
IC0xNzEyLDEyICsxODEwLDEyIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZlcnRl
eEF0dHJpYjNmKEdDR0x1aW50IGluZGV4LCBHQ0dMZmxvYXQgdjAsIEdDR0xmCiAgICAgZ2w6OlZl
cnRleEF0dHJpYjNmKGluZGV4LCB2MCwgdjEsIHYyKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6dmVydGV4QXR0cmliM2Z2KEdDR0x1aW50IGluZGV4LCBjb25zdCBHQ0dMZmxv
YXQqIGFycmF5KQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliM2Z2
KEdDR0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQsIDM+IGFycmF5KQogewog
ICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGds
OjpWZXJ0ZXhBdHRyaWIzZnYoaW5kZXgsIGFycmF5KTsKKyAgICBnbDo6VmVydGV4QXR0cmliM2Z2
KGluZGV4LCBhcnJheS5kYXRhKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
dmVydGV4QXR0cmliNGYoR0NHTHVpbnQgaW5kZXgsIEdDR0xmbG9hdCB2MCwgR0NHTGZsb2F0IHYx
LCBHQ0dMZmxvYXQgdjIsIEdDR0xmbG9hdCB2MykKQEAgLTE3MjgsMTIgKzE4MjYsMTIgQEAgdm9p
ZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliNGYoR0NHTHVpbnQgaW5kZXgs
IEdDR0xmbG9hdCB2MCwgR0NHTGYKICAgICBnbDo6VmVydGV4QXR0cmliNGYoaW5kZXgsIHYwLCB2
MSwgdjIsIHYzKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0
cmliNGZ2KEdDR0x1aW50IGluZGV4LCBjb25zdCBHQ0dMZmxvYXQqIGFycmF5KQordm9pZCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliNGZ2KEdDR0x1aW50IGluZGV4LCBHQ0dM
U3Bhbjxjb25zdCBHQ0dMZmxvYXQsIDQ+IGFycmF5KQogewogICAgIGlmICghbWFrZUNvbnRleHRD
dXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGdsOjpWZXJ0ZXhBdHRyaWI0ZnYoaW5k
ZXgsIGFycmF5KTsKKyAgICBnbDo6VmVydGV4QXR0cmliNGZ2KGluZGV4LCBhcnJheS5kYXRhKTsK
IH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliUG9pbnRlcihH
Q0dMdWludCBpbmRleCwgR0NHTGludCBzaXplLCBHQ0dMZW51bSB0eXBlLCBHQ0dMYm9vbGVhbiBu
b3JtYWxpemVkLCBHQ0dMc2l6ZWkgc3RyaWRlLCBHQ0dMaW50cHRyIG9mZnNldCkKQEAgLTIwMjks
MTYgKzIxMjcsNiBAQCBHQ0dMc2l6ZWlwdHIgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFZl
cnRleEF0dHJpYk9mZnNldChHQ0dMdWludCBpbmRleCwgR0NHTAogICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxHQ0dMc2l6ZWlwdHI+KHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KHBvaW50ZXIpKTsK
IH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dGV4U3ViSW1hZ2UyRChHQ0dMZW51
bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZiwgR0NHTGludCB5b2ZmLCBHQ0dM
c2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0g
dHlwZSwgY29uc3Qgdm9pZCogcGl4ZWxzKQotewotICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50
KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIC8vIEZJWE1FOiB3ZSB3aWxsIG5lZWQgdG8gZGVh
bCB3aXRoIFBpeGVsU3RvcmUgcGFyYW1zIHdoZW4gZGVhbGluZyB3aXRoIGltYWdlIGJ1ZmZlcnMg
dGhhdCBkaWZmZXIgZnJvbSB0aGUgc3ViaW1hZ2Ugc2l6ZS4KLSAgICBnbDo6VGV4U3ViSW1hZ2Uy
RCh0YXJnZXQsIGxldmVsLCB4b2ZmLCB5b2ZmLCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUs
IHBpeGVscyk7Ci0gICAgbV9zdGF0ZS50ZXh0dXJlU2VlZENvdW50LmFkZChtX3N0YXRlLmN1cnJl
bnRCb3VuZFRleHR1cmUoKSk7Ci19Ci0KIFBsYXRmb3JtR0xPYmplY3QgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmNyZWF0ZUJ1ZmZlcigpCiB7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQo
KSkKQEAgLTIyMDMsMTcgKzIyOTEsNiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpk
aXNwYXRjaENvbnRleHRDaGFuZ2VkTm90aWZpY2F0aW9uKCkKICAgICAgICAgY2xpZW50LT5kaXNw
YXRjaENvbnRleHRDaGFuZ2VkTm90aWZpY2F0aW9uKCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OnRleEltYWdlMkREaXJlY3QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxl
dmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkg
aGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBj
b25zdCB2b2lkKiBwaXhlbHMpCi17Ci0gICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgaWYgKCFtX2lzRm9yV2ViR0wyICYmIG1fZXh0ZW5zaW9ucykK
LSAgICAgICAgaW50ZXJuYWxmb3JtYXQgPSBtX2V4dGVuc2lvbnMtPmFkanVzdFdlYkdMMVRleHR1
cmVJbnRlcm5hbEZvcm1hdChpbnRlcm5hbGZvcm1hdCwgZm9ybWF0LCB0eXBlKTsKLSAgICBnbDo6
VGV4SW1hZ2UyRCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwg
Ym9yZGVyLCBmb3JtYXQsIHR5cGUsIHBpeGVscyk7Ci0gICAgbV9zdGF0ZS50ZXh0dXJlU2VlZENv
dW50LmFkZChtX3N0YXRlLmN1cnJlbnRCb3VuZFRleHR1cmUoKSk7Ci19Ci0KIHZvaWQgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmRyYXdBcnJheXNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NH
TGludCBmaXJzdCwgR0NHTHNpemVpIGNvdW50LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KQogewogICAg
IGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCkBAIC0yNDM2LDIwICsyNTEzLDIwIEBAIHZvaWQg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmZyYW1lYnVmZmVyVGV4dHVyZUxheWVyKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGVudW0KICAgICBnbDo6RnJhbWVidWZmZXJUZXh0dXJlTGF5ZXIodGFyZ2V0
LCBhdHRhY2htZW50LCB0ZXh0dXJlLCBsZXZlbCwgbGF5ZXIpOwogfQogCi12b2lkIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjppbnZhbGlkYXRlRnJhbWVidWZmZXIoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMc2l6ZWkgbnVtQXR0YWNobWVudHMsIGNvbnN0IEdDR0xlbnVtKiBhdHRhY2htZW50cykKK3Zv
aWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmludmFsaWRhdGVGcmFtZWJ1ZmZlcihHQ0dMZW51
bSB0YXJnZXQsIEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVtPiBhdHRhY2htZW50cykKIHsKICAgICBp
ZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBnbDo6SW52
YWxpZGF0ZUZyYW1lYnVmZmVyKHRhcmdldCwgbnVtQXR0YWNobWVudHMsIGF0dGFjaG1lbnRzKTsK
KyAgICBnbDo6SW52YWxpZGF0ZUZyYW1lYnVmZmVyKHRhcmdldCwgYXR0YWNobWVudHMuYnVmU2l6
ZSwgYXR0YWNobWVudHMuZGF0YSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OmludmFsaWRhdGVTdWJGcmFtZWJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaSBudW1B
dHRhY2htZW50cywgY29uc3QgR0NHTGVudW0qIGF0dGFjaG1lbnRzLCBHQ0dMaW50IHgsIEdDR0xp
bnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KQordm9pZCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6aW52YWxpZGF0ZVN1YkZyYW1lYnVmZmVyKEdDR0xlbnVtIHRhcmdldCwg
R0NHTFNwYW48Y29uc3QgR0NHTGVudW0+IGF0dGFjaG1lbnRzLCBHQ0dMaW50IHgsIEdDR0xpbnQg
eSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KQogewogICAgIGlmICghbWFrZUNv
bnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGdsOjpJbnZhbGlkYXRlU3Vi
RnJhbWVidWZmZXIodGFyZ2V0LCBudW1BdHRhY2htZW50cywgYXR0YWNobWVudHMsIHgsIHksIHdp
ZHRoLCBoZWlnaHQpOworICAgIGdsOjpJbnZhbGlkYXRlU3ViRnJhbWVidWZmZXIodGFyZ2V0LCBh
dHRhY2htZW50cy5idWZTaXplLCBhdHRhY2htZW50cy5kYXRhLCB4LCB5LCB3aWR0aCwgaGVpZ2h0
KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZEJ1ZmZlcihHQ0dMZW51
bSBzcmMpCkBAIC0yNTE3LDg0ICsyNTk0LDkzIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OnVuaWZvcm00dWkoR0NHTGludCBsb2NhdGlvbiwgR0NHTHVpbnQgdjAsIEdDR0x1aW50CiAg
ICAgZ2w6OlVuaWZvcm00dWkobG9jYXRpb24sIHYwLCB2MSwgdjIsIHYzKTsKIH0KIAotdm9pZCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTF1aXYoR0NHTGludCBsb2NhdGlvbiwgY29u
c3QgR0NHTHVpbnQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3Ro
KQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTF1aXYoR0NHTGludCBsb2Nh
dGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTHVpbnQ+IGRhdGEpCiB7CiAgICAgaWYgKCFtYWtlQ29u
dGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZ2w6OlVuaWZvcm0xdWl2KGxv
Y2F0aW9uLCBzcmNMZW5ndGgsIGRhdGEgKyBzcmNPZmZzZXQpOworICAgIGdsOjpVbmlmb3JtMXVp
dihsb2NhdGlvbiwgZGF0YS5idWZTaXplLCBkYXRhLmRhdGEpOwogfQogCi12b2lkIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMnVpdihHQ0dMaW50IGxvY2F0aW9uLCBjb25zdCBHQ0dM
dWludCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCit2b2lk
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMnVpdihHQ0dMaW50IGxvY2F0aW9uLCBH
Q0dMU3Bhbjxjb25zdCBHQ0dMdWludD4gZGF0YSkKIHsKKyAgICBBU1NFUlQoIShkYXRhLmJ1ZlNp
emUgJSAyKSk7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgZ2w6OlVuaWZvcm0ydWl2KGxvY2F0aW9uLCBzcmNMZW5ndGgsIGRhdGEgKyBzcmNP
ZmZzZXQpOworICAgIGdsOjpVbmlmb3JtMnVpdihsb2NhdGlvbiwgZGF0YS5idWZTaXplIC8gMiwg
ZGF0YS5kYXRhKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTN1
aXYoR0NHTGludCBsb2NhdGlvbiwgY29uc3QgR0NHTHVpbnQqIGRhdGEsIEdDR0x1aW50IHNyY09m
ZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
dW5pZm9ybTN1aXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTHVpbnQ+IGRh
dGEpCiB7CisgICAgQVNTRVJUKCEoZGF0YS5idWZTaXplICUgMykpOwogICAgIGlmICghbWFrZUNv
bnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGdsOjpVbmlmb3JtM3Vpdihs
b2NhdGlvbiwgc3JjTGVuZ3RoLCBkYXRhICsgc3JjT2Zmc2V0KTsKKyAgICBnbDo6VW5pZm9ybTN1
aXYobG9jYXRpb24sIGRhdGEuYnVmU2l6ZSAvIDMsIGRhdGEuZGF0YSk7CiB9CiAKLXZvaWQgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm00dWl2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0
IEdDR0x1aW50KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkK
K3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm00dWl2KEdDR0xpbnQgbG9jYXRp
b24sIEdDR0xTcGFuPGNvbnN0IEdDR0x1aW50PiBkYXRhKQogeworICAgIEFTU0VSVCghKGRhdGEu
YnVmU2l6ZSAlIDQpKTsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBnbDo6VW5pZm9ybTR1aXYobG9jYXRpb24sIHNyY0xlbmd0aCwgZGF0YSAr
IHNyY09mZnNldCk7CisgICAgZ2w6OlVuaWZvcm00dWl2KGxvY2F0aW9uLCBkYXRhLmJ1ZlNpemUg
LyA0LCBkYXRhLmRhdGEpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlm
b3JtTWF0cml4MngzZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBj
b25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVu
Z3RoKQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybU1hdHJpeDJ4M2Z2KEdD
R0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NH
TGZsb2F0PiBkYXRhKQogeworICAgIEFTU0VSVCghKGRhdGEuYnVmU2l6ZSAlIDYpKTsKICAgICBp
ZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBnbDo6VW5p
Zm9ybU1hdHJpeDJ4M2Z2KGxvY2F0aW9uLCBzcmNMZW5ndGgsIHRyYW5zcG9zZSwgZGF0YSArIHNy
Y09mZnNldCk7CisgICAgZ2w6OlVuaWZvcm1NYXRyaXgyeDNmdihsb2NhdGlvbiwgZGF0YS5idWZT
aXplIC8gNiwgdHJhbnNwb3NlLCBkYXRhLmRhdGEpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4M3gyZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xl
YW4gdHJhbnNwb3NlLCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwg
R0NHTHVpbnQgc3JjTGVuZ3RoKQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9y
bU1hdHJpeDN4MmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NH
TFNwYW48Y29uc3QgR0NHTGZsb2F0PiBkYXRhKQogeworICAgIEFTU0VSVCghKGRhdGEuYnVmU2l6
ZSAlIDYpKTsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47
CiAKLSAgICBnbDo6VW5pZm9ybU1hdHJpeDN4MmZ2KGxvY2F0aW9uLCBzcmNMZW5ndGgsIHRyYW5z
cG9zZSwgZGF0YSArIHNyY09mZnNldCk7CisgICAgZ2w6OlVuaWZvcm1NYXRyaXgzeDJmdihsb2Nh
dGlvbiwgZGF0YS5idWZTaXplIC8gNiwgdHJhbnNwb3NlLCBkYXRhLmRhdGEpOwogfQogCi12b2lk
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4Mng0ZnYoR0NHTGludCBsb2Nh
dGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1
aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQordm9pZCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6dW5pZm9ybU1hdHJpeDJ4NGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFu
IHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiBkYXRhKQogeworICAgIEFTU0VS
VCghKGRhdGEuYnVmU2l6ZSAlIDgpKTsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBnbDo6VW5pZm9ybU1hdHJpeDJ4NGZ2KGxvY2F0aW9uLCBz
cmNMZW5ndGgsIHRyYW5zcG9zZSwgZGF0YSArIHNyY09mZnNldCk7CisgICAgZ2w6OlVuaWZvcm1N
YXRyaXgyeDRmdihsb2NhdGlvbiwgZGF0YS5idWZTaXplIC8gOCwgdHJhbnNwb3NlLCBkYXRhLmRh
dGEpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4NHgy
ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHQ0dMZmxv
YXQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQordm9pZCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybU1hdHJpeDR4MmZ2KEdDR0xpbnQgbG9jYXRp
b24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiBkYXRh
KQogeworICAgIEFTU0VSVCghKGRhdGEuYnVmU2l6ZSAlIDgpKTsKICAgICBpZiAoIW1ha2VDb250
ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBnbDo6VW5pZm9ybU1hdHJpeDR4
MmZ2KGxvY2F0aW9uLCBzcmNMZW5ndGgsIHRyYW5zcG9zZSwgZGF0YSArIHNyY09mZnNldCk7Cisg
ICAgZ2w6OlVuaWZvcm1NYXRyaXg0eDJmdihsb2NhdGlvbiwgZGF0YS5idWZTaXplIC8gOCwgdHJh
bnNwb3NlLCBkYXRhLmRhdGEpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1
bmlmb3JtTWF0cml4M3g0ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3Nl
LCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3Jj
TGVuZ3RoKQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybU1hdHJpeDN4NGZ2
KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3Qg
R0NHTGZsb2F0PiBkYXRhKQogeworICAgIEFTU0VSVCghKGRhdGEuYnVmU2l6ZSAlIDEyKSk7CiAg
ICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZ2w6
OlVuaWZvcm1NYXRyaXgzeDRmdihsb2NhdGlvbiwgc3JjTGVuZ3RoLCB0cmFuc3Bvc2UsIGRhdGEg
KyBzcmNPZmZzZXQpOworICAgIGdsOjpVbmlmb3JtTWF0cml4M3g0ZnYobG9jYXRpb24sIGRhdGEu
YnVmU2l6ZSAvIDEyLCB0cmFuc3Bvc2UsIGRhdGEuZGF0YSk7CiB9CiAKLXZvaWQgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXg0eDNmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dM
Ym9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zm
c2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1
bmlmb3JtTWF0cml4NHgzZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3Nl
LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEpCiB7CisgICAgQVNTRVJUKCEoZGF0YS5i
dWZTaXplICUgMTIpKTsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBnbDo6VW5pZm9ybU1hdHJpeDR4M2Z2KGxvY2F0aW9uLCBzcmNMZW5ndGgs
IHRyYW5zcG9zZSwgZGF0YSArIHNyY09mZnNldCk7CisgICAgZ2w6OlVuaWZvcm1NYXRyaXg0eDNm
dihsb2NhdGlvbiwgZGF0YS5idWZTaXplIC8gMTIsIHRyYW5zcG9zZSwgZGF0YS5kYXRhKTsKIH0K
IAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliSTRpKEdDR0x1aW50
IGluZGV4LCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTGludCB6LCBHQ0dMaW50IHcpCkBAIC0y
NjA1LDEyICsyNjkxLDEyIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZlcnRleEF0
dHJpYkk0aShHQ0dMdWludCBpbmRleCwgR0NHTGludCB4LCBHQ0dMaW50CiAgICAgZ2w6OlZlcnRl
eEF0dHJpYkk0aShpbmRleCwgeCwgeSwgeiwgdyk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OnZlcnRleEF0dHJpYkk0aXYoR0NHTHVpbnQgaW5kZXgsIGNvbnN0IEdDR0xpbnQq
IHZhbHVlcykKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYkk0aXYo
R0NHTHVpbnQgaW5kZXgsIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQsIDQ+IHZhbHVlcykKIHsKICAg
ICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBnbDo6
VmVydGV4QXR0cmliSTRpdihpbmRleCwgdmFsdWVzKTsKKyAgICBnbDo6VmVydGV4QXR0cmliSTRp
dihpbmRleCwgdmFsdWVzLmRhdGEpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
Ojp2ZXJ0ZXhBdHRyaWJJNHVpKEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCB4LCBHQ0dMdWludCB5
LCBHQ0dMdWludCB6LCBHQ0dMdWludCB3KQpAQCAtMjYyMSwxMiArMjcwNywxMiBAQCB2b2lkIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2ZXJ0ZXhBdHRyaWJJNHVpKEdDR0x1aW50IGluZGV4LCBH
Q0dMdWludCB4LCBHQ0dMdQogICAgIGdsOjpWZXJ0ZXhBdHRyaWJJNHVpKGluZGV4LCB4LCB5LCB6
LCB3KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliSTR1
aXYoR0NHTHVpbnQgaW5kZXgsIGNvbnN0IEdDR0x1aW50KiB2YWx1ZXMpCit2b2lkIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjp2ZXJ0ZXhBdHRyaWJJNHVpdihHQ0dMdWludCBpbmRleCwgR0NHTFNw
YW48Y29uc3QgR0NHTHVpbnQsIDQ+IHZhbHVlcykKIHsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3Vy
cmVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBnbDo6VmVydGV4QXR0cmliSTR1aXYoaW5k
ZXgsIHZhbHVlcyk7CisgICAgZ2w6OlZlcnRleEF0dHJpYkk0dWl2KGluZGV4LCB2YWx1ZXMuZGF0
YSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmRyYXdSYW5nZUVsZW1lbnRz
KEdDR0xlbnVtIG1vZGUsIEdDR0x1aW50IHN0YXJ0LCBHQ0dMdWludCBlbmQsIEdDR0xzaXplaSBj
b3VudCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpCkBAIC0yNjM3LDM2ICsyNzIz
LDM2IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmRyYXdSYW5nZUVsZW1lbnRzKEdD
R0xlbnVtIG1vZGUsIEdDR0x1aW50IHN0YXJ0LCBHCiAgICAgZ2w6OkRyYXdSYW5nZUVsZW1lbnRz
KG1vZGUsIHN0YXJ0LCBlbmQsIGNvdW50LCB0eXBlLCByZWludGVycHJldF9jYXN0PHZvaWQqPihv
ZmZzZXQpKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6ZHJhd0J1ZmZlcnMo
R0NHTHNpemVpIG4sIGNvbnN0IEdDR0xlbnVtKiBidWZzKQordm9pZCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6ZHJhd0J1ZmZlcnMoR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+IGJ1ZnMpCiB7CiAg
ICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZ2w6
OkRyYXdCdWZmZXJzKG4sIGJ1ZnMpOworICAgIGdsOjpEcmF3QnVmZmVycyhidWZzLmJ1ZlNpemUs
IGJ1ZnMuZGF0YSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNsZWFyQnVm
ZmVyaXYoR0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50IGRyYXdidWZmZXIsIGNvbnN0IEdDR0xpbnQq
IHZhbHVlcywgR0NHTHVpbnQgc3JjT2Zmc2V0KQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6Y2xlYXJCdWZmZXJpdihHQ0dMZW51bSBidWZmZXIsIEdDR0xpbnQgZHJhd2J1ZmZlciwgR0NH
TFNwYW48Y29uc3QgR0NHTGludD4gdmFsdWVzKQogewogICAgIGlmICghbWFrZUNvbnRleHRDdXJy
ZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGdsOjpDbGVhckJ1ZmZlcml2KGJ1ZmZlciwg
ZHJhd2J1ZmZlciwgdmFsdWVzICsgc3JjT2Zmc2V0KTsKKyAgICBnbDo6Q2xlYXJCdWZmZXJpdihi
dWZmZXIsIGRyYXdidWZmZXIsIHZhbHVlcy5kYXRhKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6Y2xlYXJCdWZmZXJ1aXYoR0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50IGRyYXdi
dWZmZXIsIGNvbnN0IEdDR0x1aW50KiB2YWx1ZXMsIEdDR0x1aW50IHNyY09mZnNldCkKK3ZvaWQg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNsZWFyQnVmZmVydWl2KEdDR0xlbnVtIGJ1ZmZlciwg
R0NHTGludCBkcmF3YnVmZmVyLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdWludD4gdmFsdWVzKQogewog
ICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGds
OjpDbGVhckJ1ZmZlcnVpdihidWZmZXIsIGRyYXdidWZmZXIsIHZhbHVlcyArIHNyY09mZnNldCk7
CisgICAgZ2w6OkNsZWFyQnVmZmVydWl2KGJ1ZmZlciwgZHJhd2J1ZmZlciwgdmFsdWVzLmRhdGEp
OwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjbGVhckJ1ZmZlcmZ2KEdDR0xl
bnVtIGJ1ZmZlciwgR0NHTGludCBkcmF3YnVmZmVyLCBjb25zdCBHQ0dMZmxvYXQqIHZhbHVlcywg
R0NHTHVpbnQgc3JjT2Zmc2V0KQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y2xlYXJC
dWZmZXJmdihHQ0dMZW51bSBidWZmZXIsIEdDR0xpbnQgZHJhd2J1ZmZlciwgR0NHTFNwYW48Y29u
c3QgR0NHTGZsb2F0PiB2YWx1ZXMpCiB7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgZ2w6OkNsZWFyQnVmZmVyZnYoYnVmZmVyLCBkcmF3YnVm
ZmVyLCB2YWx1ZXMgKyBzcmNPZmZzZXQpOworICAgIGdsOjpDbGVhckJ1ZmZlcmZ2KGJ1ZmZlciwg
ZHJhd2J1ZmZlciwgdmFsdWVzLmRhdGEpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpjbGVhckJ1ZmZlcmZpKEdDR0xlbnVtIGJ1ZmZlciwgR0NHTGludCBkcmF3YnVmZmVyLCBH
Q0dMZmxvYXQgZGVwdGgsIEdDR0xpbnQgc3RlbmNpbCkKQEAgLTI4NTQsOTQgKzI5NDAsNiBAQCBW
ZWN0b3I8R0NHTHVpbnQ+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRVbmlmb3JtSW5kaWNl
cyhQbGF0Zm9ybUdMT2JqZWN0IHBybwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXZvaWQgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0xZnYoR0NHTGludCBsb2NhdGlvbiwgY29uc3Qg
R0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkK
LXsKLSAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBnbDo6VW5pZm9ybTFmdihsb2NhdGlvbiwgc3JjTGVuZ3RoLCBkYXRhICsgc3JjT2Zmc2V0KTsK
LX0KLQotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTJmdihHQ0dMaW50IGxv
Y2F0aW9uLCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVp
bnQgc3JjTGVuZ3RoKQotewotICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAg
IHJldHVybjsKLQotICAgIGdsOjpVbmlmb3JtMmZ2KGxvY2F0aW9uLCBzcmNMZW5ndGgsIGRhdGEg
KyBzcmNPZmZzZXQpOwotfQotCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3Jt
M2Z2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3Jj
T2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCi17Ci0gICAgaWYgKCFtYWtlQ29udGV4dEN1cnJl
bnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OlVuaWZvcm0zZnYobG9jYXRpb24sIHNy
Y0xlbmd0aCwgZGF0YSArIHNyY09mZnNldCk7Ci19Ci0KLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OnVuaWZvcm00ZnYoR0NHTGludCBsb2NhdGlvbiwgY29uc3QgR0NHTGZsb2F0KiBkYXRh
LCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKLXsKLSAgICBpZiAoIW1h
a2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6VW5pZm9ybTRm
dihsb2NhdGlvbiwgc3JjTGVuZ3RoLCBkYXRhICsgc3JjT2Zmc2V0KTsKLX0KLQotdm9pZCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTFpdihHQ0dMaW50IGxvY2F0aW9uLCBjb25zdCBH
Q0dMaW50KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKLXsK
LSAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBn
bDo6VW5pZm9ybTFpdihsb2NhdGlvbiwgc3JjTGVuZ3RoLCBkYXRhICsgc3JjT2Zmc2V0KTsKLX0K
LQotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTJpdihHQ0dMaW50IGxvY2F0
aW9uLCBjb25zdCBHQ0dMaW50KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNy
Y0xlbmd0aCkKLXsKLSAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBnbDo6VW5pZm9ybTJpdihsb2NhdGlvbiwgc3JjTGVuZ3RoLCBkYXRhICsgc3Jj
T2Zmc2V0KTsKLX0KLQotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTNpdihH
Q0dMaW50IGxvY2F0aW9uLCBjb25zdCBHQ0dMaW50KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQs
IEdDR0x1aW50IHNyY0xlbmd0aCkKLXsKLSAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6VW5pZm9ybTNpdihsb2NhdGlvbiwgc3JjTGVuZ3Ro
LCBkYXRhICsgc3JjT2Zmc2V0KTsKLX0KLQotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
dW5pZm9ybTRpdihHQ0dMaW50IGxvY2F0aW9uLCBjb25zdCBHQ0dMaW50KiBkYXRhLCBHQ0dMdWlu
dCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKLXsKLSAgICBpZiAoIW1ha2VDb250ZXh0
Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6VW5pZm9ybTRpdihsb2NhdGlv
biwgc3JjTGVuZ3RoLCBkYXRhICsgc3JjT2Zmc2V0KTsKLX0KLQotdm9pZCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6dW5pZm9ybU1hdHJpeDJmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVh
biB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBH
Q0dMdWludCBzcmNMZW5ndGgpCi17Ci0gICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OlVuaWZvcm1NYXRyaXgyZnYobG9jYXRpb24sIHNyY0xl
bmd0aCwgdHJhbnNwb3NlLCBkYXRhICsgc3JjT2Zmc2V0KTsKLX0KLQotdm9pZCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6dW5pZm9ybU1hdHJpeDNmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9v
bGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0
LCBHQ0dMdWludCBzcmNMZW5ndGgpCi17Ci0gICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OlVuaWZvcm1NYXRyaXgzZnYobG9jYXRpb24sIHNy
Y0xlbmd0aCwgdHJhbnNwb3NlLCBkYXRhICsgc3JjT2Zmc2V0KTsKLX0KLQotdm9pZCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybU1hdHJpeDRmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dM
Ym9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zm
c2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCi17Ci0gICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQo
KSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OlVuaWZvcm1NYXRyaXg0ZnYobG9jYXRpb24s
IHNyY0xlbmd0aCwgdHJhbnNwb3NlLCBkYXRhICsgc3JjT2Zmc2V0KTsKLX0KLQogdm9pZCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0QWN0aXZlVW5pZm9ybUJsb2NraXYoR0NHTHVpbnQgcHJv
Z3JhbSwgR0NHTHVpbnQgdW5pZm9ybUJsb2NrSW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3Bh
bjxHQ0dMaW50PiBwYXJhbXMpCiB7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0dyYXBoaWNzQ29u
dGV4dEdMQ1ZBTkdMRS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9H
cmFwaGljc0NvbnRleHRHTENWQU5HTEUuY3BwCmluZGV4IGY5YmZjYTNjNDhjZTI4ZWFiMTk0NGE0
ZjVlODUzMGE0MjVmODYyZmUuLjAzNDgwNmE4YmNkYTIyOWJjNmE4MDg3OTM0YTEwMzAzMjQ2MWYx
MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0dyYXBo
aWNzQ29udGV4dEdMQ1ZBTkdMRS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY3YvR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFLmNwcApAQCAtMjM1LDE4ICsyMzUsMTMg
QEAgc3RydWN0IEdMZmxvYXRDb2xvcnMgewogfTsKIAogc3RydWN0IFlDYkNyTWF0cml4IHsKLSAg
ICB1bmlvbiB7CiAgICAgICAgIEdMZmxvYXQgcm93c1s0XVs0XTsKLSAgICAgICAgR0xmbG9hdCBk
YXRhWzE2XTsKLSAgICB9OwogCiAgICAgY29uc3RleHByIFlDYkNyTWF0cml4KFBpeGVsUmFuZ2Us
IEdMZmxvYXQgY2JDb2VmZmljaWVudCwgR0xmbG9hdCBjckNvZWZmaWNpZW50KTsKIAotICAgIG9w
ZXJhdG9yIFZlY3RvcjxHTGZsb2F0PigpIGNvbnN0CisgICAgb3BlcmF0b3IgR0NHTFNwYW48Y29u
c3QgR0xmbG9hdCwgMTY+KCkgY29uc3QKICAgICB7Ci0gICAgICAgIFZlY3RvcjxHTGZsb2F0PiB2
ZWN0b3I7Ci0gICAgICAgIHZlY3Rvci5hcHBlbmQoZGF0YSwgMTYpOwotICAgICAgICByZXR1cm4g
dmVjdG9yOworICAgICAgICByZXR1cm4gbWFrZUdDR0xTcGFuPDE2Pigmcm93c1swXVswXSk7CiAg
ICAgfQogCiAgICAgY29uc3RleHByIEdMZmxvYXRDb2xvciBvcGVyYXRvciooY29uc3QgR0xmbG9h
dENvbG9yJikgY29uc3Q7CkBAIC0zMTgsMTAgKzMxMywxMCBAQCBjb25zdGV4cHIgR0xmbG9hdENv
bG9yIFlDYkNyTWF0cml4OjpvcGVyYXRvciooY29uc3QgR0xmbG9hdENvbG9yJiBjb2xvcikgY29u
c3QKICAgICApOwogfQogCi1zdGF0aWMgY29uc3QgVmVjdG9yPEdMZmxvYXQ+IFlDYkNyVG9SR0JN
YXRyaXhGb3JSYW5nZUFuZFRyYW5zZmVyRnVuY3Rpb24oUGl4ZWxSYW5nZSByYW5nZSwgVHJhbnNm
ZXJGdW5jdGlvbkNWIHRyYW5zZmVyRnVuY3Rpb24pCitzdGF0aWMgR0NHTFNwYW48Y29uc3QgR0xm
bG9hdCwgMTY+IFlDYkNyVG9SR0JNYXRyaXhGb3JSYW5nZUFuZFRyYW5zZmVyRnVuY3Rpb24oUGl4
ZWxSYW5nZSByYW5nZSwgVHJhbnNmZXJGdW5jdGlvbkNWIHRyYW5zZmVyRnVuY3Rpb24pCiB7CiAg
ICAgdXNpbmcgTWFwS2V5ID0gc3RkOjpwYWlyPFBpeGVsUmFuZ2UsIFRyYW5zZmVyRnVuY3Rpb25D
Vj47Ci0gICAgdXNpbmcgTWF0cml4TWFwID0gU3RkTWFwPE1hcEtleSwgVmVjdG9yPEdMZmxvYXQ+
PjsKKyAgICB1c2luZyBNYXRyaXhNYXAgPSBTdGRNYXA8TWFwS2V5LCBjb25zdCBZQ2JDck1hdHJp
eCY+OwogCiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPE1hdHJpeE1hcD4gbWF0cmljZXM7CiAg
ICAgc3RhdGljIGRpc3BhdGNoX29uY2VfdCBvbmNlVG9rZW47CkBAIC01MjYsNyArNTIxLDcgQEAg
Ym9vbCBHcmFwaGljc0NvbnRleHRHTENWQU5HTEU6OmluaXRpYWxpemVVVkNvbnRleHRPYmplY3Rz
KCkKICAgICBmbG9hdCB2ZXJ0aWNlc1sxMl0gPSB7IC0xLCAtMSwgMSwgLTEsIDEsIDEsIDEsIDEs
IC0xLCAxLCAtMSwgLTEgfTsKIAogICAgIG1fY29udGV4dC0+YmluZEJ1ZmZlcihHcmFwaGljc0Nv
bnRleHRHTDo6QVJSQVlfQlVGRkVSLCBtX3l1dlZlcnRleEJ1ZmZlcik7Ci0gICAgbV9jb250ZXh0
LT5idWZmZXJEYXRhKEdyYXBoaWNzQ29udGV4dEdMOjpBUlJBWV9CVUZGRVIsIHNpemVvZih2ZXJ0
aWNlcyksIHZlcnRpY2VzLCBHcmFwaGljc0NvbnRleHRHTDo6U1RBVElDX0RSQVcpOworICAgIG1f
Y29udGV4dC0+YnVmZmVyRGF0YShHcmFwaGljc0NvbnRleHRHTDo6QVJSQVlfQlVGRkVSLCBHQ0dM
U3Bhbjxjb25zdCBHQ0dMdm9pZD4odmVydGljZXMsIHNpemVvZih2ZXJ0aWNlcykpLCBHcmFwaGlj
c0NvbnRleHRHTDo6U1RBVElDX0RSQVcpOwogICAgIG1fY29udGV4dC0+ZW5hYmxlVmVydGV4QXR0
cmliQXJyYXkobV95dXZQb3NpdGlvbkF0dHJpYnV0ZUxvY2F0aW9uKTsKICAgICBtX2NvbnRleHQt
PnZlcnRleEF0dHJpYlBvaW50ZXIobV95dXZQb3NpdGlvbkF0dHJpYnV0ZUxvY2F0aW9uLCAyLCBH
cmFwaGljc0NvbnRleHRHTDo6RkxPQVQsIGZhbHNlLCAwLCAwKTsKIApAQCAtNjI1LDcgKzYyMCw3
IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFOjpjb3B5UGl4ZWxCdWZmZXJUb1RleHR1
cmUoQ1ZQaXhlbEJ1ZmZlclJlZiBpbWFnZSwKICAgICBtX2NvbnRleHQtPnRleFBhcmFtZXRlcmko
R3JhcGhpY3NDb250ZXh0R0w6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4dEdMOjpURVhUVVJF
X01JTl9GSUxURVIsIEdyYXBoaWNzQ29udGV4dEdMOjpMSU5FQVIpOwogICAgIG1fY29udGV4dC0+
dGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250
ZXh0R0w6OlRFWFRVUkVfV1JBUF9TLCBHcmFwaGljc0NvbnRleHRHTDo6Q0xBTVBfVE9fRURHRSk7
CiAgICAgbV9jb250ZXh0LT50ZXhQYXJhbWV0ZXJpKEdyYXBoaWNzQ29udGV4dEdMOjpURVhUVVJF
XzJELCBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV9XUkFQX1QsIEdyYXBoaWNzQ29udGV4dEdM
OjpDTEFNUF9UT19FREdFKTsKLSAgICBtX2NvbnRleHQtPnRleEltYWdlMkREaXJlY3QoR3JhcGhp
Y3NDb250ZXh0R0w6OlRFWFRVUkVfMkQsIGxldmVsLCBpbnRlcm5hbEZvcm1hdCwgd2lkdGgsIGhl
aWdodCwgMCwgZm9ybWF0LCB0eXBlLCBudWxscHRyKTsKKyAgICBnbDo6VGV4SW1hZ2UyRChHTF9U
RVhUVVJFXzJELCBsZXZlbCwgaW50ZXJuYWxGb3JtYXQsIHdpZHRoLCBoZWlnaHQsIDAsIGZvcm1h
dCwgdHlwZSwgbnVsbHB0cik7CiAKICAgICBtX2NvbnRleHQtPmZyYW1lYnVmZmVyVGV4dHVyZTJE
KEdyYXBoaWNzQ29udGV4dEdMOjpGUkFNRUJVRkZFUiwgR3JhcGhpY3NDb250ZXh0R0w6OkNPTE9S
X0FUVEFDSE1FTlQwLCBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV8yRCwgb3V0cHV0VGV4dHVy
ZSwgbGV2ZWwpOwogICAgIEdDR0xlbnVtIHN0YXR1cyA9IG1fY29udGV4dC0+Y2hlY2tGcmFtZWJ1
ZmZlclN0YXR1cyhHcmFwaGljc0NvbnRleHRHTDo6RlJBTUVCVUZGRVIpOwpAQCAtNjgyLDggKzY3
Nyw4IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFOjpjb3B5UGl4ZWxCdWZmZXJUb1Rl
eHR1cmUoQ1ZQaXhlbEJ1ZmZlclJlZiBpbWFnZSwKIAogICAgIGF1dG8gcmFuZ2UgPSBwaXhlbFJh
bmdlRnJvbVBpeGVsRm9ybWF0KHBpeGVsRm9ybWF0KTsKICAgICBhdXRvIHRyYW5zZmVyRnVuY3Rp
b24gPSB0cmFuc2ZlckZ1bmN0aW9uRnJvbVN0cmluZygoQ0ZTdHJpbmdSZWYpQ1ZCdWZmZXJHZXRB
dHRhY2htZW50KGltYWdlLCBrQ1ZJbWFnZUJ1ZmZlcllDYkNyTWF0cml4S2V5LCBuaWwpKTsKLSAg
ICBhdXRvJiBjb2xvck1hdHJpeCA9IFlDYkNyVG9SR0JNYXRyaXhGb3JSYW5nZUFuZFRyYW5zZmVy
RnVuY3Rpb24ocmFuZ2UsIHRyYW5zZmVyRnVuY3Rpb24pOwotICAgIG1fY29udGV4dC0+dW5pZm9y
bU1hdHJpeDRmdihtX2NvbG9yTWF0cml4VW5pZm9ybUxvY2F0aW9uLCAxLCBHTF9GQUxTRSwgY29s
b3JNYXRyaXguZGF0YSgpKTsKKyAgICBhdXRvIGNvbG9yTWF0cml4ID0gWUNiQ3JUb1JHQk1hdHJp
eEZvclJhbmdlQW5kVHJhbnNmZXJGdW5jdGlvbihyYW5nZSwgdHJhbnNmZXJGdW5jdGlvbik7Cisg
ICAgbV9jb250ZXh0LT51bmlmb3JtTWF0cml4NGZ2KG1fY29sb3JNYXRyaXhVbmlmb3JtTG9jYXRp
b24sIEdMX0ZBTFNFLCBjb2xvck1hdHJpeCk7CiAKICAgICAvLyBEbyB0aGUgYWN0dWFsIGRyYXdp
bmcuCiAgICAgbV9jb250ZXh0LT5kcmF3QXJyYXlzKEdyYXBoaWNzQ29udGV4dEdMOjpUUklBTkdM
RVMsIDAsIDYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmNwcAppbmRleCAxNzc4NmE2NGJhNGUx
ZGEwMDk2NGVhZTk5N2QyOTI3NjRkYWQxODk2Li43ZWM4MWNmNGFlNTc3MmNhZTk3Mjg4YmM4MGUz
NjU2NDZkNjI3YzdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmNwcApAQCAtMjA4LDE0ICsy
MDgsMTQgQEAgYm9vbCBFeHRlbnNpb25zR0xPcGVuR0w6OnN1cHBvcnRzRXh0ZW5zaW9uKGNvbnN0
IFN0cmluZyYgbmFtZSkKICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5z
KG5hbWUpOwogfQogCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTDo6ZHJhd0J1ZmZlcnNFWFQoR0NH
THNpemVpIG4sIGNvbnN0IEdDR0xlbnVtKiBidWZzKQordm9pZCBFeHRlbnNpb25zR0xPcGVuR0w6
OmRyYXdCdWZmZXJzRVhUKEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVtPiBidWZzKQogewogICAgIGlm
ICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgLy8gIEZJWE1FOiBpbXBsZW1lbnQgc3VwcG9ydCBmb3Igb3RoZXIgcGxhdGZvcm1zLgogI2lm
IFBMQVRGT1JNKEdUSykKLSAgICA6OmdsRHJhd0J1ZmZlcnMobiwgYnVmcyk7CisgICAgOjpnbERy
YXdCdWZmZXJzKGJ1ZnMuYnVmU2l6ZSwgYnVmcy5kYXRhKTsKICNlbHNlCiAgICAgVU5VU0VEX1BB
UkFNKG4pOwogICAgIFVOVVNFRF9QQVJBTShidWZzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuaApp
bmRleCBkM2JlOGNjMjhjMTdjMmRmNWQzYjQ4NjZiYjNjNWY5NDRjNDU1ZjIxLi40OTYyODljZWEw
ZTZhMDlkNmRiNzMxZjg2OGI1NDk5M2E0NDQ0OWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5o
CkBAIC01MCw3ICs1MCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGluc2VydEV2ZW50TWFya2VyRVhU
KGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwogICAgIHZvaWQgcHVzaEdyb3VwTWFya2VyRVhUKGNv
bnN0IFN0cmluZyYpIG92ZXJyaWRlOwogICAgIHZvaWQgcG9wR3JvdXBNYXJrZXJFWFQodm9pZCkg
b3ZlcnJpZGU7Ci0gICAgdm9pZCBkcmF3QnVmZmVyc0VYVChHQ0dMc2l6ZWksIGNvbnN0IEdDR0xl
bnVtKikgb3ZlcnJpZGU7CisgICAgdm9pZCBkcmF3QnVmZmVyc0VYVChHQ0dMU3Bhbjxjb25zdCBH
Q0dMZW51bT4pIG92ZXJyaWRlOwogCiAgICAgdm9pZCBkcmF3QXJyYXlzSW5zdGFuY2VkKEdDR0xl
bnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xzaXplaSBjb3VudCwgR0NHTHNpemVpIHByaW1j
b3VudCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkcmF3RWxlbWVudHNJbnN0YW5jZWQoR0NHTGVudW0g
bW9kZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBsb25nIGxvbmcgb2Zmc2V0LCBH
Q0dMc2l6ZWkgcHJpbWNvdW50KSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5H
TENvbW1vbi5jcHAKaW5kZXggNjg2ZjJkNTExNDhlZjliMTJmZWYxMGIzYzJhYzcwYjJhMzVkMjE1
Ny4uNDNiNTE2MWZiYTc3OGY4ZmI0Mzg0YjFiYzJkYjM4ZWNmNmM0ODNlYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5H
TENvbW1vbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Blbmds
L0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5jcHAKQEAgLTI1OSwxMSArMjU5LDYgQEAgdm9pZCBF
eHRlbnNpb25zR0xPcGVuR0xDb21tb246OnJlYWRQaXhlbHNSb2J1c3RBTkdMRShpbnQsIGludCwg
R0NHTHNpemVpLCBHQ0dMc2kKICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lO
VkFMSURfT1BFUkFUSU9OKTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OnRl
eEltYWdlMkRSb2J1c3RBTkdMRShHQ0dMZW51bSwgaW50LCBpbnQsIEdDR0xzaXplaSwgR0NHTHNp
emVpLCBpbnQsIEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTHNpemVpLCBjb25zdCB2b2lkICopCi17
Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7
Ci19Ci0KIHZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjp0ZXhQYXJhbWV0ZXJmdlJvYnVz
dEFOR0xFKEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTHNpemVpLCBjb25zdCBHQ0dMZmxvYXQgKikK
IHsKICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9O
KTsKQEAgLTI3NCw0MiArMjY5LDYgQEAgdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OnRl
eFBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0cKICAgICBtX2Nv
bnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKIH0KIAotdm9p
ZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OnRleFN1YkltYWdlMkRSb2J1c3RBTkdMRShHQ0dM
ZW51bSwgaW50LCBpbnQsIGludCwgR0NHTHNpemVpLCBHQ0dMc2l6ZWksIEdDR0xlbnVtLCBHQ0dM
ZW51bSwgR0NHTHNpemVpLCBjb25zdCB2b2lkICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVz
aXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dM
T3BlbkdMQ29tbW9uOjpjb21wcmVzc2VkVGV4SW1hZ2UyRFJvYnVzdEFOR0xFKEdDR0xlbnVtLCBp
bnQsIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSwgaW50LCBHQ0dMc2l6ZWksIEdDR0xz
aXplaSwgY29uc3Qgdm9pZCopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihH
TF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9u
Ojpjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRFJvYnVzdEFOR0xFKEdDR0xlbnVtLCBpbnQsIGludCwg
aW50LCBHQ0dMc2l6ZWksIEdDR0xzaXplaSwgR0NHTGVudW0sIEdDR0xzaXplaSwgR0NHTHNpemVp
LCBjb25zdCB2b2lkKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lO
VkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmNv
bXByZXNzZWRUZXhJbWFnZTNEUm9idXN0QU5HTEUoR0NHTGVudW0sIGludCwgR0NHTGVudW0sIEdD
R0xzaXplaSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWksIGludCwgR0NHTHNpemVpLCBHQ0dMc2l6ZWks
IGNvbnN0IHZvaWQqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5W
QUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Y29t
cHJlc3NlZFRleFN1YkltYWdlM0RSb2J1c3RBTkdMRShHQ0dMZW51bSwgaW50LCBpbnQsIGludCwg
aW50LCBHQ0dMc2l6ZWksIEdDR0xzaXplaSwgR0NHTHNpemVpLCBHQ0dMZW51bSwgR0NHTHNpemVp
LCBHQ0dMc2l6ZWksIGNvbnN0IHZvaWQqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdM
RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi0KLXZvaWQgRXh0ZW5zaW9uc0dMT3Bl
bkdMQ29tbW9uOjp0ZXhJbWFnZTNEUm9idXN0QU5HTEUoR0NHTGVudW0sIGludCwgaW50LCBHQ0dM
c2l6ZWksIEdDR0xzaXplaSwgR0NHTHNpemVpLCBpbnQsIEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NH
THNpemVpLCBjb25zdCB2b2lkICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJv
cihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29t
bW9uOjp0ZXhTdWJJbWFnZTNEUm9idXN0QU5HTEUoR0NHTGVudW0sIGludCwgaW50LCBpbnQsIGlu
dCwgR0NHTHNpemVpLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSwgR0NHTGVudW0sIEdDR0xlbnVtLCBH
Q0dMc2l6ZWksIGNvbnN0IHZvaWQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVy
cm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQogdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xD
b21tb246OmdldFF1ZXJ5aXZSb2J1c3RBTkdMRShHQ0dMZW51bSwgR0NHTGVudW0sIEdDR0xzaXpl
aSwgR0NHTHNpemVpICosIEdDR0xpbnQgKikKIHsKICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVH
TEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xD
b21tb24uaAppbmRleCA5N2VlZGZiNzQ4NWM4MzJmNzkzYzhjZmYwZmExN2ZiZmZiZTY1ODhkLi5i
ZmU0NTIxNTQzZmY0YjI3MjEzN2YzNDRjZWU0YTIyZDhmYjI4YzY0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29t
bW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVu
c2lvbnNHTE9wZW5HTENvbW1vbi5oCkBAIC01MCw3ICs1MCw3IEBAIHB1YmxpYzoKICAgICBHQ0dM
Ym9vbGVhbiBpc1ZlcnRleEFycmF5T0VTKFBsYXRmb3JtR0xPYmplY3QpIG92ZXJyaWRlID0gMDsK
ICAgICB2b2lkIGJpbmRWZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybUdMT2JqZWN0KSBvdmVycmlkZSA9
IDA7CiAKLSAgICB2b2lkIGRyYXdCdWZmZXJzRVhUKEdDR0xzaXplaSwgY29uc3QgR0NHTGVudW0q
KSBvdmVycmlkZSA9IDA7CisgICAgdm9pZCBkcmF3QnVmZmVyc0VYVChHQ0dMU3Bhbjxjb25zdCBH
Q0dMZW51bT4pIG92ZXJyaWRlID0gMDsKIAogICAgIFN0cmluZyBnZXRUcmFuc2xhdGVkU2hhZGVy
U291cmNlQU5HTEUoUGxhdGZvcm1HTE9iamVjdCkgb3ZlcnJpZGU7CiAKQEAgLTcwLDE3ICs3MCw4
IEBAIHB1YmxpYzoKIAogICAgIC8vIEdMX0FOR0xFX3JvYnVzdF9jbGllbnRfbWVtb3J5CiAgICAg
dm9pZCByZWFkUGl4ZWxzUm9idXN0QU5HTEUoaW50IHgsIGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgs
IEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNp
emVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMc2l6ZWkgKmNvbHVtbnMsIEdDR0xz
aXplaSAqcm93cywgdm9pZCAqcGl4ZWxzKSBvdmVycmlkZTsKLSAgICB2b2lkIHRleEltYWdlMkRS
b2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIGludCBsZXZlbCwgaW50IGludGVybmFsZm9ybWF0
LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIGludCBib3JkZXIsIEdDR0xlbnVt
IGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IHZvaWQgKnBp
eGVscykgb3ZlcnJpZGU7CiAgICAgdm9pZCB0ZXhQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dM
ZmxvYXQgKnBhcmFtcykgb3ZlcnJpZGU7CiAgICAgdm9pZCB0ZXhQYXJhbWV0ZXJpdlJvYnVzdEFO
R0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBj
b25zdCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgdGV4U3ViSW1hZ2UyRFJv
YnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgaW50IGxldmVsLCBpbnQgeG9mZnNldCwgaW50IHlv
ZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0
LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3Qgdm9pZCAqcGl4ZWxzKSBv
dmVycmlkZTsKLSAgICB2b2lkIGNvbXByZXNzZWRUZXhJbWFnZTJEUm9idXN0QU5HTEUoR0NHTGVu
dW0gdGFyZ2V0LCBpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkg
d2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIGludCBib3JkZXIsIEdDR0xzaXplaSBpbWFnZVNpemUs
IEdDR0xzaXplaSBidWZTaXplLCBjb25zdCB2b2lkKiBkYXRhKSBvdmVycmlkZTsKLSAgICB2b2lk
IGNvbXByZXNzZWRUZXhTdWJJbWFnZTJEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBpbnQg
bGV2ZWwsIGludCB4b2Zmc2V0LCBpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6
ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xzaXpl
aSBidWZTaXplLCBjb25zdCB2b2lkKiBkYXRhKSBvdmVycmlkZTsKLSAgICB2b2lkIGNvbXByZXNz
ZWRUZXhJbWFnZTNEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWwsIEdDR0xl
bnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdD
R0xzaXplaSBkZXB0aCwgaW50IGJvcmRlciwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIGNvbnN0IHZvaWQqIGRhdGEpIG92ZXJyaWRlOwotICAgIHZvaWQgY29tcHJlc3Nl
ZFRleFN1YkltYWdlM0RSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIGludCBsZXZlbCwgaW50
IHhvZmZzZXQsIGludCB5b2Zmc2V0LCBpbnQgem9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dM
c2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTHNpemVp
IGltYWdlU2l6ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IHZvaWQqIGRhdGEpIG92ZXJyaWRl
OwotCi0gICAgdm9pZCB0ZXhJbWFnZTNEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBpbnQg
bGV2ZWwsIGludCBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVp
Z2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVu
dW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IHZvaWQgKnBpeGVscykgb3ZlcnJpZGU7
Ci0gICAgdm9pZCB0ZXhTdWJJbWFnZTNEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBpbnQg
bGV2ZWwsIGludCB4b2Zmc2V0LCBpbnQgeW9mZnNldCwgaW50IHpvZmZzZXQsIEdDR0xzaXplaSB3
aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMZW51bSBmb3JtYXQs
IEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCB2b2lkICpwaXhlbHMpIG92
ZXJyaWRlOwogICAgIHZvaWQgZ2V0UXVlcnlpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NH
TGludCAqcGFyYW1zKSBvdmVycmlkZTsKICAgICB2b2lkIGdldFF1ZXJ5T2JqZWN0dWl2Um9idXN0
QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NH
THNpemVpICpsZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMpIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0
QnVmZmVyUG9pbnRlcnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1l
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIHZvaWQgKipwYXJhbXMpIG92
ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5jcHAKaW5kZXggZDI4ZjRhMDMxZWJk
YzQ4Mzg3NWQzOTg0ODdkNTc4NzQ4ZmRlNDdlNy4uMzZjM2VmMzhmOThiOTlhZjAxMTUwNjk5MTQy
N2JhY2VmY2JiOGFjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuY3BwCkBAIC0xODAs
NyArMTgwLDcgQEAgdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xFUzo6YmluZFZlcnRleEFycmF5T0VT
KFBsYXRmb3JtR0xPYmplY3QgYXJyYXkpCiAgICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdM
RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwogfQogCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5H
TEVTOjpkcmF3QnVmZmVyc0VYVChHQ0dMc2l6ZWkgLyogbiAqLywgY29uc3QgR0NHTGVudW0qIC8q
IGJ1ZnMgKi8pCit2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTEVTOjpkcmF3QnVmZmVyc0VYVChHQ0dM
U3Bhbjxjb25zdCBHQ0dMZW51bT4gLyogYnVmcyAqLykKIHsKICAgICAvLyBGSVhNRTogaW1wbGVt
ZW50IHRoZSBzdXBwb3J0LgogICAgIG5vdEltcGxlbWVudGVkKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xP
cGVuR0xFUy5oCmluZGV4IGM3NDgyNWM4MWVhZDBhNzQ2MGFlYTFkYWYxYzlhZTE4MzcwMjkzOTYu
LjAxN2E0NWI3Mzk4ZDA5OTJlZDE0NzY3ZjA3NjdlMDRiNDY0MTYyODMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xF
Uy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNp
b25zR0xPcGVuR0xFUy5oCkBAIC04NSw3ICs4NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRlbGV0
ZVZlcnRleEFycmF5T0VTKFBsYXRmb3JtR0xPYmplY3QpIG92ZXJyaWRlOwogICAgIEdDR0xib29s
ZWFuIGlzVmVydGV4QXJyYXlPRVMoUGxhdGZvcm1HTE9iamVjdCkgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBiaW5kVmVydGV4QXJyYXlPRVMoUGxhdGZvcm1HTE9iamVjdCkgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCBkcmF3QnVmZmVyc0VYVChHQ0dMc2l6ZWksIGNvbnN0IEdDR0xlbnVtKikgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBkcmF3QnVmZmVyc0VYVChHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4pIG92ZXJyaWRl
OwogCiAgICAgdm9pZCBkcmF3QXJyYXlzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQg
Zmlyc3QsIEdDR0xzaXplaSBjb3VudCwgR0NHTHNpemVpIHByaW1jb3VudCkgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBkcmF3RWxlbWVudHNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNv
dW50LCBHQ0dMZW51bSB0eXBlLCBsb25nIGxvbmcgb2Zmc2V0LCBHQ0dMc2l6ZWkgcHJpbWNvdW50
KSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuY3BwCmluZGV4IGYx
NWI3ZjI5NWE5NTFiMmQ4OTRlYzBmYTkxOTU0ZTk2ZjQ3YTRjMTMuLmExMzAyZDE0NDM0MmRjOTUw
ZDc2NzgyOTFmMDg4MjhlOGY1ZjU2MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMLmNwcApAQCAtNzYsOCArNzYsOCBAQCBib29sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp0
ZXhJbWFnZTJEUmVzb3VyY2VTYWZlKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZQogewogICAg
IEFTU0VSVCh1bnBhY2tBbGlnbm1lbnQgPT0gMSB8fCB1bnBhY2tBbGlnbm1lbnQgPT0gMiB8fCB1
bnBhY2tBbGlnbm1lbnQgPT0gNCB8fCB1bnBhY2tBbGlnbm1lbnQgPT0gOCk7CiAgICAgVW5pcXVl
QXJyYXk8dW5zaWduZWQgY2hhcj4gemVybzsKKyAgICB1bnNpZ25lZCBzaXplID0gMDsKICAgICBp
ZiAod2lkdGggPiAwICYmIGhlaWdodCA+IDApIHsKLSAgICAgICAgdW5zaWduZWQgc2l6ZTsKICAg
ICAgICAgUGl4ZWxTdG9yZVBhcmFtcyBwYXJhbXM7CiAgICAgICAgIHBhcmFtcy5hbGlnbm1lbnQg
PSB1bnBhY2tBbGlnbm1lbnQ7CiAgICAgICAgIEdDR0xlbnVtIGVycm9yID0gY29tcHV0ZUltYWdl
U2l6ZUluQnl0ZXMoZm9ybWF0LCB0eXBlLCB3aWR0aCwgaGVpZ2h0LCAxLCBwYXJhbXMsICZzaXpl
LCBudWxscHRyLCBudWxscHRyKTsKQEAgLTkyLDcgKzkyLDggQEAgYm9vbCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6dGV4SW1hZ2UyRFJlc291cmNlU2FmZShHQ0dMZW51bSB0YXJnZXQsIEdDR0xp
bnQgbGUKICAgICAgICAgfQogICAgICAgICBtZW1zZXQoemVyby5nZXQoKSwgMCwgc2l6ZSk7CiAg
ICAgfQotICAgIHJldHVybiB0ZXhJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0
LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIsIGZvcm1hdCwgdHlwZSwgemVyby5nZXQoKSk7CisgICAg
dGV4SW1hZ2UyRCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwg
Ym9yZGVyLCBmb3JtYXQsIHR5cGUsIG1ha2VHQ0dMU3Bhbih6ZXJvLmdldCgpLCBzaXplKSk7Cisg
ICAgcmV0dXJuIHRydWU7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0wuaAppbmRleCAwOTkyNjc4YjhkYzFlMTgzZDk4MjU5Yjc3MzE1YzM2MTIxNzAxMzBmLi5jMjU1
YjBjMTJmNGZjYmZhNDZkYjAyZDU1YzgwYjRjYjc3ZDE3YjcwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0wuaApAQCAtMTE5LDkgKzExOSw2IEBAIHB1YmxpYzoKICAgICAvLyBXaXRo
IG11bHRpc2FtcGxpbmcgb24sIGJsaXQgZnJvbSBtdWx0aXNhbXBsZUZCTyB0byByZWd1bGFyIEZC
Ty4KICAgICB2b2lkIHByZXBhcmVUZXh0dXJlKCk7CiAKLSAgICAvLyBFcXVpdmFsZW50IHRvIDo6
Z2xUZXhJbWFnZTJEKCkuIEFsbG93cyBwaXhlbHM9PTAgd2l0aCBubyBhbGxvY2F0aW9uLgotICAg
IHZvaWQgdGV4SW1hZ2UyRERpcmVjdChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdD
R0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQs
IEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIGNvbnN0IHZv
aWQqIHBpeGVscyk7Ci0KICAgICAvLyBHZXQgYW4gYXR0cmlidXRlIGxvY2F0aW9uIHdpdGhvdXQg
Y2hlY2tpbmcgdGhlIG5hbWUgLT4gbWFuZ2xlZG5hbWUgbWFwcGluZy4KICAgICBpbnQgZ2V0QXR0
cmliTG9jYXRpb25EaXJlY3QoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBjb25zdCBTdHJpbmcm
IG5hbWUpOwogCkBAIC0xMjksNiArMTI2LDkgQEAgcHVibGljOgogICAgIHZvaWQgY29tcGlsZVNo
YWRlckRpcmVjdChQbGF0Zm9ybUdMT2JqZWN0KTsKIAogI2lmICFVU0UoQU5HTEUpCisgICAgLy8g
RXF1aXZhbGVudCB0byA6OmdsVGV4SW1hZ2UyRCgpLiBBbGxvd3MgcGl4ZWxzPT0wIHdpdGggbm8g
YWxsb2NhdGlvbi4KKyAgICB2b2lkIHRleEltYWdlMkREaXJlY3QoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBH
Q0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51
bSB0eXBlLCBjb25zdCB2b2lkKiBwaXhlbHMpOworCiAgICAgLy8gSGVscGVyIHRvIHRleEltYWdl
MkQgd2l0aCBwaXhlbD09MCBjYXNlOiBwaXhlbHMgYXJlIGluaXRpYWxpemVkIHRvIDAuCiAgICAg
Ly8gUmV0dXJuIHRydWUgaWYgbm8gR0wgZXJyb3IgaXMgc3ludGhlc2l6ZWQuCiAgICAgLy8gQnkg
ZGVmYXVsdCwgYWxpZ25tZW50IGlzIDQsIHRoZSBPcGVuR0wgZGVmYXVsdCBzZXR0aW5nLgpAQCAt
MTU1LDggKzE1NSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGJsZW5kRnVuY1NlcGFyYXRlKEdDR0xl
bnVtIHNyY1JHQiwgR0NHTGVudW0gZHN0UkdCLCBHQ0dMZW51bSBzcmNBbHBoYSwgR0NHTGVudW0g
ZHN0QWxwaGEpIGZpbmFsOwogCiAgICAgdm9pZCBidWZmZXJEYXRhKEdDR0xlbnVtIHRhcmdldCwg
R0NHTHNpemVpcHRyIHNpemUsIEdDR0xlbnVtIHVzYWdlKSBmaW5hbDsKLSAgICB2b2lkIGJ1ZmZl
ckRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWlwdHIgc2l6ZSwgY29uc3Qgdm9pZCogZGF0
YSwgR0NHTGVudW0gdXNhZ2UpIGZpbmFsOwotICAgIHZvaWQgYnVmZmVyU3ViRGF0YShHQ0dMZW51
bSB0YXJnZXQsIEdDR0xpbnRwdHIgb2Zmc2V0LCBHQ0dMc2l6ZWlwdHIgc2l6ZSwgY29uc3Qgdm9p
ZCogZGF0YSkgZmluYWw7CisgICAgdm9pZCBidWZmZXJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NH
TFNwYW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEsIEdDR0xlbnVtIHVzYWdlKSBmaW5hbDsKKyAgICB2
b2lkIGJ1ZmZlclN1YkRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50cHRyIG9mZnNldCwgR0NH
TFNwYW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEpIGZpbmFsOwogCiAgICAgR0NHTGVudW0gY2hlY2tG
cmFtZWJ1ZmZlclN0YXR1cyhHQ0dMZW51bSB0YXJnZXQpIGZpbmFsOwogICAgIHZvaWQgY2xlYXIo
R0NHTGJpdGZpZWxkIG1hc2spIGZpbmFsOwpAQCAtMTY2LDEwICsxNjYsNiBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBjb2xvck1hc2soR0NHTGJvb2xlYW4gcmVkLCBHQ0dMYm9vbGVhbiBncmVlbiwgR0NH
TGJvb2xlYW4gYmx1ZSwgR0NHTGJvb2xlYW4gYWxwaGEpIGZpbmFsOwogICAgIHZvaWQgY29tcGls
ZVNoYWRlcihQbGF0Zm9ybUdMT2JqZWN0KSBmaW5hbDsKIAotI2lmICFVU0UoQU5HTEUpCi0gICAg
dm9pZCBjb21wcmVzc2VkVGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWws
IEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWln
aHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBjb25zdCB2b2lkKiBkYXRh
KTsKLSAgICB2b2lkIGNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NH
TGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3
aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMc2l6ZWkgaW1hZ2VT
aXplLCBjb25zdCB2b2lkKiBkYXRhKTsKLSNlbmRpZgogICAgIHZvaWQgY29weVRleEltYWdlMkQo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwg
R0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwg
R0NHTGludCBib3JkZXIpIGZpbmFsOwogICAgIHZvaWQgY29weVRleFN1YkltYWdlMkQoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNl
dCwgR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdo
dCkgZmluYWw7CiAgICAgdm9pZCBjdWxsRmFjZShHQ0dMZW51bSBtb2RlKSBmaW5hbDsKQEAgLTI1
MywzMCArMjQ5LDM3IEBAIHB1YmxpYzoKICAgICB2b2lkIHN0ZW5jaWxPcChHQ0dMZW51bSBmYWls
LCBHQ0dMZW51bSB6ZmFpbCwgR0NHTGVudW0genBhc3MpIGZpbmFsOwogICAgIHZvaWQgc3RlbmNp
bE9wU2VwYXJhdGUoR0NHTGVudW0gZmFjZSwgR0NHTGVudW0gZmFpbCwgR0NHTGVudW0gemZhaWws
IEdDR0xlbnVtIHpwYXNzKSBmaW5hbDsKIAotICAgIGJvb2wgdGV4SW1hZ2UyRChHQ0dMZW51bSB0
YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkg
d2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQs
IEdDR0xlbnVtIHR5cGUsIGNvbnN0IHZvaWQqIHBpeGVscykgZmluYWw7CisgICAgdm9pZCB0ZXhJ
bWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxm
b3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIs
IEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+
IHBpeGVscykgZmluYWw7CisgICAgdm9pZCB0ZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NH
TGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NH
THNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0g
dHlwZSwgR0NHTGludHB0ciBvZmZzZXQpIGZpbmFsOworICAgIHZvaWQgdGV4U3ViSW1hZ2UyRChH
Q0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5
b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1h
dCwgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IHBpeGVscykgZmluYWw7
CisgICAgdm9pZCB0ZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwg
R0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNp
emVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9m
ZnNldCkgZmluYWw7CisgICAgdm9pZCBjb21wcmVzc2VkVGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lk
dGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMc2l6ZWkgaW1hZ2VTaXpl
LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gZGF0YSkgZmluYWw7CisgICAgdm9pZCBjb21wcmVz
c2VkVGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGlu
dGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQg
Ym9yZGVyLCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMaW50cHRyIG9mZnNldCkgZmluYWw7IAor
ICAgIHZvaWQgY29tcHJlc3NlZFRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50
IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRo
LCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFnZVNpemUs
IEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRhKSBmaW5hbDsKKyAgICB2b2lkIGNvbXByZXNz
ZWRUZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4
b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdo
dCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMaW50cHRyIG9mZnNl
dCkgZmluYWw7CisKICAgICB2b2lkIHRleFBhcmFtZXRlcmYoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTGZsb2F0IHBhcmFtKSBmaW5hbDsKICAgICB2b2lkIHRleFBhcmFtZXRl
cmkoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCBwYXJhbSkgZmluYWw7
Ci0gICAgdm9pZCB0ZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwg
R0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNp
emVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBjb25zdCB2b2lkKiBw
aXhlbHMpIGZpbmFsOwogCiAgICAgdm9pZCB1bmlmb3JtMWYoR0NHTGludCBsb2NhdGlvbiwgR0NH
TGZsb2F0IHgpIGZpbmFsOwotICAgIHZvaWQgdW5pZm9ybTFmdihHQ0dMaW50IGxvY2F0aW9uLCBH
Q0dMc2l6ZWksIGNvbnN0IEdDR0xmbG9hdCogdikgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtMWZ2
KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gdikgZmluYWw7CiAg
ICAgdm9pZCB1bmlmb3JtMWkoR0NHTGludCBsb2NhdGlvbiwgR0NHTGludCB4KSBmaW5hbDsKLSAg
ICB2b2lkIHVuaWZvcm0xaXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpLCBjb25zdCBHQ0dM
aW50KiB2KSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm0xaXYoR0NHTGludCBsb2NhdGlvbiwgR0NH
TFNwYW48Y29uc3QgR0NHTGludD4gdikgZmluYWw7CiAgICAgdm9pZCB1bmlmb3JtMmYoR0NHTGlu
dCBsb2NhdGlvbiwgR0NHTGZsb2F0IHgsIEdDR0xmbG9hdCB5KSBmaW5hbDsKLSAgICB2b2lkIHVu
aWZvcm0yZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpLCBjb25zdCBHQ0dMZmxvYXQqIHYp
IGZpbmFsOworICAgIHZvaWQgdW5pZm9ybTJmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxj
b25zdCBHQ0dMZmxvYXQ+IHYpIGZpbmFsOwogICAgIHZvaWQgdW5pZm9ybTJpKEdDR0xpbnQgbG9j
YXRpb24sIEdDR0xpbnQgeCwgR0NHTGludCB5KSBmaW5hbDsKLSAgICB2b2lkIHVuaWZvcm0yaXYo
R0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpLCBjb25zdCBHQ0dMaW50KiB2KSBmaW5hbDsKKyAg
ICB2b2lkIHVuaWZvcm0yaXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGlu
dD4gdikgZmluYWw7CiAgICAgdm9pZCB1bmlmb3JtM2YoR0NHTGludCBsb2NhdGlvbiwgR0NHTGZs
b2F0IHgsIEdDR0xmbG9hdCB5LCBHQ0dMZmxvYXQgeikgZmluYWw7Ci0gICAgdm9pZCB1bmlmb3Jt
M2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSwgY29uc3QgR0NHTGZsb2F0KiB2KSBmaW5h
bDsKKyAgICB2b2lkIHVuaWZvcm0zZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3Qg
R0NHTGZsb2F0PiB2KSBmaW5hbDsKICAgICB2b2lkIHVuaWZvcm0zaShHQ0dMaW50IGxvY2F0aW9u
LCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTGludCB6KSBmaW5hbDsKLSAgICB2b2lkIHVuaWZv
cm0zaXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpLCBjb25zdCBHQ0dMaW50KiB2KSBmaW5h
bDsKKyAgICB2b2lkIHVuaWZvcm0zaXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3Qg
R0NHTGludD4gdikgZmluYWw7CiAgICAgdm9pZCB1bmlmb3JtNGYoR0NHTGludCBsb2NhdGlvbiwg
R0NHTGZsb2F0IHgsIEdDR0xmbG9hdCB5LCBHQ0dMZmxvYXQgeiwgR0NHTGZsb2F0IHcpIGZpbmFs
OwotICAgIHZvaWQgdW5pZm9ybTRmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWksIGNvbnN0
IEdDR0xmbG9hdCogdikgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtNGZ2KEdDR0xpbnQgbG9jYXRp
b24sIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gdikgZmluYWw7CiAgICAgdm9pZCB1bmlmb3Jt
NGkoR0NHTGludCBsb2NhdGlvbiwgR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xpbnQgeiwgR0NH
TGludCB3KSBmaW5hbDsKLSAgICB2b2lkIHVuaWZvcm00aXYoR0NHTGludCBsb2NhdGlvbiwgR0NH
THNpemVpLCBjb25zdCBHQ0dMaW50KiB2KSBmaW5hbDsKLSAgICB2b2lkIHVuaWZvcm1NYXRyaXgy
ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNv
bnN0IEdDR0xmbG9hdCogdmFsdWUpIGZpbmFsOwotICAgIHZvaWQgdW5pZm9ybU1hdHJpeDNmdihH
Q0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWksIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3Qg
R0NHTGZsb2F0KiB2YWx1ZSkgZmluYWw7Ci0gICAgdm9pZCB1bmlmb3JtTWF0cml4NGZ2KEdDR0xp
bnQgbG9jYXRpb24sIEdDR0xzaXplaSwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHQ0dM
ZmxvYXQqIHZhbHVlKSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm00aXYoR0NHTGludCBsb2NhdGlv
biwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gdikgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtTWF0
cml4MmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48
Y29uc3QgR0NHTGZsb2F0PiB2YWx1ZSkgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtTWF0cml4M2Z2
KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3Qg
R0NHTGZsb2F0PiB2YWx1ZSkgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtTWF0cml4NGZ2KEdDR0xp
bnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZs
b2F0PiB2YWx1ZSkgZmluYWw7CiAKICAgICB2b2lkIHVzZVByb2dyYW0oUGxhdGZvcm1HTE9iamVj
dCkgZmluYWw7CiAgICAgdm9pZCB2YWxpZGF0ZVByb2dyYW0oUGxhdGZvcm1HTE9iamVjdCkgZmlu
YWw7CkBAIC0yODYsMTMgKzI4OSwxMyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogICAgIHZvaWQgdmVy
dGV4QXR0cmliMWYoR0NHTHVpbnQgaW5kZXgsIEdDR0xmbG9hdCB4KSBmaW5hbDsKLSAgICB2b2lk
IHZlcnRleEF0dHJpYjFmdihHQ0dMdWludCBpbmRleCwgY29uc3QgR0NHTGZsb2F0KiB2YWx1ZXMp
IGZpbmFsOworICAgIHZvaWQgdmVydGV4QXR0cmliMWZ2KEdDR0x1aW50IGluZGV4LCBHQ0dMU3Bh
bjxjb25zdCBHQ0dMZmxvYXQsIDE+IHZhbHVlcykgZmluYWw7CiAgICAgdm9pZCB2ZXJ0ZXhBdHRy
aWIyZihHQ0dMdWludCBpbmRleCwgR0NHTGZsb2F0IHgsIEdDR0xmbG9hdCB5KSBmaW5hbDsKLSAg
ICB2b2lkIHZlcnRleEF0dHJpYjJmdihHQ0dMdWludCBpbmRleCwgY29uc3QgR0NHTGZsb2F0KiB2
YWx1ZXMpIGZpbmFsOworICAgIHZvaWQgdmVydGV4QXR0cmliMmZ2KEdDR0x1aW50IGluZGV4LCBH
Q0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQsIDI+IHZhbHVlcykgZmluYWw7CiAgICAgdm9pZCB2ZXJ0
ZXhBdHRyaWIzZihHQ0dMdWludCBpbmRleCwgR0NHTGZsb2F0IHgsIEdDR0xmbG9hdCB5LCBHQ0dM
ZmxvYXQgeikgZmluYWw7Ci0gICAgdm9pZCB2ZXJ0ZXhBdHRyaWIzZnYoR0NHTHVpbnQgaW5kZXgs
IGNvbnN0IEdDR0xmbG9hdCogdmFsdWVzKSBmaW5hbDsKKyAgICB2b2lkIHZlcnRleEF0dHJpYjNm
dihHQ0dMdWludCBpbmRleCwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0LCAzPiB2YWx1ZXMpIGZp
bmFsOwogICAgIHZvaWQgdmVydGV4QXR0cmliNGYoR0NHTHVpbnQgaW5kZXgsIEdDR0xmbG9hdCB4
LCBHQ0dMZmxvYXQgeSwgR0NHTGZsb2F0IHosIEdDR0xmbG9hdCB3KSBmaW5hbDsKLSAgICB2b2lk
IHZlcnRleEF0dHJpYjRmdihHQ0dMdWludCBpbmRleCwgY29uc3QgR0NHTGZsb2F0KiB2YWx1ZXMp
IGZpbmFsOworICAgIHZvaWQgdmVydGV4QXR0cmliNGZ2KEdDR0x1aW50IGluZGV4LCBHQ0dMU3Bh
bjxjb25zdCBHQ0dMZmxvYXQsIDQ+IHZhbHVlcykgZmluYWw7CiAgICAgdm9pZCB2ZXJ0ZXhBdHRy
aWJQb2ludGVyKEdDR0x1aW50IGluZGV4LCBHQ0dMaW50IHNpemUsIEdDR0xlbnVtIHR5cGUsIEdD
R0xib29sZWFuIG5vcm1hbGl6ZWQsIEdDR0xzaXplaSBzdHJpZGUsIEdDR0xpbnRwdHIgb2Zmc2V0
KSBmaW5hbDsKIAogICAgIHZvaWQgdmlld3BvcnQoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xz
aXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkgZmluYWw7CkBAIC0zMjMsOCArMzI2LDggQEAg
cHVibGljOgogCiAgICAgdm9pZCBibGl0RnJhbWVidWZmZXIoR0NHTGludCBzcmNYMCwgR0NHTGlu
dCBzcmNZMCwgR0NHTGludCBzcmNYMSwgR0NHTGludCBzcmNZMSwgR0NHTGludCBkc3RYMCwgR0NH
TGludCBkc3RZMCwgR0NHTGludCBkc3RYMSwgR0NHTGludCBkc3RZMSwgR0NHTGJpdGZpZWxkIG1h
c2ssIEdDR0xlbnVtIGZpbHRlcikgZmluYWw7CiAgICAgdm9pZCBmcmFtZWJ1ZmZlclRleHR1cmVM
YXllcihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGF0dGFjaG1lbnQsIFBsYXRmb3JtR0xPYmpl
Y3QgdGV4dHVyZSwgR0NHTGludCBsZXZlbCwgR0NHTGludCBsYXllcikgZmluYWw7Ci0gICAgdm9p
ZCBpbnZhbGlkYXRlRnJhbWVidWZmZXIoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgbnVtQXR0
YWNobWVudHMsIGNvbnN0IEdDR0xlbnVtKiBhdHRhY2htZW50cykgZmluYWw7Ci0gICAgdm9pZCBp
bnZhbGlkYXRlU3ViRnJhbWVidWZmZXIoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgbnVtQXR0
YWNobWVudHMsIGNvbnN0IEdDR0xlbnVtKiBhdHRhY2htZW50cywgR0NHTGludCB4LCBHQ0dMaW50
IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkgZmluYWw7CisgICAgdm9pZCBp
bnZhbGlkYXRlRnJhbWVidWZmZXIoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMU3Bhbjxjb25zdCBHQ0dM
ZW51bT4gYXR0YWNobWVudHMpIGZpbmFsOworICAgIHZvaWQgaW52YWxpZGF0ZVN1YkZyYW1lYnVm
ZmVyKEdDR0xlbnVtIHRhcmdldCwgR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+IGF0dGFjaG1lbnRz
LCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0
KSBmaW5hbDsKICAgICB2b2lkIHJlYWRCdWZmZXIoR0NHTGVudW0gc3JjKSBmaW5hbDsKIAogICAg
IC8vIGdldEludGVybmFsRm9ybWF0UGFyYW1ldGVyCkBAIC0zMzQsNyArMzM3LDE1IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHRleFN0b3JhZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaSBsZXZl
bHMsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBo
ZWlnaHQpIGZpbmFsOwogICAgIHZvaWQgdGV4U3RvcmFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NH
THNpemVpIGxldmVscywgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwg
R0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoKSBmaW5hbDsKIAorICAgIHZvaWQgdGV4
SW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgaW50ZXJuYWxm
b3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRo
LCBHQ0dMaW50IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bh
bjxjb25zdCBHQ0dMdm9pZD4gcGl4ZWxzKSBmaW5hbDsKKyAgICB2b2lkIHRleEltYWdlM0QoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IGludGVybmFsZm9ybWF0LCBHQ0dM
c2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGludCBi
b3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQp
IGZpbmFsOworICAgIHZvaWQgdGV4U3ViSW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQg
bGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMaW50IHpvZmZzZXQs
IEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dM
ZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBwaXhl
bHMpIGZpbmFsOworICAgIHZvaWQgdGV4U3ViSW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xp
bnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMaW50IHpvZmZz
ZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBH
Q0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KSBmaW5hbDsK
ICAgICB2b2lkIGNvcHlUZXhTdWJJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZl
bCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xpbnQgem9mZnNldCwgR0NH
TGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkgZmlu
YWw7CisgICAgdm9pZCBjb21wcmVzc2VkVGV4SW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xp
bnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xz
aXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGludCBib3JkZXIsIEdDR0xzaXplaSBp
bWFnZVNpemUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRhKSBmaW5hbDsKKyAgICB2b2lk
IGNvbXByZXNzZWRUZXhJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NH
TGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwg
R0NHTHNpemVpIGRlcHRoLCBHQ0dMaW50IGJvcmRlciwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NH
TGludHB0ciBvZmZzZXQpIGZpbmFsOworICAgIHZvaWQgY29tcHJlc3NlZFRleFN1YkltYWdlM0Qo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQg
eW9mZnNldCwgR0NHTGludCB6b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWln
aHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMc2l6ZWkgaW1hZ2VTaXpl
LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gZGF0YSkgZmluYWw7CisgICAgdm9pZCBjb21wcmVz
c2VkVGV4U3ViSW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQg
eG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMaW50IHpvZmZzZXQsIEdDR0xzaXplaSB3aWR0
aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMZW51bSBmb3JtYXQsIEdD
R0xzaXplaSBpbWFnZVNpemUsIEdDR0xpbnRwdHIgb2Zmc2V0KSBmaW5hbDsKIAogICAgIEdDR0xp
bnQgZ2V0RnJhZ0RhdGFMb2NhdGlvbihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFN0
cmluZyYgbmFtZSkgZmluYWw7CiAKQEAgLTM0MiwyOCArMzUzLDI4IEBAIHB1YmxpYzoKICAgICB2
b2lkIHVuaWZvcm0ydWkoR0NHTGludCBsb2NhdGlvbiwgR0NHTHVpbnQgdjAsIEdDR0x1aW50IHYx
KSBmaW5hbDsKICAgICB2b2lkIHVuaWZvcm0zdWkoR0NHTGludCBsb2NhdGlvbiwgR0NHTHVpbnQg
djAsIEdDR0x1aW50IHYxLCBHQ0dMdWludCB2MikgZmluYWw7CiAgICAgdm9pZCB1bmlmb3JtNHVp
KEdDR0xpbnQgbG9jYXRpb24sIEdDR0x1aW50IHYwLCBHQ0dMdWludCB2MSwgR0NHTHVpbnQgdjIs
IEdDR0x1aW50IHYzKSBmaW5hbDsKLSAgICB2b2lkIHVuaWZvcm0xdWl2KEdDR0xpbnQgbG9jYXRp
b24sIGNvbnN0IEdDR0x1aW50KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNy
Y0xlbmd0aCkgZmluYWw7Ci0gICAgdm9pZCB1bmlmb3JtMnVpdihHQ0dMaW50IGxvY2F0aW9uLCBj
b25zdCBHQ0dMdWludCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5n
dGgpIGZpbmFsOwotICAgIHZvaWQgdW5pZm9ybTN1aXYoR0NHTGludCBsb2NhdGlvbiwgY29uc3Qg
R0NHTHVpbnQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKSBm
aW5hbDsKLSAgICB2b2lkIHVuaWZvcm00dWl2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0x1
aW50KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkgZmluYWw7
Ci0gICAgdm9pZCB1bmlmb3JtTWF0cml4MngzZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xl
YW4gdHJhbnNwb3NlLCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwg
R0NHTHVpbnQgc3JjTGVuZ3RoKSBmaW5hbDsKLSAgICB2b2lkIHVuaWZvcm1NYXRyaXgzeDJmdihH
Q0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCog
ZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpIGZpbmFsOwotICAg
IHZvaWQgdW5pZm9ybU1hdHJpeDJ4NGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRy
YW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1
aW50IHNyY0xlbmd0aCkgZmluYWw7Ci0gICAgdm9pZCB1bmlmb3JtTWF0cml4NHgyZnYoR0NHTGlu
dCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEs
IEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKSBmaW5hbDsKLSAgICB2b2lk
IHVuaWZvcm1NYXRyaXgzeDRmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bv
c2UsIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBz
cmNMZW5ndGgpIGZpbmFsOwotICAgIHZvaWQgdW5pZm9ybU1hdHJpeDR4M2Z2KEdDR0xpbnQgbG9j
YXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dM
dWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkgZmluYWw7CisgICAgdm9pZCB1bmlm
b3JtMXVpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdWludD4pIGZpbmFs
OworICAgIHZvaWQgdW5pZm9ybTJ1aXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3Qg
R0NHTHVpbnQ+KSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm0zdWl2KEdDR0xpbnQgbG9jYXRpb24s
IEdDR0xTcGFuPGNvbnN0IEdDR0x1aW50PikgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtNHVpdihH
Q0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdWludD4pIGZpbmFsOworICAgIHZv
aWQgdW5pZm9ybU1hdHJpeDJ4M2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5z
cG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiBkYXRhKSBmaW5hbDsKKyAgICB2b2lkIHVu
aWZvcm1NYXRyaXgzeDJmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2Us
IEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gZGF0YSkgZmluYWw7CisgICAgdm9pZCB1bmlmb3Jt
TWF0cml4Mng0ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dM
U3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEpIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybU1hdHJp
eDR4MmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48
Y29uc3QgR0NHTGZsb2F0PiBkYXRhKSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm1NYXRyaXgzeDRm
dihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0
IEdDR0xmbG9hdD4gZGF0YSkgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtTWF0cml4NHgzZnYoR0NH
TGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dM
ZmxvYXQ+IGRhdGEpIGZpbmFsOwogICAgIHZvaWQgdmVydGV4QXR0cmliSTRpKEdDR0x1aW50IGlu
ZGV4LCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTGludCB6LCBHQ0dMaW50IHcpIGZpbmFsOwot
ICAgIHZvaWQgdmVydGV4QXR0cmliSTRpdihHQ0dMdWludCBpbmRleCwgY29uc3QgR0NHTGludCog
dmFsdWVzKSBmaW5hbDsKKyAgICB2b2lkIHZlcnRleEF0dHJpYkk0aXYoR0NHTHVpbnQgaW5kZXgs
IEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQsIDQ+IHZhbHVlcykgZmluYWw7CiAgICAgdm9pZCB2ZXJ0
ZXhBdHRyaWJJNHVpKEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCB4LCBHQ0dMdWludCB5LCBHQ0dM
dWludCB6LCBHQ0dMdWludCB3KSBmaW5hbDsKLSAgICB2b2lkIHZlcnRleEF0dHJpYkk0dWl2KEdD
R0x1aW50IGluZGV4LCBjb25zdCBHQ0dMdWludCogdmFsdWVzKSBmaW5hbDsKKyAgICB2b2lkIHZl
cnRleEF0dHJpYkk0dWl2KEdDR0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdWludCwg
ND4gdmFsdWVzKSBmaW5hbDsKICAgICB2b2lkIHZlcnRleEF0dHJpYklQb2ludGVyKEdDR0x1aW50
IGluZGV4LCBHQ0dMaW50IHNpemUsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBzdHJpZGUsIEdD
R0xpbnRwdHIgb2Zmc2V0KSBmaW5hbDsKIAogICAgIHZvaWQgZHJhd1JhbmdlRWxlbWVudHMoR0NH
TGVudW0gbW9kZSwgR0NHTHVpbnQgc3RhcnQsIEdDR0x1aW50IGVuZCwgR0NHTHNpemVpIGNvdW50
LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCkgZmluYWw7CiAKLSAgICB2b2lkIGRy
YXdCdWZmZXJzKEdDR0xzaXplaSBuLCBjb25zdCBHQ0dMZW51bSogYnVmcykgZmluYWw7Ci0gICAg
dm9pZCBjbGVhckJ1ZmZlcml2KEdDR0xlbnVtIGJ1ZmZlciwgR0NHTGludCBkcmF3YnVmZmVyLCBj
b25zdCBHQ0dMaW50KiB2YWx1ZXMsIEdDR0x1aW50IHNyY09mZnNldCkgZmluYWw7Ci0gICAgdm9p
ZCBjbGVhckJ1ZmZlcnVpdihHQ0dMZW51bSBidWZmZXIsIEdDR0xpbnQgZHJhd2J1ZmZlciwgY29u
c3QgR0NHTHVpbnQqIHZhbHVlcywgR0NHTHVpbnQgc3JjT2Zmc2V0KSBmaW5hbDsKLSAgICB2b2lk
IGNsZWFyQnVmZmVyZnYoR0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50IGRyYXdidWZmZXIsIGNvbnN0
IEdDR0xmbG9hdCogdmFsdWVzLCBHQ0dMdWludCBzcmNPZmZzZXQpIGZpbmFsOworICAgIHZvaWQg
ZHJhd0J1ZmZlcnMoR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+IGJ1ZnMpIGZpbmFsOworICAgIHZv
aWQgY2xlYXJCdWZmZXJpdihHQ0dMZW51bSBidWZmZXIsIEdDR0xpbnQgZHJhd2J1ZmZlciwgR0NH
TFNwYW48Y29uc3QgR0NHTGludD4gdmFsdWVzKSBmaW5hbDsKKyAgICB2b2lkIGNsZWFyQnVmZmVy
dWl2KEdDR0xlbnVtIGJ1ZmZlciwgR0NHTGludCBkcmF3YnVmZmVyLCBHQ0dMU3Bhbjxjb25zdCBH
Q0dMdWludD4gdmFsdWVzKSBmaW5hbDsKKyAgICB2b2lkIGNsZWFyQnVmZmVyZnYoR0NHTGVudW0g
YnVmZmVyLCBHQ0dMaW50IGRyYXdidWZmZXIsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gdmFs
dWVzKSBmaW5hbDsKICAgICB2b2lkIGNsZWFyQnVmZmVyZmkoR0NHTGVudW0gYnVmZmVyLCBHQ0dM
aW50IGRyYXdidWZmZXIsIEdDR0xmbG9hdCBkZXB0aCwgR0NHTGludCBzdGVuY2lsKSBmaW5hbDsK
IAogICAgIFBsYXRmb3JtR0xPYmplY3QgY3JlYXRlUXVlcnkoKSBmaW5hbDsKQEAgLTQxNiwyNyAr
NDI3LDYgQEAgcHVibGljOgogICAgIFN0cmluZyBnZXRBY3RpdmVVbmlmb3JtQmxvY2tOYW1lKFBs
YXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTHVpbnQgdW5pZm9ybUJsb2NrSW5kZXgpIGZpbmFs
OwogICAgIHZvaWQgdW5pZm9ybUJsb2NrQmluZGluZyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0s
IEdDR0x1aW50IHVuaWZvcm1CbG9ja0luZGV4LCBHQ0dMdWludCB1bmlmb3JtQmxvY2tCaW5kaW5n
KSBmaW5hbDsKIAotI2lmICFVU0UoQU5HTEUpCi0gICAgdm9pZCBjb21wcmVzc2VkVGV4SW1hZ2Uy
RChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0
LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dM
c2l6ZWkgaW1hZ2VTaXplLCBHQ0dMaW50cHRyIG9mZnNldCk7Ci0gICAgdm9pZCBjb21wcmVzc2Vk
VGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVy
bmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9y
ZGVyLCBjb25zdCB2b2lkKiBzcmNEYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNy
Y0xlbmd0aE92ZXJyaWRlKTsKLQotICAgIHZvaWQgY29tcHJlc3NlZFRleFN1YkltYWdlMkQoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9m
ZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQs
IEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xpbnRwdHIgb2Zmc2V0KTsKLSAgICB2b2lkIGNvbXBy
ZXNzZWRUZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGlu
dCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhl
aWdodCwgR0NHTGVudW0gZm9ybWF0LCBjb25zdCB2b2lkKiBzcmNEYXRhLCBHQ0dMdWludCBzcmNP
ZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aE92ZXJyaWRlKTsKLSNlbmRpZgotCi0gICAgdm9pZCB1
bmlmb3JtMWZ2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVp
bnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpIGZpbmFsOwotICAgIHZvaWQgdW5pZm9y
bTJmdihHQ0dMaW50IGxvY2F0aW9uLCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNy
Y09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKSBmaW5hbDsKLSAgICB2b2lkIHVuaWZvcm0zZnYo
R0NHTGludCBsb2NhdGlvbiwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZz
ZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkgZmluYWw7Ci0gICAgdm9pZCB1bmlmb3JtNGZ2KEdDR0xp
bnQgbG9jYXRpb24sIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBH
Q0dMdWludCBzcmNMZW5ndGgpIGZpbmFsOwotCi0gICAgdm9pZCB1bmlmb3JtMWl2KEdDR0xpbnQg
bG9jYXRpb24sIGNvbnN0IEdDR0xpbnQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVp
bnQgc3JjTGVuZ3RoKSBmaW5hbDsKLSAgICB2b2lkIHVuaWZvcm0yaXYoR0NHTGludCBsb2NhdGlv
biwgY29uc3QgR0NHTGludCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNM
ZW5ndGgpIGZpbmFsOwotICAgIHZvaWQgdW5pZm9ybTNpdihHQ0dMaW50IGxvY2F0aW9uLCBjb25z
dCBHQ0dMaW50KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkg
ZmluYWw7Ci0gICAgdm9pZCB1bmlmb3JtNGl2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0xp
bnQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKSBmaW5hbDsK
LQotICAgIHZvaWQgdW5pZm9ybU1hdHJpeDJmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVh
biB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBH
Q0dMdWludCBzcmNMZW5ndGgpIGZpbmFsOwotICAgIHZvaWQgdW5pZm9ybU1hdHJpeDNmdihHQ0dM
aW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogZGF0
YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpIGZpbmFsOwotICAgIHZv
aWQgdW5pZm9ybU1hdHJpeDRmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bv
c2UsIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBz
cmNMZW5ndGgpIGZpbmFsOwogICAgIHZvaWQgZ2V0QWN0aXZlVW5pZm9ybUJsb2NraXYoR0NHTHVp
bnQgcHJvZ3JhbSwgR0NHTHVpbnQgdW5pZm9ybUJsb2NrSW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBH
Q0dMU3BhbjxHQ0dMaW50PiBwYXJhbXMpIGZpbmFsOwogCiAjaWYgIVVTRShBTkdMRSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0Nv
bnRleHRHTE9wZW5HTEJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHAKaW5kZXggOWQ3Y2M5MjE2ZTdh
NDJjZjBkOTcxNjQ1NzIwODUxZjE0NTUxNzBkNS4uNjM1NmY4MWY0ODIxYjZhMWVhNmMzNTU3ZWRm
MWY0ZTY4ODEzZjZiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFz
ZS5jcHAKQEAgLTM0MSwxMSArMzQxLDExIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OmdldFNoYWRlclByZWNpc2lvbkZvcm1hdChHQ0dMZW51bSBzaGFkZXJUeXBlLCBHQ0dMCiAgICAg
fQogfQogCi1ib29sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp0ZXhJbWFnZTJEKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXpl
aSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1h
dCwgR0NHTGVudW0gdHlwZSwgY29uc3Qgdm9pZCogcGl4ZWxzKQordm9pZCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6dGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdD
R0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQs
IEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFu
PGNvbnN0IEdDR0x2b2lkPiBwaXhlbHMpCiB7Ci0gICAgaWYgKHdpZHRoICYmIGhlaWdodCAmJiAh
cGl4ZWxzKSB7CisgICAgaWYgKHdpZHRoICYmIGhlaWdodCAmJiAhcGl4ZWxzLmRhdGEpIHsKICAg
ICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoSU5WQUxJRF9WQUxVRSk7Ci0gICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIEdDR0xlbnVtIG9wZW5HTEZvcm1h
dCA9IGZvcm1hdDsKQEAgLTQwMyw4ICs0MDMsNyBAQCBib29sIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjp0ZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudQog
ICAgICAgICB9CiAgICAgfQogCi0gICAgdGV4SW1hZ2UyRERpcmVjdCh0YXJnZXQsIGxldmVsLCBv
cGVuR0xJbnRlcm5hbEZvcm1hdCwgd2lkdGgsIGhlaWdodCwgYm9yZGVyLCBvcGVuR0xGb3JtYXQs
IHR5cGUsIHBpeGVscyk7Ci0gICAgcmV0dXJuIHRydWU7CisgICAgdGV4SW1hZ2UyRERpcmVjdCh0
YXJnZXQsIGxldmVsLCBvcGVuR0xJbnRlcm5hbEZvcm1hdCwgd2lkdGgsIGhlaWdodCwgYm9yZGVy
LCBvcGVuR0xGb3JtYXQsIHR5cGUsIHBpeGVscy5kYXRhKTsKIH0KIAogdm9pZCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6ZGVwdGhSYW5nZShHQ0dMY2xhbXBmIHpOZWFyLCBHQ0dMY2xhbXBmIHpG
YXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wv
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb21tb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29tbW9uLmNwcAppbmRl
eCBhYmI3ZTI1YTA2ZjA4NWNjZWFjZmY1YWI2ZTgyMDQ1N2NlOWEyZDkzLi5iYzQ0Y2Q1Nzc4ODY3
MjAzOWFlYTRmNTk5OTZlNGQ5NGUxYzFhMGZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb21tb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0Nv
bnRleHRHTE9wZW5HTENvbW1vbi5jcHAKQEAgLTU1MiwyMCArNTUyLDIwIEBAIHZvaWQgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmJ1ZmZlckRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWlw
dHIgc2l6ZSwgR0NHCiAgICAgOjpnbEJ1ZmZlckRhdGEodGFyZ2V0LCBzaXplLCAwLCB1c2FnZSk7
CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmJ1ZmZlckRhdGEoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMc2l6ZWlwdHIgc2l6ZSwgY29uc3Qgdm9pZCogZGF0YSwgR0NHTGVudW0gdXNh
Z2UpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpidWZmZXJEYXRhKEdDR0xlbnVtIHRh
cmdldCwgR0NHTFNwYW48Y29uc3Qgdm9pZD4gZGF0YSwgR0NHTGVudW0gdXNhZ2UpCiB7CiAgICAg
aWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgOjpnbEJ1
ZmZlckRhdGEodGFyZ2V0LCBzaXplLCBkYXRhLCB1c2FnZSk7CisgICAgOjpnbEJ1ZmZlckRhdGEo
dGFyZ2V0LCBkYXRhLmJ1ZlNpemUsIGRhdGEuZGF0YSwgdXNhZ2UpOwogfQogCi12b2lkIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpidWZmZXJTdWJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTGlu
dHB0ciBvZmZzZXQsIEdDR0xzaXplaXB0ciBzaXplLCBjb25zdCB2b2lkKiBkYXRhKQordm9pZCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6YnVmZmVyU3ViRGF0YShHQ0dMZW51bSB0YXJnZXQsIEdD
R0xpbnRwdHIgb2Zmc2V0LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gZGF0YSkKIHsKICAgICBp
ZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICA6OmdsQnVm
ZmVyU3ViRGF0YSh0YXJnZXQsIG9mZnNldCwgc2l6ZSwgZGF0YSk7CisgICAgOjpnbEJ1ZmZlclN1
YkRhdGEodGFyZ2V0LCBvZmZzZXQsIGRhdGEuYnVmU2l6ZSwgZGF0YS5kYXRhKTsKIH0KIAogR0NH
TGVudW0gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoR0NH
TGVudW0gdGFyZ2V0KQpAQCAtMTQxNSwxMiArMTQxNSwxMiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjp1bmlmb3JtMWYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGZsb2F0IHYwKQogICAg
IDo6Z2xVbmlmb3JtMWYobG9jYXRpb24sIHYwKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6dW5pZm9ybTFmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgc2l6ZSwgY29u
c3QgR0NHTGZsb2F0KiBhcnJheSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZv
cm0xZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiBhcnJheSkK
IHsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAg
ICA6OmdsVW5pZm9ybTFmdihsb2NhdGlvbiwgc2l6ZSwgYXJyYXkpOworICAgIDo6Z2xVbmlmb3Jt
MWZ2KGxvY2F0aW9uLCBhcnJheS5idWZTaXplLCBhcnJheS5kYXRhKTsKIH0KIAogdm9pZCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTJmKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xmbG9h
dCB2MCwgR0NHTGZsb2F0IHYxKQpAQCAtMTQzMSwxMyArMTQzMSwxMyBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMmYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGZsb2F0IHYw
LCBHQ0dMZmxvYQogICAgIDo6Z2xVbmlmb3JtMmYobG9jYXRpb24sIHYwLCB2MSk7CiB9CiAKLXZv
aWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0yZnYoR0NHTGludCBsb2NhdGlvbiwg
R0NHTHNpemVpIHNpemUsIGNvbnN0IEdDR0xmbG9hdCogYXJyYXkpCit2b2lkIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjp1bmlmb3JtMmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0
IEdDR0xmbG9hdD4gYXJyYXkpCiB7Ci0gICAgLy8gRklYTUU6IGxlbmd0aCBuZWVkcyB0byBiZSBh
IG11bHRpcGxlIG9mIDIuCisgICAgQVNTRVJUKCEoYXJyYXkuYnVmU2l6ZSAlIDIpKTsKICAgICBp
ZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICA6OmdsVW5p
Zm9ybTJmdihsb2NhdGlvbiwgc2l6ZSwgYXJyYXkpOworICAgIDo6Z2xVbmlmb3JtMmZ2KGxvY2F0
aW9uLCBhcnJheS5idWZTaXplIC8gMiwgYXJyYXkuZGF0YSk7CiB9CiAKIHZvaWQgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OnVuaWZvcm0zZihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMZmxvYXQgdjAs
IEdDR0xmbG9hdCB2MSwgR0NHTGZsb2F0IHYyKQpAQCAtMTQ0OCwxMyArMTQ0OCwxMyBAQCB2b2lk
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtM2YoR0NHTGludCBsb2NhdGlvbiwgR0NH
TGZsb2F0IHYwLCBHQ0dMZmxvYQogICAgIDo6Z2xVbmlmb3JtM2YobG9jYXRpb24sIHYwLCB2MSwg
djIpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtM2Z2KEdDR0xp
bnQgbG9jYXRpb24sIEdDR0xzaXplaSBzaXplLCBjb25zdCBHQ0dMZmxvYXQqIGFycmF5KQordm9p
ZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTNmdihHQ0dMaW50IGxvY2F0aW9uLCBH
Q0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGFycmF5KQogewotICAgIC8vIEZJWE1FOiBsZW5ndGgg
bmVlZHMgdG8gYmUgYSBtdWx0aXBsZSBvZiAzLgorICAgIEFTU0VSVCghKGFycmF5LmJ1ZlNpemUg
JSAzKSk7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgOjpnbFVuaWZvcm0zZnYobG9jYXRpb24sIHNpemUsIGFycmF5KTsKKyAgICA6OmdsVW5p
Zm9ybTNmdihsb2NhdGlvbiwgYXJyYXkuYnVmU2l6ZSAvIDMsIGFycmF5LmRhdGEpOwogfQogCiB2
b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtNGYoR0NHTGludCBsb2NhdGlvbiwg
R0NHTGZsb2F0IHYwLCBHQ0dMZmxvYXQgdjEsIEdDR0xmbG9hdCB2MiwgR0NHTGZsb2F0IHYzKQpA
QCAtMTQ2NSwxMyArMTQ2NSwxMyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlm
b3JtNGYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGZsb2F0IHYwLCBHQ0dMZmxvYQogICAgIDo6Z2xV
bmlmb3JtNGYobG9jYXRpb24sIHYwLCB2MSwgdjIsIHYzKTsKIH0KIAotdm9pZCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6dW5pZm9ybTRmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgc2l6
ZSwgY29uc3QgR0NHTGZsb2F0KiBhcnJheSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OnVuaWZvcm00ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiBh
cnJheSkKIHsKLSAgICAvLyBGSVhNRTogbGVuZ3RoIG5lZWRzIHRvIGJlIGEgbXVsdGlwbGUgb2Yg
NC4KKyAgICBBU1NFUlQoIShhcnJheS5idWZTaXplICUgNCkpOwogICAgIGlmICghbWFrZUNvbnRl
eHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIDo6Z2xVbmlmb3JtNGZ2KGxvY2F0
aW9uLCBzaXplLCBhcnJheSk7CisgICAgOjpnbFVuaWZvcm00ZnYobG9jYXRpb24sIGFycmF5LmJ1
ZlNpemUgLyA0LCBhcnJheS5kYXRhKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6dW5pZm9ybTFpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xpbnQgdjApCkBAIC0xNDgyLDEyICsx
NDgyLDEyIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0xaShHQ0dMaW50
IGxvY2F0aW9uLCBHQ0dMaW50IHYwKQogICAgIDo6Z2xVbmlmb3JtMWkobG9jYXRpb24sIHYwKTsK
IH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTFpdihHQ0dMaW50IGxv
Y2F0aW9uLCBHQ0dMc2l6ZWkgc2l6ZSwgY29uc3QgR0NHTGludCogYXJyYXkpCit2b2lkIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMWl2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFu
PGNvbnN0IEdDR0xpbnQ+IGFycmF5KQogewogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkp
CiAgICAgICAgIHJldHVybjsKIAotICAgIDo6Z2xVbmlmb3JtMWl2KGxvY2F0aW9uLCBzaXplLCBh
cnJheSk7CisgICAgOjpnbFVuaWZvcm0xaXYobG9jYXRpb24sIGFycmF5LmJ1ZlNpemUsIGFycmF5
LmRhdGEpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMmkoR0NH
TGludCBsb2NhdGlvbiwgR0NHTGludCB2MCwgR0NHTGludCB2MSkKQEAgLTE0OTgsMTMgKzE0OTgs
MTMgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTJpKEdDR0xpbnQgbG9j
YXRpb24sIEdDR0xpbnQgdjAsIEdDR0xpbnQgdjEKICAgICA6OmdsVW5pZm9ybTJpKGxvY2F0aW9u
LCB2MCwgdjEpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMml2
KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBzaXplLCBjb25zdCBHQ0dMaW50KiBhcnJheSkK
K3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0yaXYoR0NHTGludCBsb2NhdGlv
biwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gYXJyYXkpCiB7Ci0gICAgLy8gRklYTUU6IGxlbmd0
aCBuZWVkcyB0byBiZSBhIG11bHRpcGxlIG9mIDIuCisgICAgQVNTRVJUKCEoYXJyYXkuYnVmU2l6
ZSAlIDIpKTsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47
CiAKLSAgICA6OmdsVW5pZm9ybTJpdihsb2NhdGlvbiwgc2l6ZSwgYXJyYXkpOworICAgIDo6Z2xV
bmlmb3JtMml2KGxvY2F0aW9uLCBhcnJheS5idWZTaXplIC8gMiwgYXJyYXkuZGF0YSk7CiB9CiAK
IHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0zaShHQ0dMaW50IGxvY2F0aW9u
LCBHQ0dMaW50IHYwLCBHQ0dMaW50IHYxLCBHQ0dMaW50IHYyKQpAQCAtMTUxNSwxMyArMTUxNSwx
MyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtM2koR0NHTGludCBsb2Nh
dGlvbiwgR0NHTGludCB2MCwgR0NHTGludCB2MQogICAgIDo6Z2xVbmlmb3JtM2kobG9jYXRpb24s
IHYwLCB2MSwgdjIpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3Jt
M2l2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBzaXplLCBjb25zdCBHQ0dMaW50KiBhcnJh
eSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0zaXYoR0NHTGludCBsb2Nh
dGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gYXJyYXkpCiB7Ci0gICAgLy8gRklYTUU6IGxl
bmd0aCBuZWVkcyB0byBiZSBhIG11bHRpcGxlIG9mIDMuCisgICAgQVNTRVJUKCEoYXJyYXkuYnVm
U2l6ZSAlIDMpKTsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1
cm47CiAKLSAgICA6OmdsVW5pZm9ybTNpdihsb2NhdGlvbiwgc2l6ZSwgYXJyYXkpOworICAgIDo6
Z2xVbmlmb3JtM2l2KGxvY2F0aW9uLCBhcnJheS5idWZTaXplIC8gMywgYXJyYXkuZGF0YSk7CiB9
CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm00aShHQ0dMaW50IGxvY2F0
aW9uLCBHQ0dMaW50IHYwLCBHQ0dMaW50IHYxLCBHQ0dMaW50IHYyLCBHQ0dMaW50IHYzKQpAQCAt
MTUzMiw0MCArMTUzMiw0MCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3Jt
NGkoR0NHTGludCBsb2NhdGlvbiwgR0NHTGludCB2MCwgR0NHTGludCB2MQogICAgIDo6Z2xVbmlm
b3JtNGkobG9jYXRpb24sIHYwLCB2MSwgdjIsIHYzKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6dW5pZm9ybTRpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgc2l6ZSwg
Y29uc3QgR0NHTGludCogYXJyYXkpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlm
b3JtNGl2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+IGFycmF5KQog
ewotICAgIC8vIEZJWE1FOiBsZW5ndGggbmVlZHMgdG8gYmUgYSBtdWx0aXBsZSBvZiA0LgorICAg
IEFTU0VSVCghKGFycmF5LmJ1ZlNpemUgJSA0KSk7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJl
bnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgOjpnbFVuaWZvcm00aXYobG9jYXRpb24sIHNp
emUsIGFycmF5KTsKKyAgICA6OmdsVW5pZm9ybTRpdihsb2NhdGlvbiwgYXJyYXkuYnVmU2l6ZSAv
IDQsIGFycmF5LmRhdGEpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlm
b3JtTWF0cml4MmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBzaXplLCBHQ0dMYm9vbGVh
biB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogYXJyYXkpCit2b2lkIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4MmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFu
IHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiBhcnJheSkKIHsKLSAgICAvLyBG
SVhNRTogbGVuZ3RoIG5lZWRzIHRvIGJlIGEgbXVsdGlwbGUgb2YgNC4KKyAgICBBU1NFUlQoIShh
cnJheS5idWZTaXplICUgNCkpOwogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIDo6Z2xVbmlmb3JtTWF0cml4MmZ2KGxvY2F0aW9uLCBzaXplLCB0
cmFuc3Bvc2UsIGFycmF5KTsKKyAgICA6OmdsVW5pZm9ybU1hdHJpeDJmdihsb2NhdGlvbiwgYXJy
YXkuYnVmU2l6ZSAvIDQsIHRyYW5zcG9zZSwgYXJyYXkuZGF0YSk7CiB9CiAKLXZvaWQgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXgzZnYoR0NHTGludCBsb2NhdGlvbiwgR0NH
THNpemVpIHNpemUsIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiBhcnJh
eSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXgzZnYoR0NHTGlu
dCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxv
YXQ+IGFycmF5KQogewotICAgIC8vIEZJWE1FOiBsZW5ndGggbmVlZHMgdG8gYmUgYSBtdWx0aXBs
ZSBvZiA5LgorICAgIEFTU0VSVCghKGFycmF5LmJ1ZlNpemUgJSA5KSk7CiAgICAgaWYgKCFtYWtl
Q29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgOjpnbFVuaWZvcm1NYXRy
aXgzZnYobG9jYXRpb24sIHNpemUsIHRyYW5zcG9zZSwgYXJyYXkpOworICAgIDo6Z2xVbmlmb3Jt
TWF0cml4M2Z2KGxvY2F0aW9uLCBhcnJheS5idWZTaXplIC8gOSwgdHJhbnNwb3NlLCBhcnJheS5k
YXRhKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybU1hdHJpeDRm
dihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgc2l6ZSwgR0NHTGJvb2xlYW4gdHJhbnNwb3Nl
LCBjb25zdCBHQ0dMZmxvYXQqIGFycmF5KQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
dW5pZm9ybU1hdHJpeDRmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2Us
IEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gYXJyYXkpCiB7Ci0gICAgLy8gRklYTUU6IGxlbmd0
aCBuZWVkcyB0byBiZSBhIG11bHRpcGxlIG9mIDE2LgorICAgIEFTU0VSVCghKGFycmF5LmJ1ZlNp
emUgJSAxNikpOwogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIDo6Z2xVbmlmb3JtTWF0cml4NGZ2KGxvY2F0aW9uLCBzaXplLCB0cmFuc3Bvc2Us
IGFycmF5KTsKKyAgICA6OmdsVW5pZm9ybU1hdHJpeDRmdihsb2NhdGlvbiwgYXJyYXkuYnVmU2l6
ZSAvIDE2LCB0cmFuc3Bvc2UsIGFycmF5LmRhdGEpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjp1c2VQcm9ncmFtKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSkKQEAgLTE1OTQs
MTIgKzE1OTQsMTIgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmli
MWYoR0NHTHVpbnQgaW5kZXgsIEdDR0xmbG9hdCB2MCkKICAgICA6OmdsVmVydGV4QXR0cmliMWYo
aW5kZXgsIHYwKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0
cmliMWZ2KEdDR0x1aW50IGluZGV4LCBjb25zdCBHQ0dMZmxvYXQqIGFycmF5KQordm9pZCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliMWZ2KEdDR0x1aW50IGluZGV4LCBHQ0dM
U3Bhbjxjb25zdCBHQ0dMZmxvYXQsIDE+IGFycmF5KQogewogICAgIGlmICghbWFrZUNvbnRleHRD
dXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIDo6Z2xWZXJ0ZXhBdHRyaWIxZnYoaW5k
ZXgsIGFycmF5KTsKKyAgICA6OmdsVmVydGV4QXR0cmliMWZ2KGluZGV4LCBhcnJheS5kYXRhKTsK
IH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliMmYoR0NHTHVp
bnQgaW5kZXgsIEdDR0xmbG9hdCB2MCwgR0NHTGZsb2F0IHYxKQpAQCAtMTYxMCwxMiArMTYxMCwx
MiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2ZXJ0ZXhBdHRyaWIyZihHQ0dMdWlu
dCBpbmRleCwgR0NHTGZsb2F0IHYwLCBHQ0dMZgogICAgIDo6Z2xWZXJ0ZXhBdHRyaWIyZihpbmRl
eCwgdjAsIHYxKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0
cmliMmZ2KEdDR0x1aW50IGluZGV4LCBjb25zdCBHQ0dMZmxvYXQqIGFycmF5KQordm9pZCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliMmZ2KEdDR0x1aW50IGluZGV4LCBHQ0dM
U3Bhbjxjb25zdCBHQ0dMZmxvYXQsIDI+IGFycmF5KQogewogICAgIGlmICghbWFrZUNvbnRleHRD
dXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIDo6Z2xWZXJ0ZXhBdHRyaWIyZnYoaW5k
ZXgsIGFycmF5KTsKKyAgICA6OmdsVmVydGV4QXR0cmliMmZ2KGluZGV4LCBhcnJheS5kYXRhKTsK
IH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliM2YoR0NHTHVp
bnQgaW5kZXgsIEdDR0xmbG9hdCB2MCwgR0NHTGZsb2F0IHYxLCBHQ0dMZmxvYXQgdjIpCkBAIC0x
NjI2LDEyICsxNjI2LDEyIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZlcnRleEF0
dHJpYjNmKEdDR0x1aW50IGluZGV4LCBHQ0dMZmxvYXQgdjAsIEdDR0xmCiAgICAgOjpnbFZlcnRl
eEF0dHJpYjNmKGluZGV4LCB2MCwgdjEsIHYyKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6dmVydGV4QXR0cmliM2Z2KEdDR0x1aW50IGluZGV4LCBjb25zdCBHQ0dMZmxvYXQq
IGFycmF5KQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliM2Z2KEdD
R0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQsIDM+IGFycmF5KQogewogICAg
IGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIDo6Z2xW
ZXJ0ZXhBdHRyaWIzZnYoaW5kZXgsIGFycmF5KTsKKyAgICA6OmdsVmVydGV4QXR0cmliM2Z2KGlu
ZGV4LCBhcnJheS5kYXRhKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVy
dGV4QXR0cmliNGYoR0NHTHVpbnQgaW5kZXgsIEdDR0xmbG9hdCB2MCwgR0NHTGZsb2F0IHYxLCBH
Q0dMZmxvYXQgdjIsIEdDR0xmbG9hdCB2MykKQEAgLTE2NDIsMTIgKzE2NDIsMTIgQEAgdm9pZCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliNGYoR0NHTHVpbnQgaW5kZXgsIEdD
R0xmbG9hdCB2MCwgR0NHTGYKICAgICA6OmdsVmVydGV4QXR0cmliNGYoaW5kZXgsIHYwLCB2MSwg
djIsIHYzKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmli
NGZ2KEdDR0x1aW50IGluZGV4LCBjb25zdCBHQ0dMZmxvYXQqIGFycmF5KQordm9pZCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliNGZ2KEdDR0x1aW50IGluZGV4LCBHQ0dMU3Bh
bjxjb25zdCBHQ0dMZmxvYXQsIDQ+IGFycmF5KQogewogICAgIGlmICghbWFrZUNvbnRleHRDdXJy
ZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIDo6Z2xWZXJ0ZXhBdHRyaWI0ZnYoaW5kZXgs
IGFycmF5KTsKKyAgICA6OmdsVmVydGV4QXR0cmliNGZ2KGluZGV4LCBhcnJheS5kYXRhKTsKIH0K
IAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliUG9pbnRlcihHQ0dM
dWludCBpbmRleCwgR0NHTGludCBzaXplLCBHQ0dMZW51bSB0eXBlLCBHQ0dMYm9vbGVhbiBub3Jt
YWxpemVkLCBHQ0dMc2l6ZWkgc3RyaWRlLCBHQ0dMaW50cHRyIG9mZnNldCkKQEAgLTIwNTUsNyAr
MjA1NSw3IEBAIEdDR0xzaXplaXB0ciBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VmVydGV4
QXR0cmliT2Zmc2V0KEdDR0x1aW50IGluZGV4LCBHQ0dMCiAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PEdDR0xzaXplaXB0cj4ocmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4ocG9pbnRlcikpOwogfQog
Ci12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp0ZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRh
cmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2ZmLCBHQ0dMaW50IHlvZmYsIEdDR0xzaXpl
aSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBl
LCBjb25zdCB2b2lkKiBwaXhlbHMpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp0ZXhT
dWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2ZmLCBH
Q0dMaW50IHlvZmYsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0g
Zm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gcGl4ZWxzKQog
ewogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTIw
ODMsMjUgKzIwODMsMjUgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dGV4U3ViSW1h
Z2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0wKICAgICB9CiAKICAgICAv
LyBGSVhNRTogd2Ugd2lsbCBuZWVkIHRvIGRlYWwgd2l0aCBQaXhlbFN0b3JlIHBhcmFtcyB3aGVu
IGRlYWxpbmcgd2l0aCBpbWFnZSBidWZmZXJzIHRoYXQgZGlmZmVyIGZyb20gdGhlIHN1YmltYWdl
IHNpemUuCi0gICAgOjpnbFRleFN1YkltYWdlMkQodGFyZ2V0LCBsZXZlbCwgeG9mZiwgeW9mZiwg
d2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBwaXhlbHMpOworICAgIDo6Z2xUZXhTdWJJbWFn
ZTJEKHRhcmdldCwgbGV2ZWwsIHhvZmYsIHlvZmYsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlw
ZSwgcGl4ZWxzLmRhdGEpOwogICAgIG1fc3RhdGUudGV4dHVyZVNlZWRDb3VudC5hZGQobV9zdGF0
ZS5jdXJyZW50Qm91bmRUZXh0dXJlKCkpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpjb21wcmVzc2VkVGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWws
IEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWln
aHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBjb25zdCB2b2lkKiBkYXRh
KQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y29tcHJlc3NlZFRleEltYWdlMkQoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NH
THNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTHNpemVp
IGltYWdlU2l6ZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEpCiB7CiAgICAgaWYgKCFt
YWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgOjpnbENvbXByZXNz
ZWRUZXhJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0
LCBib3JkZXIsIGltYWdlU2l6ZSwgZGF0YSk7CisgICAgOjpnbENvbXByZXNzZWRUZXhJbWFnZTJE
KHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIsIGlt
YWdlU2l6ZSwgZGF0YS5kYXRhKTsKICAgICBtX3N0YXRlLnRleHR1cmVTZWVkQ291bnQuYWRkKG1f
c3RhdGUuY3VycmVudEJvdW5kVGV4dHVyZSgpKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6Y29tcHJlc3NlZFRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50
IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRo
LCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFnZVNpemUs
IGNvbnN0IHZvaWQqIGRhdGEpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjb21wcmVz
c2VkVGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQg
eG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWln
aHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTFNwYW48Y29uc3Qg
R0NHTHZvaWQ+IGRhdGEpCiB7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgOjpnbENvbXByZXNzZWRUZXhTdWJJbWFnZTJEKHRhcmdldCwgbGV2
ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgaW1hZ2VTaXplLCBk
YXRhKTsKKyAgICA6OmdsQ29tcHJlc3NlZFRleFN1YkltYWdlMkQodGFyZ2V0LCBsZXZlbCwgeG9m
ZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCBpbWFnZVNpemUsIGRhdGEuZGF0
YSk7CiAgICAgbV9zdGF0ZS50ZXh0dXJlU2VlZENvdW50LmFkZChtX3N0YXRlLmN1cnJlbnRCb3Vu
ZFRleHR1cmUoKSk7CiB9CiAKQEAgLTIzOTUsMTcgKzIzOTUsMTUgQEAgdm9pZCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6ZnJhbWVidWZmZXJUZXh0dXJlTGF5ZXIoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMZW51bQogICAgIFVOVVNFRF9QQVJBTShsYXllcik7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OmludmFsaWRhdGVGcmFtZWJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQsIEdDR0xz
aXplaSBudW1BdHRhY2htZW50cywgY29uc3QgR0NHTGVudW0qIGF0dGFjaG1lbnRzKQordm9pZCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6aW52YWxpZGF0ZUZyYW1lYnVmZmVyKEdDR0xlbnVtIHRh
cmdldCwgR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+IGF0dGFjaG1lbnRzKQogewogICAgIFVOVVNF
RF9QQVJBTSh0YXJnZXQpOwotICAgIFVOVVNFRF9QQVJBTShudW1BdHRhY2htZW50cyk7CiAgICAg
VU5VU0VEX1BBUkFNKGF0dGFjaG1lbnRzKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6aW52YWxpZGF0ZVN1YkZyYW1lYnVmZmVyKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVp
IG51bUF0dGFjaG1lbnRzLCBjb25zdCBHQ0dMZW51bSogYXR0YWNobWVudHMsIEdDR0xpbnQgeCwg
R0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpCit2b2lkIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjppbnZhbGlkYXRlU3ViRnJhbWVidWZmZXIoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4gYXR0YWNobWVudHMsIEdDR0xpbnQgeCwgR0NH
TGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpCiB7CiAgICAgVU5VU0VE
X1BBUkFNKHRhcmdldCk7Ci0gICAgVU5VU0VEX1BBUkFNKG51bUF0dGFjaG1lbnRzKTsKICAgICBV
TlVTRURfUEFSQU0oYXR0YWNobWVudHMpOwogICAgIFVOVVNFRF9QQVJBTSh4KTsKICAgICBVTlVT
RURfUEFSQU0oeSk7CkBAIC0yNTI5LDkwICsyNTI3LDcwIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OnVuaWZvcm00dWkoR0NHTGludCBsb2NhdGlvbiwgR0NHTHVpbnQgdjAsIEdDR0x1
aW50CiAgICAgVU5VU0VEX1BBUkFNKHYzKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6dW5pZm9ybTF1aXYoR0NHTGludCBsb2NhdGlvbiwgY29uc3QgR0NHTHVpbnQqIGRhdGEs
IEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQordm9pZCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6dW5pZm9ybTF1aXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29u
c3QgR0NHTHVpbnQ+IGRhdGEpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGxvY2F0aW9uKTsKICAgICBV
TlVTRURfUEFSQU0oZGF0YSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY09mZnNldCk7Ci0gICAgVU5V
U0VEX1BBUkFNKHNyY0xlbmd0aCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OnVuaWZvcm0ydWl2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0x1aW50KiBkYXRhLCBHQ0dM
dWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OnVuaWZvcm0ydWl2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdD
R0x1aW50PiBkYXRhKQogewogICAgIFVOVVNFRF9QQVJBTShsb2NhdGlvbik7CiAgICAgVU5VU0VE
X1BBUkFNKGRhdGEpOwotICAgIFVOVVNFRF9QQVJBTShzcmNPZmZzZXQpOwotICAgIFVOVVNFRF9Q
QVJBTShzcmNMZW5ndGgpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlm
b3JtM3VpdihHQ0dMaW50IGxvY2F0aW9uLCBjb25zdCBHQ0dMdWludCogZGF0YSwgR0NHTHVpbnQg
c3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjp1bmlmb3JtM3VpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdWlu
dD4gZGF0YSkKIHsKICAgICBVTlVTRURfUEFSQU0obG9jYXRpb24pOwogICAgIFVOVVNFRF9QQVJB
TShkYXRhKTsKLSAgICBVTlVTRURfUEFSQU0oc3JjT2Zmc2V0KTsKLSAgICBVTlVTRURfUEFSQU0o
c3JjTGVuZ3RoKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTR1
aXYoR0NHTGludCBsb2NhdGlvbiwgY29uc3QgR0NHTHVpbnQqIGRhdGEsIEdDR0x1aW50IHNyY09m
ZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
dW5pZm9ybTR1aXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTHVpbnQ+IGRh
dGEpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGxvY2F0aW9uKTsKICAgICBVTlVTRURfUEFSQU0oZGF0
YSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY09mZnNldCk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY0xl
bmd0aCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXgy
eDNmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xm
bG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCit2b2lk
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4MngzZnYoR0NHTGludCBsb2Nh
dGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRh
dGEpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGxvY2F0aW9uKTsKICAgICBVTlVTRURfUEFSQU0odHJh
bnNwb3NlKTsKICAgICBVTlVTRURfUEFSQU0oZGF0YSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY09m
ZnNldCk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY0xlbmd0aCk7CiB9CiAKLXZvaWQgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXgzeDJmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dM
Ym9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zm
c2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1
bmlmb3JtTWF0cml4M3gyZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3Nl
LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGxv
Y2F0aW9uKTsKICAgICBVTlVTRURfUEFSQU0odHJhbnNwb3NlKTsKICAgICBVTlVTRURfUEFSQU0o
ZGF0YSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY09mZnNldCk7Ci0gICAgVU5VU0VEX1BBUkFNKHNy
Y0xlbmd0aCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRy
aXgyeDRmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdD
R0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCit2
b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4Mng0ZnYoR0NHTGludCBs
b2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+
IGRhdGEpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGxvY2F0aW9uKTsKICAgICBVTlVTRURfUEFSQU0o
dHJhbnNwb3NlKTsKICAgICBVTlVTRURfUEFSQU0oZGF0YSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNy
Y09mZnNldCk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY0xlbmd0aCk7CiB9CiAKLXZvaWQgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXg0eDJmdihHQ0dMaW50IGxvY2F0aW9uLCBH
Q0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3Jj
T2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
Ojp1bmlmb3JtTWF0cml4NHgyZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNw
b3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEpCiB7CiAgICAgVU5VU0VEX1BBUkFN
KGxvY2F0aW9uKTsKICAgICBVTlVTRURfUEFSQU0odHJhbnNwb3NlKTsKICAgICBVTlVTRURfUEFS
QU0oZGF0YSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY09mZnNldCk7Ci0gICAgVU5VU0VEX1BBUkFN
KHNyY0xlbmd0aCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1N
YXRyaXgzeDRmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0
IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgp
Cit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4M3g0ZnYoR0NHTGlu
dCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxv
YXQ+IGRhdGEpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGxvY2F0aW9uKTsKICAgICBVTlVTRURfUEFS
QU0odHJhbnNwb3NlKTsKICAgICBVTlVTRURfUEFSQU0oZGF0YSk7Ci0gICAgVU5VU0VEX1BBUkFN
KHNyY09mZnNldCk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY0xlbmd0aCk7CiB9CiAKLXZvaWQgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXg0eDNmdihHQ0dMaW50IGxvY2F0aW9u
LCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQg
c3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjp1bmlmb3JtTWF0cml4NHgzZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJh
bnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEpCiB7CiAgICAgVU5VU0VEX1BB
UkFNKGxvY2F0aW9uKTsKICAgICBVTlVTRURfUEFSQU0odHJhbnNwb3NlKTsKICAgICBVTlVTRURf
UEFSQU0oZGF0YSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY09mZnNldCk7Ci0gICAgVU5VU0VEX1BB
UkFNKHNyY0xlbmd0aCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZlcnRl
eEF0dHJpYkk0aShHQ0dMdWludCBpbmRleCwgR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xpbnQg
eiwgR0NHTGludCB3KQpAQCAtMjYyNCw3ICsyNjAyLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6dmVydGV4QXR0cmliSTRpKEdDR0x1aW50IGluZGV4LCBHQ0dMaW50IHgsIEdDR0xp
bnQKICAgICBVTlVTRURfUEFSQU0odyk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OnZlcnRleEF0dHJpYkk0aXYoR0NHTHVpbnQgaW5kZXgsIGNvbnN0IEdDR0xpbnQqIHZhbHVl
cykKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYkk0aXYoR0NHTHVp
bnQgaW5kZXgsIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQsIDQ+IHZhbHVlcykKIHsKICAgICBVTlVT
RURfUEFSQU0oaW5kZXgpOwogICAgIFVOVVNFRF9QQVJBTSh2YWx1ZXMpOwpAQCAtMjYzOSw3ICsy
NjE3LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliSTR1aShH
Q0dMdWludCBpbmRleCwgR0NHTHVpbnQgeCwgR0NHTHUKICAgICBVTlVTRURfUEFSQU0odyk7CiB9
CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYkk0dWl2KEdDR0x1
aW50IGluZGV4LCBjb25zdCBHQ0dMdWludCogdmFsdWVzKQordm9pZCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6dmVydGV4QXR0cmliSTR1aXYoR0NHTHVpbnQgaW5kZXgsIEdDR0xTcGFuPGNvbnN0
IEdDR0x1aW50LCA0PiB2YWx1ZXMpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGluZGV4KTsKICAgICBV
TlVTRURfUEFSQU0odmFsdWVzKTsKQEAgLTI2NjQsMzQgKzI2NDIsMzAgQEAgdm9pZCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6ZHJhd1JhbmdlRWxlbWVudHMoR0NHTGVudW0gbW9kZSwgR0NHTHVp
bnQgc3RhcnQsIEcKICAgICBVTlVTRURfUEFSQU0ob2Zmc2V0KTsKIH0KIAotdm9pZCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6ZHJhd0J1ZmZlcnMoR0NHTHNpemVpIG4sIGNvbnN0IEdDR0xlbnVt
KiBidWZzKQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6ZHJhd0J1ZmZlcnMoR0NHTFNw
YW48Y29uc3QgR0NHTGVudW0+IGJ1ZnMpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKG4pOwogICAgIFVO
VVNFRF9QQVJBTShidWZzKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y2xl
YXJCdWZmZXJpdihHQ0dMZW51bSBidWZmZXIsIEdDR0xpbnQgZHJhd2J1ZmZlciwgY29uc3QgR0NH
TGludCogdmFsdWVzLCBHQ0dMdWludCBzcmNPZmZzZXQpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpjbGVhckJ1ZmZlcml2KEdDR0xlbnVtIGJ1ZmZlciwgR0NHTGludCBkcmF3YnVmZmVy
LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50PiB2YWx1ZXMpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGJ1
ZmZlcik7CiAgICAgVU5VU0VEX1BBUkFNKGRyYXdidWZmZXIpOwogICAgIFVOVVNFRF9QQVJBTSh2
YWx1ZXMpOwotICAgIFVOVVNFRF9QQVJBTShzcmNPZmZzZXQpOwogfQogCi12b2lkIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpjbGVhckJ1ZmZlcnVpdihHQ0dMZW51bSBidWZmZXIsIEdDR0xpbnQg
ZHJhd2J1ZmZlciwgY29uc3QgR0NHTHVpbnQqIHZhbHVlcywgR0NHTHVpbnQgc3JjT2Zmc2V0KQor
dm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y2xlYXJCdWZmZXJ1aXYoR0NHTGVudW0gYnVm
ZmVyLCBHQ0dMaW50IGRyYXdidWZmZXIsIEdDR0xTcGFuPGNvbnN0IEdDR0x1aW50PiB2YWx1ZXMp
CiB7CiAgICAgVU5VU0VEX1BBUkFNKGJ1ZmZlcik7CiAgICAgVU5VU0VEX1BBUkFNKGRyYXdidWZm
ZXIpOwogICAgIFVOVVNFRF9QQVJBTSh2YWx1ZXMpOwotICAgIFVOVVNFRF9QQVJBTShzcmNPZmZz
ZXQpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjbGVhckJ1ZmZlcmZ2KEdD
R0xlbnVtIGJ1ZmZlciwgR0NHTGludCBkcmF3YnVmZmVyLCBjb25zdCBHQ0dMZmxvYXQqIHZhbHVl
cywgR0NHTHVpbnQgc3JjT2Zmc2V0KQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y2xl
YXJCdWZmZXJmdihHQ0dMZW51bSBidWZmZXIsIEdDR0xpbnQgZHJhd2J1ZmZlciwgR0NHTFNwYW48
Y29uc3QgR0NHTGZsb2F0PiB2YWx1ZXMpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGJ1ZmZlcik7CiAg
ICAgVU5VU0VEX1BBUkFNKGRyYXdidWZmZXIpOwogICAgIFVOVVNFRF9QQVJBTSh2YWx1ZXMpOwot
ICAgIFVOVVNFRF9QQVJBTShzcmNPZmZzZXQpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpjbGVhckJ1ZmZlcmZpKEdDR0xlbnVtIGJ1ZmZlciwgR0NHTGludCBkcmF3YnVmZmVy
LCBHQ0dMZmxvYXQgZGVwdGgsIEdDR0xpbnQgc3RlbmNpbCkKQEAgLTI5NjksMTc4ICsyOTQzLDgz
IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1CbG9ja0JpbmRpbmcoUGxh
dGZvcm1HTE9iamVjdCwgR0NHTHVpbnQsIEdDCiB9CiAjZW5kaWYKIAotdm9pZCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6Y29tcHJlc3NlZFRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
aW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dM
c2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTGlu
dHB0ciBvZmZzZXQpCi17Ci0gICAgVU5VU0VEX1BBUkFNKHRhcmdldCk7Ci0gICAgVU5VU0VEX1BB
UkFNKGxldmVsKTsKLSAgICBVTlVTRURfUEFSQU0oaW50ZXJuYWxmb3JtYXQpOwotICAgIFVOVVNF
RF9QQVJBTSh3aWR0aCk7Ci0gICAgVU5VU0VEX1BBUkFNKGhlaWdodCk7Ci0gICAgVU5VU0VEX1BB
UkFNKGJvcmRlcik7Ci0gICAgVU5VU0VEX1BBUkFNKGltYWdlU2l6ZSk7Ci0gICAgVU5VU0VEX1BB
UkFNKG9mZnNldCk7Ci19Ci0KLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNvbXByZXNz
ZWRUZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50
ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBi
b3JkZXIsIGNvbnN0IHZvaWQqIHNyY0RhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQg
c3JjTGVuZ3RoT3ZlcnJpZGUpCi17Ci0gICAgVU5VU0VEX1BBUkFNKHRhcmdldCk7Ci0gICAgVU5V
U0VEX1BBUkFNKGxldmVsKTsKLSAgICBVTlVTRURfUEFSQU0oaW50ZXJuYWxmb3JtYXQpOwotICAg
IFVOVVNFRF9QQVJBTSh3aWR0aCk7Ci0gICAgVU5VU0VEX1BBUkFNKGhlaWdodCk7Ci0gICAgVU5V
U0VEX1BBUkFNKGJvcmRlcik7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY0RhdGEpOwotICAgIFVOVVNF
RF9QQVJBTShzcmNPZmZzZXQpOwotICAgIFVOVVNFRF9QQVJBTShzcmNMZW5ndGhPdmVycmlkZSk7
Ci19Ci0KLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNvbXByZXNzZWRUZXhTdWJJbWFn
ZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dM
aW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0g
Zm9ybWF0LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMaW50cHRyIG9mZnNldCkKK3ZvaWQgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRQaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHksIEdD
R0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51
bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCkKIHsKLSAgICBVTlVTRURfUEFSQU0odGFyZ2V0KTsK
LSAgICBVTlVTRURfUEFSQU0obGV2ZWwpOwotICAgIFVOVVNFRF9QQVJBTSh4b2Zmc2V0KTsKLSAg
ICBVTlVTRURfUEFSQU0oeW9mZnNldCk7CisgICAgVU5VU0VEX1BBUkFNKHgpOworICAgIFVOVVNF
RF9QQVJBTSh5KTsKICAgICBVTlVTRURfUEFSQU0od2lkdGgpOwogICAgIFVOVVNFRF9QQVJBTSho
ZWlnaHQpOwogICAgIFVOVVNFRF9QQVJBTShmb3JtYXQpOwotICAgIFVOVVNFRF9QQVJBTShpbWFn
ZVNpemUpOworICAgIFVOVVNFRF9QQVJBTSh0eXBlKTsKICAgICBVTlVTRURfUEFSQU0ob2Zmc2V0
KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y29tcHJlc3NlZFRleFN1Yklt
YWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdD
R0xpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51
bSBmb3JtYXQsIGNvbnN0IHZvaWQqIHNyY0RhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVp
bnQgc3JjTGVuZ3RoT3ZlcnJpZGUpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFk
UGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBo
ZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgY29uc3Qgdm9pZCogZHN0RGF0
YSwgR0NHTHVpbnQgZHN0T2Zmc2V0KQogewotICAgIFVOVVNFRF9QQVJBTSh0YXJnZXQpOwotICAg
IFVOVVNFRF9QQVJBTShsZXZlbCk7Ci0gICAgVU5VU0VEX1BBUkFNKHhvZmZzZXQpOwotICAgIFVO
VVNFRF9QQVJBTSh5b2Zmc2V0KTsKKyAgICBVTlVTRURfUEFSQU0oeCk7CisgICAgVU5VU0VEX1BB
UkFNKHkpOwogICAgIFVOVVNFRF9QQVJBTSh3aWR0aCk7CiAgICAgVU5VU0VEX1BBUkFNKGhlaWdo
dCk7CiAgICAgVU5VU0VEX1BBUkFNKGZvcm1hdCk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY0RhdGEp
OwotICAgIFVOVVNFRF9QQVJBTShzcmNPZmZzZXQpOwotICAgIFVOVVNFRF9QQVJBTShzcmNMZW5n
dGhPdmVycmlkZSk7Ci19Ci0KLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0x
ZnYoR0NHTGludCBsb2NhdGlvbiwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNP
ZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKLXsKLSAgICBVTlVTRURfUEFSQU0obG9jYXRpb24p
OwotICAgIFVOVVNFRF9QQVJBTShkYXRhKTsKLSAgICBVTlVTRURfUEFSQU0oc3JjT2Zmc2V0KTsK
LSAgICBVTlVTRURfUEFSQU0oc3JjTGVuZ3RoKTsKKyAgICBVTlVTRURfUEFSQU0odHlwZSk7Cisg
ICAgVU5VU0VEX1BBUkFNKGRzdERhdGEpOworICAgIFVOVVNFRF9QQVJBTShkc3RPZmZzZXQpOwog
fQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMmZ2KEdDR0xpbnQgbG9j
YXRpb24sIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWlu
dCBzcmNMZW5ndGgpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRBY3RpdmVVbmlm
b3JtQmxvY2tpdihHQ0dMdWludCBwcm9ncmFtLCBHQ0dMdWludCB1bmlmb3JtQmxvY2tJbmRleCwg
R0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xpbnQ+IHBhcmFtcykKIHsKLSAgICBVTlVTRURf
UEFSQU0obG9jYXRpb24pOwotICAgIFVOVVNFRF9QQVJBTShkYXRhKTsKLSAgICBVTlVTRURfUEFS
QU0oc3JjT2Zmc2V0KTsKLSAgICBVTlVTRURfUEFSQU0oc3JjTGVuZ3RoKTsKKyAgICBVTlVTRURf
UEFSQU0ocHJvZ3JhbSk7CisgICAgVU5VU0VEX1BBUkFNKHVuaWZvcm1CbG9ja0luZGV4KTsKKyAg
ICBVTlVTRURfUEFSQU0ocG5hbWUpOworICAgIFVOVVNFRF9QQVJBTShwYXJhbXMpOwogfQogCi12
b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtM2Z2KEdDR0xpbnQgbG9jYXRpb24s
IGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNM
ZW5ndGgpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp0ZXhJbWFnZTJEKEdDR0xlbnVt
LCBHQ0dMaW50LCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWksIEdDR0xpbnQsIEdDR0xl
bnVtLCBHQ0dMZW51bSAsIEdDR0xpbnRwdHIpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGxvY2F0aW9u
KTsKLSAgICBVTlVTRURfUEFSQU0oZGF0YSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY09mZnNldCk7
Ci0gICAgVU5VU0VEX1BBUkFNKHNyY0xlbmd0aCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OnVuaWZvcm00ZnYoR0NHTGludCBsb2NhdGlvbiwgY29uc3QgR0NHTGZsb2F0KiBk
YXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKK3ZvaWQgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OnRleFN1YkltYWdlMkQoR0NHTGVudW0sIEdDR0xpbnQsIEdDR0xp
bnQsIEdDR0xpbnQsIEdDR0xzaXplaSwgR0NHTHNpemVpLCBHQ0dMZW51bSwgR0NHTGVudW0sIEdD
R0xpbnRwdHIpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGxvY2F0aW9uKTsKLSAgICBVTlVTRURfUEFS
QU0oZGF0YSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY09mZnNldCk7Ci0gICAgVU5VU0VEX1BBUkFN
KHNyY0xlbmd0aCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0x
aXYoR0NHTGludCBsb2NhdGlvbiwgY29uc3QgR0NHTGludCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zm
c2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpj
b21wcmVzc2VkVGV4SW1hZ2UyRChHQ0dMZW51bSwgR0NHTGludCwgR0NHTGVudW0sIEdDR0xzaXpl
aSwgR0NHTHNpemVpLCBHQ0dMaW50LCBHQ0dMc2l6ZWksIEdDR0xpbnRwdHIpCiB7Ci0gICAgVU5V
U0VEX1BBUkFNKGxvY2F0aW9uKTsKLSAgICBVTlVTRURfUEFSQU0oZGF0YSk7Ci0gICAgVU5VU0VE
X1BBUkFNKHNyY09mZnNldCk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY0xlbmd0aCk7CiB9CiAKLXZv
aWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0yaXYoR0NHTGludCBsb2NhdGlvbiwg
Y29uc3QgR0NHTGludCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5n
dGgpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjb21wcmVzc2VkVGV4U3ViSW1hZ2Uy
RChHQ0dMZW51bSwgR0NHTGludCwgR0NHTGludCwgR0NHTGludCwgR0NHTHNpemVpLCBHQ0dMc2l6
ZWksIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xpbnRwdHIpCiB7Ci0gICAgVU5VU0VEX1BBUkFN
KGxvY2F0aW9uKTsKLSAgICBVTlVTRURfUEFSQU0oZGF0YSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNy
Y09mZnNldCk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY0xlbmd0aCk7CiB9CiAKLXZvaWQgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0zaXYoR0NHTGludCBsb2NhdGlvbiwgY29uc3QgR0NH
TGludCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCit2b2lk
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp0ZXhJbWFnZTNEKEdDR0xlbnVtLCBHQ0dMaW50LCBH
Q0dMaW50LCBHQ0dMc2l6ZWksIEdDR0xzaXplaSwgR0NHTHNpemVpLCBHQ0dMaW50LCBHQ0dMZW51
bSwgR0NHTGVudW0sIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPikKIHsKLSAgICBVTlVTRURfUEFS
QU0obG9jYXRpb24pOwotICAgIFVOVVNFRF9QQVJBTShkYXRhKTsKLSAgICBVTlVTRURfUEFSQU0o
c3JjT2Zmc2V0KTsKLSAgICBVTlVTRURfUEFSQU0oc3JjTGVuZ3RoKTsKIH0KIAotdm9pZCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTRpdihHQ0dMaW50IGxvY2F0aW9uLCBjb25zdCBH
Q0dMaW50KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKK3Zv
aWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnRleEltYWdlM0QoR0NHTGVudW0sIEdDR0xpbnQs
IEdDR0xpbnQsIEdDR0xzaXplaSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWksIEdDR0xpbnQsIEdDR0xl
bnVtLCBHQ0dMZW51bSwgR0NHTGludHB0cikKIHsKLSAgICBVTlVTRURfUEFSQU0obG9jYXRpb24p
OwotICAgIFVOVVNFRF9QQVJBTShkYXRhKTsKLSAgICBVTlVTRURfUEFSQU0oc3JjT2Zmc2V0KTsK
LSAgICBVTlVTRURfUEFSQU0oc3JjTGVuZ3RoKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6dW5pZm9ybU1hdHJpeDJmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0
cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dM
dWludCBzcmNMZW5ndGgpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp0ZXhTdWJJbWFn
ZTNEKEdDR0xlbnVtLCBHQ0dMaW50LCBHQ0dMaW50LCBHQ0dMaW50LCBHQ0dMaW50LCBHQ0dMc2l6
ZWksIEdDR0xzaXplaSwgR0NHTHNpemVpLCBHQ0dMZW51bSwgR0NHTGVudW0sIEdDR0xTcGFuPGNv
bnN0IEdDR0x2b2lkPikKIHsKLSAgICBVTlVTRURfUEFSQU0obG9jYXRpb24pOwotICAgIFVOVVNF
RF9QQVJBTSh0cmFuc3Bvc2UpOwotICAgIFVOVVNFRF9QQVJBTShkYXRhKTsKLSAgICBVTlVTRURf
UEFSQU0oc3JjT2Zmc2V0KTsKLSAgICBVTlVTRURfUEFSQU0oc3JjTGVuZ3RoKTsKIH0KIAotdm9p
ZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybU1hdHJpeDNmdihHQ0dMaW50IGxvY2F0
aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVp
bnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjp0ZXhTdWJJbWFnZTNEKEdDR0xlbnVtLCBHQ0dMaW50LCBHQ0dMaW50LCBHQ0dMaW50
LCBHQ0dMaW50LCBHQ0dMc2l6ZWksIEdDR0xzaXplaSwgR0NHTHNpemVpLCBHQ0dMZW51bSwgR0NH
TGVudW0sIEdDR0xpbnRwdHIpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGxvY2F0aW9uKTsKLSAgICBV
TlVTRURfUEFSQU0odHJhbnNwb3NlKTsKLSAgICBVTlVTRURfUEFSQU0oZGF0YSk7Ci0gICAgVU5V
U0VEX1BBUkFNKHNyY09mZnNldCk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY0xlbmd0aCk7CiB9CiAK
LXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXg0ZnYoR0NHTGludCBs
b2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdD
R0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQordm9pZCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6Y29tcHJlc3NlZFRleEltYWdlM0QoR0NHTGVudW0sIEdDR0xpbnQsIEdDR0xl
bnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSwgR0NHTHNpemVpLCBHQ0dMaW50LCBHQ0dMc2l6ZWks
IEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPikKIHsKLSAgICBVTlVTRURfUEFSQU0obG9jYXRpb24p
OwotICAgIFVOVVNFRF9QQVJBTSh0cmFuc3Bvc2UpOwotICAgIFVOVVNFRF9QQVJBTShkYXRhKTsK
LSAgICBVTlVTRURfUEFSQU0oc3JjT2Zmc2V0KTsKLSAgICBVTlVTRURfUEFSQU0oc3JjTGVuZ3Ro
KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZFBpeGVscyhHQ0dMaW50
IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51
bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KQordm9pZCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6Y29tcHJlc3NlZFRleEltYWdlM0QoR0NHTGVudW0sIEdDR0xpbnQs
IEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSwgR0NHTHNpemVpLCBHQ0dMaW50LCBHQ0dM
c2l6ZWksIEdDR0xpbnRwdHIpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHgpOwotICAgIFVOVVNFRF9Q
QVJBTSh5KTsKLSAgICBVTlVTRURfUEFSQU0od2lkdGgpOwotICAgIFVOVVNFRF9QQVJBTShoZWln
aHQpOwotICAgIFVOVVNFRF9QQVJBTShmb3JtYXQpOwotICAgIFVOVVNFRF9QQVJBTSh0eXBlKTsK
LSAgICBVTlVTRURfUEFSQU0ob2Zmc2V0KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6cmVhZFBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBH
Q0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIGNvbnN0IHZv
aWQqIGRzdERhdGEsIEdDR0x1aW50IGRzdE9mZnNldCkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OmNvbXByZXNzZWRUZXhTdWJJbWFnZTNEKEdDR0xlbnVtLCBHQ0dMaW50LCBHQ0dMaW50
LCBHQ0dMaW50LCBHQ0dMaW50LCBHQ0dMc2l6ZWksIEdDR0xzaXplaSwgR0NHTHNpemVpLCBHQ0dM
ZW51bSwgR0NHTHNpemVpLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4pCiB7Ci0gICAgVU5VU0VE
X1BBUkFNKHgpOwotICAgIFVOVVNFRF9QQVJBTSh5KTsKLSAgICBVTlVTRURfUEFSQU0od2lkdGgp
OwotICAgIFVOVVNFRF9QQVJBTShoZWlnaHQpOwotICAgIFVOVVNFRF9QQVJBTShmb3JtYXQpOwot
ICAgIFVOVVNFRF9QQVJBTSh0eXBlKTsKLSAgICBVTlVTRURfUEFSQU0oZHN0RGF0YSk7Ci0gICAg
VU5VU0VEX1BBUkFNKGRzdE9mZnNldCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OmdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2KEdDR0x1aW50IHByb2dyYW0sIEdDR0x1aW50IHVu
aWZvcm1CbG9ja0luZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGludD4gcGFyYW1z
KQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y29tcHJlc3NlZFRleFN1YkltYWdlM0Qo
R0NHTGVudW0sIEdDR0xpbnQsIEdDR0xpbnQsIEdDR0xpbnQsIEdDR0xpbnQsIEdDR0xzaXplaSwg
R0NHTHNpemVpLCBHQ0dMc2l6ZWksIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xpbnRwdHIpCiB7
Ci0gICAgVU5VU0VEX1BBUkFNKHByb2dyYW0pOwotICAgIFVOVVNFRF9QQVJBTSh1bmlmb3JtQmxv
Y2tJbmRleCk7Ci0gICAgVU5VU0VEX1BBUkFNKHBuYW1lKTsKLSAgICBVTlVTRURfUEFSQU0ocGFy
YW1zKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMRVMuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMRVMuY3BwCmlu
ZGV4IGExZDgwOTJiY2NhZTAwOGQ2ZTY5ZThjZDhmNmRkZmIxN2FjYWYwMGYuLjIzZDc0ZmE4MGQ3
MDc5MWJlNjAwZGY1OGU3NTYxNzMzOTZhYTU1MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEVTLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0xFUy5jcHAKQEAgLTIxNSwxNSArMjE1LDE0IEBAIHZvaWQgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OmdldFNoYWRlclByZWNpc2lvbkZvcm1hdChHQ0dMZW51bSBzaGFkZXJUeXBl
LCBHQ0dMCiAgICAgOjpnbEdldFNoYWRlclByZWNpc2lvbkZvcm1hdChzaGFkZXJUeXBlLCBwcmVj
aXNpb25UeXBlLCByYW5nZS5kYXRhLCBwcmVjaXNpb24pOwogfQogCi1ib29sIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjp0ZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwg
R0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdo
dCwgR0NHTGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgY29uc3Qg
dm9pZCogcGl4ZWxzKQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dGV4SW1hZ2UyRChH
Q0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBH
Q0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51
bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBwaXhlbHMp
CiB7Ci0gICAgaWYgKHdpZHRoICYmIGhlaWdodCAmJiAhcGl4ZWxzKSB7CisgICAgaWYgKHdpZHRo
ICYmIGhlaWdodCAmJiAhcGl4ZWxzLmRhdGEpIHsKICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3Io
SU5WQUxJRF9WQUxVRSk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAotICAgIHRleEltYWdlMkREaXJlY3QodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3Jt
YXQsIHdpZHRoLCBoZWlnaHQsIGJvcmRlciwgZm9ybWF0LCB0eXBlLCBwaXhlbHMpOwotICAgIHJl
dHVybiB0cnVlOworICAgIHRleEltYWdlMkREaXJlY3QodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxm
b3JtYXQsIHdpZHRoLCBoZWlnaHQsIGJvcmRlciwgZm9ybWF0LCB0eXBlLCBwaXhlbHMuZGF0YSk7
CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZhbGlkYXRlQXR0cmlidXRlcygp
Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>